1、批量建立用户与批量更改密码

   newusers命令可以实现批量建立多个用户:

   首先建立用户属性的信息文件例如user.txt,此文件的格式类似于/etc/passwd文件

   user1:x:2000:2000::/testadir/user1:/bin/bash:

   user2:x:2001:2001::/testadir/user2:/bin/bash:

   等等.....

   其次# newusers user.txt

   再次是各个用户的密码并没有设置,所以还需要批量进行密码设置,首先建立用户密码的信息文件例如pass.txt,此文件的格式类似于/etc/shadow文件

   user1:1234561

   user2:1234562

   等等.....

   再次# cat pass.txt|chpasswd

   再次是虽然每个用户都有自己的家目录,但是家目录里面没有相应的来自于/etc/skel中的配置文件,所以各个用户不能正常使用,故而要复制/etc/skel中的相应的配置文件进入各个用户的家目录中

    #cp -r /etc/skel/.[^.]* /testdir/user1

    依次复制各个用户家目录的相关配置文件

2、id 命令

    id [OPTION]... [USER]
       -u: UID
       -g: GID
       -un:显示用户名

       -gn:显示主组名

       -G:依次显示为主组、附加组的GID

3、切换用户或者以其他用户身份执行命令
   切换用户的方式:
   su UserName :非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
   su - UserName :登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
   注意:其中管理员(root)su 至其他用户无须密码;但是非root用户切换至root用户或者非root用户之间切换时需要密码
   换个身份执行命令:
   su [-] UserName -c 'COMMAND'、

4、passwd命令-设置密码

    passwd [OPTIONS] UserName: 修改指定用户的密码,仅是root用户的权限
          #passwd:修改自己的密码
    常用选项:
    -l: 锁定指定用户
    -u: 解锁指定用户
    -e: 强制用户下次登录修改密码,例如#passwd -e username
    -n mindays:  指定密码最短使用期限
    -x maxdays :指定密码最大使用期限
    -w warndays :提前多少天开始警告
    -i inactivedays :非活动期限;
    --stdin :从标准输入接收用户密码;
         echo " PASSWORD " | passwd --stdin USERNAME

5、chage命令-修改用户密码策略,针对某一个用户设置

   chage [OPTION]... LOGIN

       #chage username,不加任何选项交互式设置密码策略

    -d, LAST_DAY(指定密码最后修改的日期),#chage -d 0 username相当于passwd的-e选项
    -E, --expiredate EXPIRE_DATE(账户有效期,0表示立即过期,-1表示永不过期)
    -I(大写i), --inactive INACTIVE
    -m, --mindays MIN_DAYS
    -M, --maxdays MAX_DAYS
    -W, --warndays WARN_DAYS
   –l ,显示密码策略
   下一次登录强制重设密码
       #chage -d 0 tom

   chage -m 0 –M 42 –W 14 –I 7 tom
   chage -E 2016-09-10 tom 

6、# chfn username,修改用户的个人注释或者描述信息

   # chsh -s /bin/bash username,修改用户的shell类型,修改为/sbin/nologin类型后不可登陆

   # finger username,查看用户的个人注释或者描述信息

7、groupadd命令-创建组

   groupadd [OPTION]... group_name
   -g GID: 指明GID 号,[GID_MIN, GID_MAX]
   -r: 创建系统组;
       CentOS 6: ID<500
       CentOS 7: ID<1000

8、groupmod和groupdel命令-修改、删除组

   组属性修改:groupmod
   groupmod [OPTION]... group
       -n group_name:新名字
       -g GID:新的GID
   组删除:groupdel
   groupdel GROUP

注意:创建用户时同时自动创建同名基本组,基本组不能单独删除;删除基本组下的用户时同时删除所属基本组;附加组在其下没有用户时可以单独删除

9、gpasswd命令-更改组密码

   gpasswd [OPTION] GROUP
   -a user: 将user添加至指定组中
   -d user: 从指定组中移除用户user

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

10、newgrp 命令-临时切换基本组,如果用户本不属于此组,则需要组密码

    [wang@centos ~]$ newgrp bin,wang用户的基本组切换至bin

11、groupmems命令和groups命令-更改和查看组成员

    groupmems [options] [action],查看附加组成员情况
    options:
    -g,更改为指定组 ( 只有root)
    Actions:
    -a, --add username 指定用户加入组,例如#groupmems -a username -g group
    -d, --delete username 从组中删除用户,例如#groupmems -d username -g groupname
    -p, --purge 从组中清除所有成员
,例如#groupmems -p -g groupname   

    -l, --list 显示组成员列表,例如groupmems -l -g groupname

    (注意-g放在了action的后面,否认会出现错误提示,无法完成指定任务
    groups  [OPTION]...[USERNAME]... ,查看用户所属组列表

12、chown命令和chgrp命令-文件属性操作

    修改文件的属主:chown
    chown [OPTION]... [OWNER][:[GROUP]] FILE...
    用法:
    OWNER
    OWNER:GROUP
    :GROUP
    命令中的冒号可用.替换;
     -R:递归改属主和属组,例如fi是路径目录文件或是路径文件,则命令#chown -R owner dir的意思是在目录dir下的文件都会相应修改属主,层层递归
    chown [OPTION]... --reference=RFILE FILE...
    修改文件的属组:chgrp
    chgrp [OPTION]... GROUP FILE...
    chgrp [OPTION]... --reference=RFILE FILE...
    -R :递归递归改属主和属组,例如fi是路径目录文件或是路径文件,则命令#chown -R :group dir的意思是在目录dir下的文件都会相应修改属组,层层递归 

注意-chown命令只有root可以执行,chgrp命令不仅root可以执行,而且文件的所有者user可以将文件的属组改为所有者user的其它所属组

13、文件权限

文件:
r: 可使用文件查看类工具获取其内容,一般都给此权限

w: 可修改其内容
x: 可以把此文件提请内核启动为一个进程,如果没有执行权限,包括root在内的所有用户都将不能提请内核启动此文件为一个进程

目录:
r: 可以使用ls 查看此目录中文件列表,一般都给此权限
w: 可在此目录中创建文件,也可删除此目录中的文件,但是必须依赖于x权限
x: 可以使用ls -l 查看此目录中文件列表,可以cd 进入此目录,假如没有x权限,则将不能ls -l 查看此目录中文件详细列表,也不可以cd 进入此目录

注意-对于目录而言,一般都会给r和x权限;目录具有wx权限,不管目录里的文件没有wx权限,都是可以删除目录里的文件)

X:只给目录x权限,不给文件x权限(前提是文件本身没有x权限,如果文件本身有x权限,则也会给文件加上x权限的),一般与-R递归选项一起使用

14、chmod命令-权限修改命令
    chmod [OPTION]... MODE[MODE]... FILE...

    -R: 递归修改权限,例如dir是路径目录文件或是路径文件,则命令#chmod -R g+w dir的意思是在目录dir下的文件都会加上属组w权限,层层递归

    MODE:
    修改一类用户的所有权限:u=,g=,o=,ug=,a=

    例如u=,则是属主无权限;u=r,则是属主只有r权限;等等
    修改一类用户某位或某些位权限:u+,u-,g+,g-,o+,o-,a+,a-,+,-

    注意多个mode之间是用逗号分开的

     例#chmod 755 FILE

       #chmod -R 644 DIRFILE

    chmod [OPTION]... --reference=RFILE FILE...
    参考RFILE文件的权限,将FILE的修改为同RFILE;

    例如#chmod --reference=fi ffi,意思就是参考fi文件的权限,将ffi的修改为同fi文件

15、新建文件和目录的默认权限

   umask是从最大权限中屏弊掉相应的权限位,从而得到默认权限
   新建FILE的默认权限: 666-umask(如果所得结果某位存在执行(奇数)权限,则将其权限+1;如果是偶数权限则保持不变
   新建DIR的默认权限: 777-umask
   系统默认非特权用户umask是002,root的umask是022
   #umask,数值方式显示,显示当前用户(特权和非特权)的umask
   #umask #,设定当前用户(特权和非特权)的umask,其中#号就是要设置的umask,只是暂时有效

   例如#umask 066 

       #umask u=rwx,g=rx,o=

   umask –S,模式方式显示,显示当前用户(特权和非特权)的umask,例如u=rwx,g=rwx,o=rx  

   umask –p,输出umask #,且输出可被调用,其中#号是当前默认的umask 

   例如#umask -p >> .bashrc

全局设置: /etc/bashrc 和/etc/profile

用户设置:~/.bashrc,改完之后重新登录才生效或者执行#..bashrc也可生效

16、SUID、SGID、Sticky-文件系统上的特殊权限

    进程有属主和属组;文件有属主和属组
(1)任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
(2)启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组
(3)进程访问文件时的权限,取决于进程的发起者
    (a)进程的发起者同文件的属主:则进程访问文件的权限同属主权限
    (b)进程的发起者属于文件属组;则进程访问文件的权限同属组权限
    (c)应用文件“其它”权限

1)、Sticky位-只对文件夹或者目录下文件的删除权限设定限制

    具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
    在目录设置Sticky位,那么就只有文件的所有者或root可以删除该文件
    sticky位设置在文件上无意义
    权限设定:
        chmod o+t DIR...
        chmod o-t DIR...

2)、可执行文件上SUID权限

    任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
    启动为进程之后,其进程的属主为原程序文件的属主

    SUID 只对二进制可执行程序有效
    SUID 设置在目录上无意义

    权限设定:
        chmod u+s FILE...
        chmod u-s FILE...

注意-设定SUID权限后,任何用户访问此文件都继承了该文件的属主权限

3)、可执行文件上SGID 权限

    任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
    启动为进程之后,其进程的属主为原程序文件的属组
    权限设定:
        chmod g+s FILE...
        chmod g-s FILE...  

注意-设定SUID权限后,任何用户访问此文件都继承了该文件的属组权限,用户并非属于该文件属组

4)、目录上的SGID权限

    默认情况下,用户创建文件时,其属组为此用户所属的主组
    一旦某目录被设定SGID ,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录属组

    通常用于创建一个协作目录
    权限设定:
       chmod g+s DIR...
       chmod g-s DIR...

17、设定文件特定属性

    #chattr +i FILE,不能删除,改名,更改
    #chattr +a FILE,不能删除,改名,修改内容,只能增加内容
    #lsattr FILE, 显示特定属性

18、ACL-访问控制列表,对文件或者目录进行特别权限设定

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
     getfacl file|directory,查看显示特定文件或者目录的特殊权限设置信息
     setfacl -m u:wang:rwx file|directory,设定特定用户对特定文件或者目录的特殊权限,命令中的权限位置也可用数字权限表示,其中000可以用-表示
     setfacl -Rm g:sales:rwX directory,递归加X,此处的递归只作用于目录下已经存在的文件(包括目录文件),对于目录下新建的文件不起作用
     setfacl -M file.acl file|directory,把文件file.txt中特定用户或组的特殊权限的运用于特定的文件或者目录,可以一次设置多种权限要求,此处file.txt的权限内容同于-m中
     setfacl -m g:salesgroup:rw file|directory,设定特定组对特定文件或者目录的特殊权限

     setfacl -m d:u:wang:rx directory,此命令执行后,在directory下新建的文件和目录将也会默认具有相应的特殊权限,而且层层继,只对目录下新建的文件起作用
     setfacl -x u:wang file|directory,删除特定用户对特定文件或者目录的所有特殊权限,命令中的权限位置不用写上权限,为空

     setfacl -X file.acl file|directory,把特定的文件或者目录上的文件file.txt中特定用户或组的特殊权限删除,可以一次删除多种权限要求,此处的file.txt的权限内容同于-x中

    setfacl -b file|directory,清空对文件或者目录设定的所有特殊ACL权限 

    setfacl -k dir,删除默认ACL权限

     getfacl file1 | setfacl --set-file=-file2,复制file1的的acl权限给file2

3)、 mask是权限高线或上限

      mask只影响除所有者和other的之外的人和组的最大权限,包括所属组(除去所有者)和通过setfacl设置的用户或组
      Mask需要与用户或组的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission),用户或组的设置必须存在于mask权限设定范围内才会生效。

      #setfacl -m mask::rx file|dir,修改文件或目录的mask
      此外,主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息