用户管理

一、用户相关文件

  1. /etc/passwd    用户信息文件

  root:x:0:0:root:/root:/bin/bash

  第一列    用户名

  第二列    密码位

  第三列    用户ID,0  超级用户UID,1-499    系统用户(伪用户)UID,500-60000    普通用户UID

  第四列    组ID  

  第五列    用户说明

  第六列    用户家目录

  第七列    登录shell

  2. /etc/shadow         root:$6$UL.IbTJScIBEZOCU$duGBnJDyRDqcJvPbxYKZZqZxdpGyRvVbPaQBJRA7bwxJ3deJXNCQJRXWp/BSuJMBLuwBJHOuqDb47HRpn5jj7.::0:99999:7:::

  第一列    用户名

  第二列    加密密码

         我们也可以在密码前人为的加入“!”或“*”改变加密值让密码暂时失效,使这个用户无法登陆,达到暂时禁止用户登录的效果。

         注意所有伪用户的密码都是“!!”或“*”,代表没有密码是不能登录的。当然我新创建的用户如果不设定密码,它的密码项也是“!!”,代表这个用户没有密码,不能登录

  第三列    (时间戳)密码最近修改时间,以1970年1月1日作为标准时间

  第四列    两次密码的修改间隔时间(和第3字段相比)

  第五列    密码有效期(和第3字段相比)

  第六列    密码修改到期前的警告天数(和第5字段相比)

  第七列    密码过期后的宽限天数(和第5字段相比)

  第八列    密码失效时间

         这里同样要写时间戳,也就是用1970年1月1日进行时间换算。如果超过了失效时间,就算密码没有过期,用户也就失效无法使用了

  第九列    保留

  3. /etc/group  组信息文件

  root:x:0:

  第一列    组名

  第二列    组密码位

  第三列    GID

  第四列    此组中支持的其他用户.附加组是此组的用户

  初始组:每个用户初始组只能有一个,初始组只能有一个,一般都是和用户名相同的组作为初始组

  附加组:每个用户可以属于多个附加组。要把用户加入组,都是加入附加组

  4. 用户邮箱目录

    /var/spool/mail/

  5. 用户模板目录

    /etc/skel

二、用户管理命令

  1. 添加用户

    1.1 useradd命令

    useradd 选项 用户名

    -u    550    指定用户UID

    -g    组名    指定初始组,不要手工指定

    -G      组名    指定附加组,把用户加入组,使用附加组

    -c    说明    添加说明

    -d    目录    指定用户家目录,目录不需要事先建好

    -s    shell    /bin/bash

    1.2 useradd默认值

    useradd添加用户时参考的默认值文件主要有两个,分别是/etc/default/useradd和/etc/login.defs

      1.2.1 /etc/default/useradd

      

      GROUP=100      

      这个选项是建立用户的默认组,也就是说添加每个用户时,用户的初始组就是GID为100的这个用户组。目前我们采用的机制私有用户组机制。

      HOME=/home

      这个选项是用户的家目录的默认位置,所以所有的新建用户的家目录默认都在/home/下

      INACTIVE=-1

      这个选项就是密码过期后的宽限天数,也就是/etc/shadow文件的第七个字段。如果是天数,比如10代表密码过期后10天后失效;如果是0,代表密码过期后立即失效;如果是-1,则代表密码永远不会失效。这里默认值是-1,所以所有新建立的用户密码都不会失效

      EXPIRE=

      这个选项是密码失效时间,也就是/etc/shadow文件的第八个字段。也就说用户到达这个日期后就会直接失效。当然这里也是使用时间戳来表示日期的。默认值是空,所以所有新建用户没有失效时间,永久有效

      SHELL=/bin/bash

      这个选项是用户的默认shell的。/bin/bash是Linux的标志shell,所以所有新建立的用户默认都具备shell赋予的权限

      SKEL=/etc/skel

      这个选项就是定义用户的模板目录的位置,/etc/skel/目录中的文件都会复制到新建用户的家目录当中

      CREATE_MAIL_SPOOL=yes

      这个选项定义是否给新建用户建立邮箱,默认是创建,也就是说所有的新建用户系统都会新建一个邮箱,放在/var/spool/mail/下和用户名相同

      1.2.2 /etc/login.defs

      

  2. 设定密码

    passwd [选项] 用户名

    -l        暂时锁定用户。仅root用户可用

    -u          解锁用户。仅root用户可用

    --stdin      可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用

    echo "123" | passwd --stdin sss

    可以通过命令,把密码修改日期归零(shadow第3字段).这样用户一登陆就要修改密码

    chage -d 0 sss

  3. 用户信息修改

    usermod [选项] 用户名

    -u    修改用户UID

    -d    修改用户家目录。家目录必须写绝对路径

    -c    修改用户说明

    -g    修改用户初始组

    -G    修改用户附加组

    -s    修改用户的登录shell

    -e    修改用户的失效日期,格式为“YYYY-MM- DD”。也就是/etc/shadow文件的第八个字段

    -L    临时锁定用户(Lock)

    -U    解锁用户(Unlock)

  4. 删除用户

    userdel [-r] 用户名

    -r    在删除用户时同时删除用户的家目录

  5. 切换用户

    su [选项] 用户名

    -    选项只使用“-”代表连带用户的环境变量一起切换

    -c     仅执行一次命令,而不切换用户身份

    '-' 不能省略,它代表切换用户身份时,用户的环境变量也要切换成新用户的环境变量。

三、组管理命令

  1.添加用户组,groupadd

    groupadd [选项] 组名

    -g GUID    指定组ID

  2. 删除用户组,groupdel

    groupdel 组名

    要删除的组不能是其他用户的初始组,也就是说这个组中没有初始用户才可以删除。如果组中有附加用户,则删除组时不受影响

  3.把用户添加进组或从组中删除:gpasswd

    gpasswd命令是用来设定组密码并指定组管理员的,但是gpasswd命令现在主要用于把用户添加进组或从组中删除

    gpasswd [选项] 组名

    -a 用户名    把用户加入组

    -d 用户名    把用户从组中删除

    也可以使用usermod命令把用户加入某个组,不过usermod命令的操作对象是用户,命令是“usermod -G grouptest user1”,把用户名作为参数放在最后;

    而gpasswd命令的操作对象是组,命令是“gpasswd -a user1 grouptest”,把组名作为参数放在最后。

  4. 改变有效组,newgrp

    newgrp 组名

    当用户属于多个组时,在创建文件时哪个组身份生效。使用newgrp命令可以在多个组身份之间切换。

    

     

原文地址:https://www.cnblogs.com/sswind/p/11799546.html