0%

shell之立即linux文件权限

shell之理解linux文件权限

/etc/passwd文件

这个文件是专门用来将用户登录名保存起来的文件,同时记录了相匹配的UID

  • /etc/shadow可以更好的控制用户密码

用户操作

添加新用户

  • useradd

  • -D 用来查看系统中所用的默认值

    /usr/sbin/useradd -D 
    GROUP=100 ## 新用户会被添加到GID为100的公共组
    HOME=/home ## 新用户的home文件位于/home/user
    INACTIVE=-1 ## 新用户的密码在过期后不会被禁用
    EXPIRE= SHELL=/bin/bash ## 默认使用/bin/bash作为shell
    SKEL=/etc/skel ## 系统会将/etc/skel目录下的内容复制到用户的home目录下
    CREATE_MAIL_SPOOL=yes 
  • useradd的参数

    参数 描述
    -c comment 给新用户添加备注
    -d home_dir 为主目录指定一个名
    -e expire_date 用YYYY-MM-DD格式指定一个账户过期的日期
    -f inactive_days 指定这个账户密码过期后多少天这个账户被禁用;0表示密码一过期就立即禁用,1表示 禁用这个功能
    -g initial_group 指定用户登录组的GID或组名
    -G group 指定用户除登录组之外所属的一个或多个附加组
    -k 必须和-m一起使用,将/etc/skel目录的内容复制到用户的HOME目录
    -m 创建用户的HOME目录
    -M 不创建用户的HOME目录
    -n 创建一个与用户登录名同名的新组
    -r 创建系统账户
    -p passwd 为用户指定默认密码
    -s shell 指定默认的登录shell
    -u uid 为账户指定唯一的uid

删除用户

默认情况下,userdel只会删除/etc/passwd下的用户信息,如果加上-r参数,则可以删除home目录和邮件目录

修改用户

  • usermod:修改用户账号的字段,还可以指定主要组及附加组的所属关系,大部分参数与useradd的相同
  • passwd和chpasswd:passwd test

使用linux组

创建新组:groupadd xx,在创建新组的时候,默认没有用户会分到这个组,groupadd命令没有提供将用户添加到组中的选项,usermod可以实现

  • groupadd test
    usermod -G test user1
    usermod -G test user2

修改组:groupmod,-g修改GID,-n修改组名

理解权限

  • -代表文件

  • d代表目录

  • l代表链接

  • c代表字符型设备

  • b代表块设备

  • n代表网络设备 之后有3组三字符的编码。每一组定义了3种访问权限:

  • r代表对象是可读的  w代表对象是可写的

  • x代表对象是可执行的 若没有某种权限,在该权限位会出现单破折线。

    这3组权限分别对应对象的3个安全级别:

    • 对象的属主
    • 对象的属组
    • 系统其他用户

改变权限

  • chmod options mode file
  • chmod 760 newfile
  • chmod o+r newfile

改变所属关系

有时需要改变文件的属主,有两种方式来实现

  • chown改变文件的属主
    • chown options owner [.group] file
    • chown dan newfile :文件归dan
    • chown dan.shared newfile :文件属主为dan,属组为shared
    • -R 可以递归改变
  • chgrp改变文件的属组
    • chgrp 可以更变文件和目录的默认属组
    • chgrp shared newfile

共享文件

linux为每个文件和目录存储了三个额外的信息位

  • 设置用户id(SUID)

  • 设置组id(SGID),:对文件来说,程序会以文件属组的权限运行;对目录来说,目录中 创建的新文件会以目录的默认属组作为默认属组。 在启用SGID后,你可以强制在一个共享目录下创建的新文件都属于该目录的属组。

     mkdir testdir  ## 创建一个文件夹
     $ ls -l drwxrwxr-x    2 rich     rich         4096 Sep 20 23:12 testdir/ 
     $ chgrp shared testdir 将这个文件的属组改为shared
     $ chmod g+s testdir 文件夹添加SGID
     $ ls -l drwxrwsr-x    2 rich     shared       4096 Sep 20 23:12 testdir/ 
     $ umask 002 设置默认对属组成员可写
     $ cd testdir 
     $ touch testfile 
     $ ls -l 然后shared组的所有用户都可以访问并修改了
~~