用户及组创建修改相关命令

useradd/usermod/userdel/passwd/groupadd/gpasswd/newgrp/groupdel/groups命令:
useradd创建用户过程:useradd不加任何参数创建时,系统首先读取用于添加用户的配置文件/etc/login.defs和/etc/default/useradd根据这两个配置文件中定义的规则添加用户。 然后向/etc/passwd和/etc/group文件添加用户和用户组记录,同时/etc/passwd 和/etc/group对应的加密文件也会自动生成记录。接着系统会自动在/etc/default/useradd 文件设定的目录下建立用户家目录。最后复制/etc/skel目录中的所有文件到新用户的家目录中,新用户建立完成。

 

创建及修改用户信息命令

useradd [选项] 用户名
useradd 创建用户时会参考两个配置文件,分别是/etc/default/useradd和/etc/login.defs
-uuid用户标识号,此标识必须唯一。
-g group指定新用户登录时所属的默认组(主组)【创建并加入对的过程】
-G 指定新用户的附加组,必须是已经存在的组。附加组对于默认组而言,当一个用户同时 是多个组中的成员时,登录时默认组称为主组,其他组称为附加组。
-d home指定新建用户的默认家目录,如果不指定系统会在/etc/default/useradd文件指定 的目录下创建用户主目录。
-s shell指定新建用户使用默认的shell类型,如果不指定,会在/etc/default/useradd文 件中定义的shell作为新用户的默认shell。
-c comment对新建用户添加说明信息。
-f inactive指定账号过期多长时间后会永久停用。当值为0时账号立刻停用。当值为-1时 则关闭此功能。
-M 创建时不生成用户家目录(配合-s使用)
单个使用--useradd [选项] 条件 用户(把条件赋予给用户)
多个使用--useradd [选项] 条件 用户 [选项] 条件 [选项] 条件 ·····
只需第一个条件写用户,其他只需选项和条件
e.g. useradd -u 1003 u3 -g u1 -G u2 -c kk
创建UID1003,初始组为u1,附加组为u2,说明条件为kk的u3用户
useradd -r -s /sbin/nologin www
创建一个系统用户,且不为用户创建家目录
usermod [选项] 用户名 (已建立用户修改)---用户信息变混乱,不常用
-u UID #修改用户的指定UID
-g 组名 #修改用户的指定初始组(尽量不修改)
-G 组名 #修改用户的附加组(不管之前设置了多少附加组,都替换掉)(加上-a选项可不 替换)
-c 说明 #修改用户的描述信息
-d 目录 #结合 -m 选项直接对源家目录进行改名实现修改家目录
e.g. usermod –m –d /home/u4 user4 (用户user的原家目录是/home/user4)
-s shell类型 #修改用户的登录shell类型
-L(大)用户名 #锁定用户的密码 --/etc/shadow中的密码前+!
-U(大)用户名 #解锁用户密码 --/etc/shadow中密码前的!删去
-l 新用户名 旧用户名 #修改用户名

userdel [选项] 用户名
-r 删除用户时,连带家目录一起删除
删除用户后其用户创建的非/home/用户名下的文件,通过 ll 命令查看所有者所属组变为UID、GID号,当创建了同一UID的用户后,文件的所有者识别为新建用户创建的,会造成混乱。
解决办法:①不删(UID足够用)
②通过 find / -user 用户名 -exec rm -rf {} \: 删除对应用户创建的所有文件

passwd [选项] 用户名
-l 用户名#锁定用户的密码,使之无法登录系统--/etc/shadow的密码前加!!
-u 用户名 #解锁用户密码--把/etc/shadow中密码前的!!删去
-S 用户名 #查看用户账号状态。
第一次对一个用户使用时是为此用户创建密码,第二次使用时是修改密码。 当普通用户没有密码时,自己是修改不了密码的。
注:root身份执行passwd
1、可以给任何用户设置或修改密码
2、在进行密码修改时不需要提供原始密码
普通用户执行passwd
1、默认只能给自己修改密码(命令后不需写任何字符串)
2、给自己修改密码时需要提供用户的当前密码
3、需要遵循密码各项原则(长度、复杂)
非交互式密码设置:
echo "123123" | passwd --stdin user1
用非交互式的方式设置user1的密码为123123

 

创建及变更组命令:
groupadd [选项] GID 组名
-g指定新建用户组的GID,该GID必须唯一,不能和其他用户组的GID重复。
-o 表示新用户组的GID可以与系统中已有的用户组的GID相同。
gpasswd [选项] 用户名 组名 (直接跟组名用于改组密码)
-a 向指定组内添加一个成员
-d 把指定用户从组内删除
-M定义组内成员列表,用户之间用“,”分隔(覆盖式)
注: -M 会重新定义组内成员情况,重定义的过程实质为成员的添加和删除。
groupdel 组名
groupdel用于删除用户组,如果该用户组中扔包括某些用户,则必须先删除这些用户后,才能删除用户组。
groups 查询用户所属哪些组---读当前的所在组(包括临时切换)


其他相关命令 :
1. id 用户名 ----读取配置文件中的所在组(不需路径,只需用户名)
#显示用户的UID、初始组、附加组列表
2. su 用户名 (不完全切换) #切换用户身份
su - 用户名 (完全切换)
#su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然 是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。su切换成root用户 以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作 目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有何不同。 以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。(也可以分别用env命令【包含path等各种信息】查看区别)
3.finger:查看用户详细信息--用于用户信息的筛选
#finger username
4.newgrp 组名
newgrp主要用于修改用户的有效组,切换有效组后获取相关身份,权限,执行后可通过exit退出。
注:每次切换通过exit退出,以防连续引起用户身份混乱
初始组、附加组
#初始组指的是:用户创建时直接加入的第一个组,或默认加入的组
#附加组指的是:在用户创建时加入了初始组之后,又加入的组,称之为用户的附加组
#当用户创建文件时,该文件会默认使用用户的有效组作为该文件的所属组
有效组:
用户的初始组就是默认的有效组
当用户创建文件时,该文件的所属组就是当前用户的有效组
有效组,决定了用户创建文件时,文件的所属组
newgrp 组名 #临时为指定用户切换有效组{前提:需要提前将用户加入到指定组内}
exit #退回到原来有效组

posted @ 2021-02-22 20:19  风雪一刀藏  阅读(526)  评论(0编辑  收藏  举报