于今腐草无萤火,终古垂杨有暮鸦。这篇文章主要讲述|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|】
推荐阅读
- |NO.Z.00030|——————————|LinuxBasicEnd|
- |NO.Z.00005|——————————|^^构建^^|——|Nginx&Nginx.V1.16&企业级LNMP&Yum.V1|
- 广告投放必备(如何使用Bannersnack快速生成横幅())
- 如何在Photoshop中删除背景的六种方法介绍
- 5款最佳产品设计交接工具合集(哪一个最好用())
- Web最佳流行布局有哪些(分析12个永恒的UI模式)
- .NET中的缓存和连接处理(面向方面的编程教程)
- 如何构建一个无法关闭的Android POS应用程序()
- 如何使用Express.js路由进行基于Promise的错误处理