Linux的用户组和权限(二)

  一、1.passwd 设置密码(类似usermod的用法)

      passwd[OPTIONS] UserName: 

        修改指定用户的密码,仅root用户有权限

        passwd: 修改自己的密码;

      常用选项:

         -l:锁定指定用户

         -u:解锁指定用户

         -e:强制用户下次登录修改密码

         -n mindays: 指定最短使用期限

         -x maxdays:最大使用期限

         -w warndays:提前多少天开始警告

         -iinactivedays:非活动期限;

         –stdin:从标准输入接收用户密码;

      echo "PASSWORD" |passwd –stdin username

   2.修改用户密码策略

     chage[OPTION]… LOGIN

         -d LAST_DAY

         -E, –expiredateEXPIRE_DATE

         -I, –inactive INACTIVE

         -m, –mindaysMIN_DAYS

         -M, –maxdaysMAX_DAYS

         -W, –warndaysWARN_DAYS

         –l,显示密码策略

      下一次登录强制重设密

        chage-d 0 tom

          chage-m 0 –M 42 –W 14 –I 7 tom

          chage-E 2016-09-10 tom

   3.用户相关的其他命令

         chfn指定个人信息

         chsh指定shell

         finger

  4.创建组

       groupadd[OPTION]… group_name

        -g GID: 指明GID[GID_MIN, GID_MAX]

        -r: 创建系统组;

          CentOS 6: ID<500

          CentOS 7: ID<1000

  5.groupmod 修改和删除组组属性修改)

     groupmod[OPTION]… group

       -n group_name: 新名字

       -g GID: 新的GID

      删除组:groupdel

        groupdel GROUP

  6.更改组密码:gpasswd

      gpasswd[OPTION] username GROUP

        -a user: user添加至指定组中;

        -d user: 从指定组中移除用户user

        -A user1,user2,…: 设置有管理权限的用户列表

      newgrp命令临时切换基本组;

      如果用户本不属于此组,则需要组密码

  7.更改和查看组成员 (操作的人是root和组管理员)

     groupmems[options] [action] 注意书写格式

        options

            -g, –group groupname更改为指定组(只有root)

         action

         -a, –add username 指定用户加入组

         -d, –delete username 从组中删除用户

         -p, –purge 从组中清除所有成员

         -l, –list 显示组成员列表

      groups [OPTION].[USERNAME]… 查看用户所属组列表

 

 练习:

    创建sysadmins组

    将用户user1、user2、user3加入sysadmins组中

    将user3设置为sysadmins组的管理员

    用user3登录,将用户user2冲组中移除

    设置sysadmins组的密码为 centos

    设置user1在创建新文件时,文件的所属组为sysadmins

    删除user1…3

    删除组sysadmins

wKiom1eiyO6BhpPSAAA1Evwzntc523.png

wKioL1eiyQOhKRvAAAAgsBNzc6c474.png

wKiom1eiyQSgRd0hAAAPV0X_Mjc099.png

 二、文件的权限:

   1. 文件属性: 

wKioL1ekdviRUG31AACWMFlTUQ4994.png

      文件属性操作

       chown:设置文件的所有者

         chgrp:设置文件的属组信息


  2.修改文件的属主和属组

       chown 修改文件的属主

       chown[OPTION]… [OWNER][:[GROUP]] FILE…

    用法:

      OWNER 直接跟所有者

      OWNER:GROUP 直接跟所有者和所属组命令中的冒号可用.替换);

wKiom1ekeLzwQrEqAAAhwSUpIw8951.png

        -R: 递归

        chown[OPTION]… –reference=RFILE FILE…

      修改文件的属.:chgrp

        chgrp[OPTION]… GROUP FILE…

        chgrp[OPTION]… –reference=RFILE FILE…

        -R递归

wKioL1ekegrTP7IhAAAkwTiK3cc206.png

3.文件的权限

     文件的权限主要针对三类对象进行定义:

        三个字符一组

          owner: 属主, u  前三位

            group: 属组, g  中间三位

            other: 其他, o  最后三位

      每个文件针对每类访问者都定义了三种权限

          r: Readable 读权限

            w: Writable 写权限

         x: eXcutable 执行权限

      文件:

          r: 可使用文件查看类工具获取其内容(针对文本文件)

          w: 可修改文件内容但不能删除文件本身

          x: 可以把此文件提请内核启动为一个进程(针对二进制程序或者脚本)

wKiom1ekerfRjYd3AABEs87ctyM899.png

  目录:

        r: 可以使用ls查看此目录中文件列表,但不能访问文件(cd进去),也不能查看文件的元数据。

        w: 可在此目录中创建和删除此目录中的文件,配合x权限。

     x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录,可以访问文件。

        X:只给目录x权限,不给文件x权限 配合R选项只能用模式法

wKiom1eke1zihaPIAAAT_5gUR_s887.png

  4.文件的权限操作

     文件权限(rwx|X)

wKiom1eke5WCyJxwAAB9gmX9tc4710.png

     文件权限操作命令 Chmod          

   5.数字法(八进制数字)

       —000 0        –x 001 1

       -w-010 2        -wx 011 3

       r–100 4        r-x 101 5

       rw-110 6        rwx 111 7

      例如:

       rw-r—– 640

         rwxr-xr-x: 755

wKioL1ekfJKxAO6UAAAJ-XHS8Wc452.png

   6.chmod 修改文件的权限

     chmod[OPTION]… OCTAL-MODE FILE…

        -R: 递归修改权限

wKioL1ekfN7DiPV5AAArUpmNfz4377.png

    chmod[OPTION]… MODE[,MODE]… FILE…

     MODE

     修改一类用户的所有权限

       u= g= o= ug= a= u=,g=

wKiom1ekfUmT4jp3AAAYAGhYWBY284.png

     修改一类用户某位或某些位权限

       u+ u-g+ g-o+ o-a+ a-+ –

wKioL1ekfWDgkxQHAAAb0a6Cslc494.png

    chmod[OPTION]… –reference=RFILE FILE…

   参考RFILE文件的权限,将FILE的修改为同RFILE

wKioL1ekfbXjqM8wAAAXnTGX_Bs019.png

   7.权限设置的一些方法:

       chgrp sales testfile

        chown root:admins testfile

        chmod u+wx,g-r,o=rx file

        chmod -R g+rwX /testdir

        chmod 600 file

        chown mage testfile

   8. umask 新建目录和文件的默认权限

     (1)umask值可以用来保留在创建文件权限。

        在默认情况下,目录的权限为755,文件的权限为644。

wKiom1ekfmHiCb-bAAAc8Magej4061.png

     (2)新建文件(file)权限(为了安全没有可执行权限)

          666-umask (如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数保留)

       新建目录(dir)权限: 

          777-umask

      (3)非特权用户umask是002

          root的umask是022

wKiom1ekgTmTjhcYAAAKELG3408016.png

     (4)#umask: 查看当前的值

         umask#直接指定 如:umask u=rex,g=r,o=

                         umask002

     (5)umask–S 模式方式显示新建文件夹的默认权限

wKioL1ekgM7CFCA0AAAIxPAS0EQ572.png

     (6)umask–p 输出可被调用

wKiom1ekgPCwQZ9RAAAJl6mkuQQ133.png

     (7)全局设置/etc/bashrc    

        用户设置:~/.bashrc 或者 ~/.bash_profile

wKiom1ekgZCzm22lAAAH6ZfnJFo272.png

   9.Linux文件系统上的特殊权限

       SUID, SGID, Sticky

          三种常用权限 :r, w, x 

            三类对象  :user, group, other

    安全上下文:

    前提进程有属主和属组;文件有属主和属组

     (1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

     (2) 启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组

     (3) 进程访问文件时的权限,取决于进程的发起者

         (a) 进程的发起者,同文件的属主:则应用文件属主权限

         (b) 进程的发起者,属于文件属组;则应用文件属组权限

         (c) 应用文件“其它”权限

   10.可执行文件上的SUID权限

   任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

   (1)启动为进程之后,其进程的属主为原程序文件的属主

wKioL1ekgv_xeVXAAABCR0SMbu0674.png

wKiom1ekgv-hPlrKAAAnc0XR_ks254.png

   (2)SUID只对二进制可执行程序才有意义,才有效

   (3)SUID设置在目录上无意义

   (4)权限设定 4代表suid

        chmod u+s FILE…

        chmod u-s FILE…

wKiom1ekg_miEN1eAAASDckdAmE094.png

   11.可执行文件上的SGID权限

   (1)任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

   (2)启动进程之后,其进程的属主为原程序的属主

   (3)权限设定: 2代表sgid

      chmod g+s FILE…

        chmod g-s FILE…

   12.目录上的SGID权限

   (1)默认情况下,用户创建文件时,其属组为此用户所属的主组

   (2)一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组

   (3)通常用于创建一个协作目录

   4)权限设定:

        chmod g+s DIR…

        chmod g-s DIR…

   13.sticky位

    (1)具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权

    (2)在目录设置Sticky 位,只有文件的所有者或root可以删除该文件

wKiom1ekhXfy0gX5AAAldImwwlw645.png    (3)sticky 设置在文件上无意义

    (4)权限设定:1代表sticky

       chmodo+tDIR…

        chmodo-t DIR…

wKioL1ekhdix6KcOAAANuKkfGE0061.png

wKioL1ekhhPjSQLNAAAPxxf5OIc208.png

   14.权限位映射

wKioL1ekhnjjI3XZAAATDmNnTyY876.png

     SUID: user,占据属主的执行权限位

       s: 属主拥有x权限

       S:属主没有x权限

     SGID: group,占据属组的执行权限位

       s: group拥有x权限

       S:group没有x权限

     Sticky: other,占据other的执行权限位

       t: other拥有x权限

       T:other没有x权限

   15.chattr 设定文件特定属性  

      chattr +i 不能删除,改名,更改

wKioL1ekhuDBdD_FAAAe4fM8aD8060.png

     chattr +A 不想会更改访问时间

wKioL1ekhr-jj4cfAABEyIktsaU808.png

wKioL1ekhznDAjEUAAAgxLeHZd0857.png

      lsattr 显示特定属性

wKioL1ekh2-CrjXkAAANue8UVMM815.png

   16.访问控制列表

   (1)ACL:Access Control List,实现灵活的权限管理

      除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

      CentOS7.0默认创建的xfs和ext4文件系统有ACL功能。

      CentOS7.X之前版本,默认手工创建的ext4文件系统无ACL功能。需手动增加:

         tune2fs –o acl/dev/sdb1

         mount –o acl/dev/sdb1 /mnt

     ACL生效顺序:所有者,自定义用户,自定义组,其他人

   (2)为多用户或者组的文件和目录赋予访问权限rwx

          mount -o acl /directory

          etfacl file |directory

          setfacl -m u:wang:rwx file|directory

Linux的用户组和权限(二)

Linux的用户组和权限(二)

     setfacl -Rm g:sales:rwX directory (对sales目录设置rwx权限,但对目录下的子文件设置rw权限,无x权限,注意X的作用)

     setfacl -M file.acl file|directory(系统调用文件里的权限设置)

          setfacl -m g:salesgroup:rw file| directory

Linux的用户组和权限(二)

     setfacl -m d:u:wang:rx directory (设置在目录上,但目录本身不会有acl权限,只对新建的子文件产生影响)

Linux的用户组和权限(二)

     setfacl -x u:wang file |directory

Linux的用户组和权限(二)

     setfacl -X file.acl director(删除系统调用里的权限设置,和上面的 -M 用法相反。)


  (3ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限

     getfacl可看到特殊权限:flags

     默认ACL权限给了x,文件也不会继承x权限。

     base ACL 不能删除

    setfacl-k dir 删除默认ACL权限

Linux的用户组和权限(二)

    setfacl-b file1清除所有ACL权限

Linux的用户组和权限(二)

    getfacl file1 | setfacl–set-file=-file2 复制file1acl权限给file2

Linux的用户组和权限(二)

  (4mask只影响除所有者other的之外的人和组的最大权限

     Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission) 

     用户或组的设置必须存在于mask权限设定范围内才会生效。             setfacl-m mask::rxfile

Linux的用户组和权限(二)

     –set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以

      .如:setfacl –set u::rw,u:wang:rw,g::r,o::-file1


  (5)备份和恢复ACL

     主要的文件操作命令cpmv都支持ACL,只是cp命令需要加上 -a,-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息。

Linux的用户组和权限(二)

     #getfacl -R /tmp/dir1 > acl.txt

     #setfacl -R -b /tmp/dir1

     #setfacl -R –set-file=acl.txt /tmp/dir1

     #getfacl -R /tmp/dir1

 

 练习:

   在/data/testdir里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。

Linux的用户组和权限(二)

Linux的用户组和权限(二)

Linux的用户组和权限(二)

Linux的用户组和权限(二)

Linux的用户组和权限(二)

         

 

 

 

 


原创文章,作者:zhumengxiaotao,如若转载,请注明出处:http://www.178linux.com/29806