|NO.Z.00033|——————————|LinuxBasicEnd|——|Linux&用户管理.V03|

于今腐草无萤火,终古垂杨有暮鸦。这篇文章主要讲述|NO.Z.00033|——————————|LinuxBasicEnd|——|Linux&用户管理.V03|相关的知识,希望能为你提供帮助。
一、用户管理命令:添加用户

### --- 手工删除用户 ~~~手工删除用户试验:手工删除,如果可以正常建立用户,证明用户删除干净。/etc/passwd /etc/shadow /etc/group /etc/gshadow /home/user1 /var/spool/mail/user1// 邮箱


### --- useradd 命令 ### --- useradd 选项 用户名 ### --- 选项:~~~-u550 指定 UID ~~~-g组名指定初始组 不要手工指定 ~~~-G组名指定附加组,把用户加入组,使用附加组 ~~~-c说明添加说明 ~~~-d目录手工指定家目录,目录不需要事先建立 ~~~-sshell/bin/bash.

### --- 例如: [root@localhost ~]# groupadd lamp1 ~~~先手工添加 lamp1 用户组,因为我一会要把 lamp1 用户的初始组指定过来, ~~~如果不事先建立,会报错用户组不存在 [root@localhost ~]# useradd -u 550 -g lamp1 -G root -d /home/lamp1 \\ -c "test user" -s /bin/bash lamp1 ~~~建立用户 lamp1 的同时指定了 UID(550),初始组(lamp1),附加组(root), ~~~家目录(/home/lamp1),用户说明(test user)和用户登录 shell(/bin/bash)[root@localhost ~]# grep "lamp1" /etc/passwd /etc/shadow /etc/group ~~~同时查看三个文件 /etc/passwd:lamp1:x:550:502:test user:/home/lamp1:/bin/bash ~~~用户的 UID、初始组、用户说明、家目录和登录 shell 都和命令手工指定的一致 /etc/shadow:lamp1:!!:15710:0:99999:7::: ~~~lamp1 用户还没有设定密码 /etc/group:root:x:0:lamp1 ~~~lamp1 用户加入了 root 组,root 组是 lamp1 用户的附加组 /etc/group:lamp1:x:502: ~~~GID502 的组是 lamp1 组

~~~家目录也建立了啊。不需要手工建立家目录 [root@localhost ~]# ll -d /home/lamp1/ drwx------ 3 lamp1 lamp1 4096 1 月 6 01:13 /home/lamp1/ ### --- useradd 默认值 ### --- useradd 添 加 用 户 时 参 考 的 默 认 值 文 件 主 要 有 两 个 , ~~~分 别 是 /etc/default/useradd 和/etc/login.defs/etc/default/useradd [root@localhost ~]# vi /etc/default/useradd ~~~useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes

### --- 挨个解释下: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/下和用户名相同。

### --- /etc/login.defs[root@localhost ~]# vi /etc/login.defs ~~~这个文件有些注释,把注释删除掉,文件内容就变成下面这个样子了 MAIL_DIR/var/spool/mail PASS_MAX_DAYS99999 PASS_MIN_DAYS0 PASS_MIN_LEN5 PASS_WARN_AGE7 UID_MIN500 UID_MAX60000 GID_MIN500 GID_MAX60000 CREATE_HOMEyes UMASK077 USERGROUPS_ENAByes ENCRYPT_METHOD SHA512

### --- 我们一行一行解释下文件内容:MAIL_DIR/var/spool/mail ~~~这行指定了新建用户的默认邮箱位置。 ~~~比如 user1 用户的邮箱是就是/var/spool/mail/user1。 ~~~PASS_MAX_DAYS99999 ~~~这行指定的是密码的有效期,也就是/etc/shadow 文件的第五字段。 ~~~代表多少天之后必须修改密码,默认值是 99999。 PASS_MIN_DAYS0 ~~~这行指定的是两次密码的修改间隔时间,也就是/etc/shadow 文件的第四字段。 ~~~代表第一次修改密码之后,几天后才能再次修改密码。默认值是 0。 PASS_MIN_LEN5 ~~~这行代表密码的最小长度,默认不小于 5 位。 ~~~但是我们现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。 PASS_WARN_AGE7 ~~~这行代表密码修改到期前的警告天数,也就是/etc/shadow 文件的第六字段。 ~~~代表密码到底有效期前多少天开始进行警告提醒,默认值是 7 天。 UID_MIN500 UID_MAX60000 ~~~这两行代表创建用户时,最小 UID 和最大的 UID 的范围。我们 2.6.x 内核开始, ~~~Linux 用户的 UID32UID 是 550,那么下一个创建的用户的 UID 就会从 551 开始, ~~~哪怕 500-549 之间的 UID 没有使用(小于 500 的 UID 是给伪用户预留的)。 GID_MIN 500

### --- 最大可以支持 2 这么多,但是真正使用时最大范围是 60000。~~~还要注意如果我手工指定了一个用户的 GID_MAX60000 ~~~这两行指定了 GID 的最小值和最大值之间的范围。 CREATE_HOME yes ~~~这行指定建立用户时是否自动建立用户的家目录,默认是建立 UMASK077 ~~~这行指定的是建立的用户家目录的默认权限,因为 umask 值是 077, ~~~所以新建的用户家目录的权限是 700, ~~~umask 的具体作用和修改方法我们可以参考下一章权限设定章节。 USERGROUPS_ENAB yes ~~~这行指定的是使用命令 userdel 删除用户时,是否删除用户的初始组,默认是删除。 ENCRYPT_METHODSHA512 ~~~这行指定 Linux 用户的密码使用 SHA512 散列模式加密,这是新的密码加密模式, ~~~原先的 Linux只能用 DES 或 MD5 方式加密

所有值使用默认值添加用户:实验专题
### --- 所有值使用默认值添加用户< —— ### --- 用户添加用户[root@server11 ~]# useradd yanqi [root@server11 ~]# cat /etc/passwd yanqi:x:1001:1001::/home/yanqi:/bin/bash

### --- 为用户设置密码[root@server11 ~]# passwd yanqi New password: Retype new password: [root@server11 ~]# cat /etc/shadow yanqi:$6$ScNDYxzB$OxNktWeWuW4Y0BkbHpqbPTZYmhm9oW7/UN96ZAw0HiK7jp8/3obeQcpgvF6rF31Me0D8X3Wy2V1wCLueFhm5l0:18696:0:99999:7:::

~~~——> 添加特定值的用户< ——生产环境不会使用[root@server11 ~]# useradd -u 550 -c "test yanqitest" -d /yanqitest -s /bin/bash yanqitest [root@server11 ~]# cat /etc/passwd yanqitest:x:550:100cat2:test yanqitest:/yanqitest:/bin/bash

~~~——> 添加组名< ——生产环境中会使用到的 ### --- 添加2个用户并把它指定到yanqi组里 ~~~说明:说明yanqitest1是没有建立的组;若是需要把用户加入到特定组里,建议使用-G[root@server11 ~]# useradd -g yanqi yanqitest1 [root@server11 ~]# useradd -G yanqi yanqitest2 [root@server11 ~]# cat /etc/passwd yanqitest1:x:1002:1001::/home/yanqitest1:/bin/bash yanqitest2:x:1003:1003::/home/yanqitest2:/bin/bash [root@server11 ~]# cat /etc/group yanqitest2:x:1003:

### --- ——> useradd的默认值< ——[root@server11 ~]# cat /etc/default/useradd GROUP=100// 建立用户的默认组 HOME=/home// 用户家目录位置 INACTIVE=-1// 密码过去后的宽限天数 EXPIRE=// 密码的失效时间 SHELL=/bin/bash// 使用bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes// 给每一个用户创建邮箱 [root@server11 ~]# cat /etc/login.defs PASS_MAX_DAYS99999// 最大密码间隔时间 PASS_MIN_DAYS0// 密码最小间隔时间 PASS_MIN_LEN5// 最小密码长度 PASS_WARN_AGE7// 密码修改天数 UID_MIN1000// UID的设定范围 UID_MAX60000 SYS_UID_MIN201// GID的设定范围 SYS_UID_MAX999

二、设定密码
### --- 设定密码 ### --- 选项: ~~~-l:暂时锁定用户。仅 root 用户可用 ~~~-u:解锁用户。仅 root 用户可用 ~~~--stdin: 可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用[root@localhost ~]#passwd [选项] 用户名

~~~passwd 直接回车代表修改当前用户的密码 ~~~也可以使用字符串作为密码: [root@localhost ~]#passwd~~~更改用户 user1 的密码 。 ~~~可以通过命令,把密码修改日期归零(shadow 第 3 字段).这样用户一登陆就要修改密码,例如: [root@localhost ~]# echo "123" | passwd --stdin user1 [root@localhost ~]# chage -d 0 user1

超级用户可以修改任何用户的密码:实验专题
### --- 超级用户可以修改任何用户的密码 ### --- 普通用户只能修改自己的密码[yanqi@server11 ~]$ passwd// 普通用户修改自己的密码,直接使用passwd即可 (current) UNIX password: New password:

### --- 锁定用户[root@server11 ~]# passwd -l yanqi Locking password for user yanqi. passwd: Success [root@server11 ~]# cat /etc/shadow yanqi:!!$6$ScNDYxzB$OxNktWeWuW4Y0BkbHpqbPTZYmhm9oW7/UN96ZAw0HiK7jp8/3obeQcpgvF6rF31Me0D8X3Wy2V1wCLueFhm5l0:18696:0:99999:7:::

### --- 在密码位前加入2个感叹号;锁定密码 ### --- 解锁用户[root@server11 ~]# passwd -u yanqi Unlocking password for user yanqi. passwd: Success [root@server11 ~]# cat /etc/shadow yanqi:$6$ScNDYxzB$OxNktWeWuW4Y0BkbHpqbPTZYmhm9oW7/UN96ZAw0HiK7jp8/3obeQcpgvF6rF31Me0D8X3Wy2V1wCLueFhm5l0:18696:0:99999:7:::

### --- 使用字符串设置密码[root@server11 ~]# echo "123" | passwd --stdin yanqi Changing password for user yanqi. passwd: all authentication tokens updated successfully.

### --- 修改用户的密码修改时间改为0 [root@server11 ~]# chage -d 0 yanqi yanqi:$6$.brNdrPm$KYibkCHjlTOnvCO89WY.Sy39tIpVlod6tf.PGAti5NOVgFFDoiXBatzSK6kdhujS6O7GvNWW3kLuOE3aEDIQ00:0:0:99999:7:::

### --- 重新登录yanqi用户,会让你强制更改密码WARNING! The remote SSH server rejected X11 forwarding request. You are required to change your password immediately (root enforced) Last login: Thu Feb4 10:06:47 2021 from 20.20.20.240 WARNING: Your password has expired. You must change your password now and login again! Changing password for user yanqi. Changing password for yanqi. (current) UNIX password:// 强制修改新的密码 [root@server11 ~]# cat /etc/shadow yanqi:$6$NmOAT5Cs$jZ84jnrfWzMy0mBjON6N8a.NLnaapYPRag2BXBnENNqRZjWujhJO8T4LOigM9GxcJh0Rp.bYN7On20BkU2TOv/:18696:0:99999:7:::

三、用户信息修改
### --- 用户信息修改 ### --- usermod 命令是修改已经添加的用户的信息的,命令如下: ### --- 选项: ~~~-u UID:修改用户的 UID ~~~-d 家目录:修改用户的家目录。家目录必须写绝对路径 ~~~-c 用户说明:修改用户的说明信息,就是/etc/passwd 文件的第五个字段 ~~~-g 组名:修改用户的初始组,就是/etc/passwd 文件的第四个字段 ~~~-G 组名:修改用户的附加组,其实就是把用户加入其他用户组 ~~~-s shell:修改用户的登录 Shell。默认是/bin/bash ~~~-e 日期:修改用户的失效日期,格式为“YYYY-MM-DD”。也就是/etc/shadow文件的第八个字段 ~~~-L:临时锁定用户(Lock) ~~~-U:解锁用户(Unlock) ~~~有学员突发奇想,问超哥,那用户可以修改用户名吗?当然可以:[root@localhost ~]# usermod [选项] 用户名

### --- 改名 ### --- 但是真不建议改名,这样及其容易把管理员自己搞晕菜,建议删除旧用户,再建立新用户![root@localhost ~]# usermod -l 新名 旧名

用户信息修改:实验专题
### --- 用户信息修改:实验专题 ### --- 修改已存在的用户到特定组里 ### --- 将yanqi1和yanqi2添加到yanqi组里[root@server11 ~]# usermod -G yanqi yanqi1// 将yanqi1用户添加到yanqi组里 [root@server11 ~]# usermod -G yanqi yanqi2// 将yanqi2用户添加到yanqi组里 [root@server11 ~]# cat /etc/group yanqi:x:1001:yanqi1,yanqi2

四、删除用户
### --- 删除用户 ### --- 选项: ~~~-r: 在删除用户的同时删除用户的家目录[root@localhost ~]# userdel [-r] 用户名

删除用户:实验专题
### --- 删除用户:实验专题 [root@server11 ~]# ll /home/ drwx------3 testtest78 Mar 10 20:46 test drwx------3 yanqiyanqi78 Mar 10 20:37 yanqi drwx------3 yanqi1 yanqi178 Mar 10 20:39 yanqi1 drwx------3 yanqi2 yanqi278 Mar 10 20:39 yanqi2 ### --- 删除用户 [root@server11 ~]# userdel -r test// 删除用户-r同步删除用户家目录

五、切换用户身份
### --- 切换用户身份 ### --- su 命令可以切换成不同的用户身份,命令格式如下: ### --- 选项: ~~~-:选项只使用“-”代表连带用户的环境变量一起切换 ~~~-c 命令: 仅执行一次命令,而不切换用户身份 ~~~“-”不能省略,它代表切换用户身份时,用户的环境变量也要切换成新用户的环境变量。[root@localhost ~]# su [选项] 用户名

切换用户身份:实验专题
### --- 切换用户身份:实验专题[root@server11 ~]# su yanqi [yanqi@server11 ~]$ su root// 直接写入root环境变量不会发生变化 Password: 空格 [root@server11 ~]# env USER=yanqi [yanqi@server11 ~]$ su - root// 和环境变量一起切换 [root@server11 ~]# env USER=root








Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warmd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor 【|NO.Z.00033|——————————|LinuxBasicEnd|——|Linux&用户管理.V03|】

    推荐阅读