用户和组管理
目录
1.用户和用户组介绍
2.用户管理
3.组管理
4.用户和组相关文件操作
1.用户和组介绍
在linux中,用户分为管理员和普通用户;管理员为root,普通用户又分为系统用户和登录用户;系统用户是对linux的守护进程进行资源分配的用户,而登录用户就是我们平常登录linux所使用的,都是登录用户自己定义的名字。
实际上,在linux系统中,系统所识别你是什么用户可不是依靠所谓的用户名来实现的,而是依靠UID来实现的,所谓的用户名是为了让我们更方便记忆。UID就是linux系统识别你是什么类型的用户的唯一标识符。root的用户的uid=0,普通用户的uid为1-65535;其中,在centos6系统里系统用户为为1-499,登录用户为500以后;而在centos7上,系统用户是1-999,登录用户为1000以后。
组的情况和用户基本一样,也有管理员组和普通组,系统组和登录用户组,且系统识别组也是通过组id的,称为GID,GID的分配方法也是和用户一样。但也有些不同地方,组名和用户名相同且仅仅保护用户自身的组称为私有组;一个用户可以附加到其他组内,这个组称为这个用户的附加组,也就是说,一个用户可以属于零个或多个组。
2.用户管理命令
与用户管理的相关的命令有以下这些,这里会选择常用的选项来详细说下:
useradd;usermod;userdel;id;passwd;chage;chfn;chsh;finger;chpasswd;newusers
1.useradd
useradd
:用于创建新用户或更新默认的新用户信息
用法:useradd [选项] username
-u UID
:指明新用户的ID
-g GID
:指明用户所属主组,可以使用组名,也可以使用GID。
-o
:允许使用相同的uid 来创建用户,常与-u配合
-d home_dir
:用于所指定的路径为家目录
-c comment
:用于指明用户的注释信息
-s shell
:指明用户默认shell程序
-G group1[,group2, ...]
:指明用户附加组,组必要事先存在
-r
:创建系统用户,系统账号一般用于服务。
-N
:不创建以用户名命名的私有组,而是用users组作为主组
-D [s,b,g]
:输出或更改添加用户时的默认设置
对于新创建的用户,一个用户的默认配置是根据/etc/default/useradd
文件来配置的,选项-D
就是用来修改这个文件的,你也可以直接修改这个文件里的内容。
上面提到选项-u
和-g
是决定用户和组id的,你也可以去文件/etc/login.defs中来修改uid和gid可选范围。当然/etc/login.defs文件中还有些其他如邮件地址等配置,你也可以根据需求进行修改。
创建一个新的用户,一般是更改4个文件,分别:是/etc/passwd
用于存放用户信息;/etc/shadow
用于存放密码信息;/home
用于存放用户家目录文件;/var/spool/mail
用于存放用户的邮件。
2.usermod
usermod
:用于修改用户属性信息
用法:usermod [选项] username
-u UID
:指定用户的新的UID
-g GID
:指定用户所属新的主组,可以使用组名,也可以使用GID
-G group1[,group2, ...]
:指定用户新附加组,组必要事先存在。
-s shell
:指定用户新的默认shell程序
-c comment
:指定用户的新的注释信息
-d home_dir
:指定的路径为新家目录
-l loginname
:指定用户登录时新的用户名
-L
:锁定用户
-U
:解锁被锁定的用户,与-L相反
-e YY-MM-DD
:指定用户账号过期日期
-f inactive
:设定非活动期限
使用选项-G
时需要注意,它会把原来的组给覆盖掉,但你也可以保留原有的组,就需要用-a
配合。
使用-d
时,若要创建新的家目录并移动原有家数据,则要配合使用-m
选项。usermod -c
用来修改或添加注释信息,和后面提到的chfn作用一样。usermod -e
用来指定用户账号过期日期的,和后面提到的chage作用一样。
对于分别用来锁定和解锁的-L
和 -U
,实际上是对/etc/shadow文件的修改,锁定是在文件中加密码的那一栏增加了个“!”,解锁就是去掉了那个“!”。
3.userdel
userdel
:用于删除用户账号和相关用户相关文件
用法:userdel [选项] username
-r
:移除用户家目录和邮件
-f
:强制执行删除
删除用户时需要注意一点,就是正在使用的用户是不能删除的,强制执行删除的话会有各种问题,所以建议不要使用强制删除,并且强制删除不一定能够删除掉。
4.id
id
:查看用户相关ID信息
用法:id [选项] [username]
-G
:显示所有组的id
-g
:仅显示有效的组id
-u
:仅显示有效的用户id
-n
:显示名称,需配合ugG
5.passwd
passwd
:设置用户密码
用法:passwd [选项] username
-l
:锁定用户
-u
:解锁被锁定的用户,与-l相反
-e
:强制用户下次登录时修改密码
-n mindays
:指定最短使用期限
-x maxdays
:指定最长使用期限
-w warndays
:指定提前多少天开始警告
-i inactivedays
:指定非活动期限
--stdin
:从标准输入接收用户密码
选项-l
实际上是在/etc/passwd中有关密码那一栏上增加了两个“!!”,解锁的-u
选项就是把增加的“!!”给去掉。大家可能发现usermod中锁定和解锁和passwd 的不同,是否可以用usermod来解开passwd命令的锁定,答案是可以的,passwd也可解开usermod的锁定,这样开来增加几个“!”,好像没什么区别。
选项--stdin
的用法一般是echo "Password
|passwd -stdin Username。
passwd -e的作用和
chage -d 0`一样,可以相互代替。
6.chage
chage
:修改用户密码满期信息
用法:chage [选项] username
-d lastday
:设置期满最后时间
-E expiraday
:设置期满日期
-I
:设置期满后非活动日期
-l,--list
:显示用户期满信息
-m
:设置min_day
-M
:设置max_day
-W
:设置warn_day
一般来说,有关密码期满设置,都是设置一个固定配置,就不会再更改了。这个命令的作用就是用来修改/etc/shadow
文件中的配置的,你也可以直接修改这个文件,但不建议,用命令修改会更加保险。
7.chfn
chfn
:修改个人用户注释信息
用法:chfn [选项] [username]
-f
:更改用户全名
-o
:修改office room number
-p
:修改office phone number
-h
:修改home phone number
chfn
用来添加注释信息,作用和useradd -c
以及usermod -c
相同,但毕竟chfn
是专门用来针对个人信息的,功能更加全面。这个命令是修改的是/etc/passwd文件。
8.chsh
chsh
:更改用户登录shell
用法:chsh [选项] [username]
-s
:指定登录shell
-l,--list
:列出/etc/shells的shell内容
chsh
指定shell与useradd -s
和usermod -s
有相同的作用,但还是那句话塑业有专攻,它也是修改的/etc/passwd
文件。
9.finger
finger
:查看用户信息
用法:finger [-lsmp] [username...] [user@host...]
[-lsmp]
都是可以用的选项,man中解释太长了,这里就用例子看下:
10.newusers
newusers
:批量创建用户
用法:newusers [选项] [文件]
-r
:创建系统账号
[文件]:文件的格式是/etc/passwd的格式:pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell
11.chpasswd
chpasswd
:批量创建用户密码
用法 :cat 文件 |chpasswd
文件的格式:user_name:password,且每行一个用户密码。
上述命令中有些选项没有提到,这里只说了下经常用到的,对其他选项有兴趣的可以查看man帮助。
3.组管理
与组管理相关的命令如下,基本上和用户管理命令差不多,这里也是说下常用的选项内容:
groupadd、groupmod、groupdel、gpasswd、newgrp、goupmems、groups
1.groupadd
groupadd
:创建新组
用法:groupadd [选项] group
-g GID
:指明gid给新用户
-K KEY=VALUE
:修改/etc/login.defs中的默认配置
-o
:忽略gid的唯一性来创建组
-p password
:给新用户添加密码
-r
:创建系统账户
2.groupmod
groupmod
:修改组的定义信息
用法:groupmod [选项] group
-g GID
:修改为新的gid
-n groupname
:修改为新的组名
-o
:忽略gid的唯一性来修改组
-p password
:修改组的密码
3.groupdel
groupdel
:删除组
用法:groupdel [hR] group
4.gpasswd
gpasswd
:管理/etc/group和/etc/gshadow
用法:gpasswd [选项] group
-a user
:添加用户到组
-d user
:从组中删除用户
-r
:删除组的密码
-R
:限制组中的用户
-M user ...
:设置组中用户列表,也就是添加多个用到组
-A admin
:设置组的管理员,组的管理员权限放在/etc/gshadow
中
5.newgrp
newgrp
:临时切换主组
用法:newgrp [-] group
切换组时,如果用户本不属于此组,则会需要密码
6.groupmems
groupmems
:管理用户组成员,也就是附加组成员
用法:groupmems [选项] [操作]
[选项]:-g groupname
:指定所要修改的除root用户组外的组名
[操作]:
-a username·:添加用户到组
-d username:从组中删除用
-p:从组中清除所有成员
-l`:显示所有组成员
groupmems
命令实际上也就是修改/etc/groups
7.groups
groups
:显示组中用户,或存在一个用户的组
用法:groups [username]
上述命令可以看出其和用户管理命令很相似,实际上命令的执行都是通过修改配置文件来实现的,上述命令主要修改的是:/etc/group
用来存放组的信息,也即就是组中用户的列表等;/etc/gshadow
用来存放组的密码信息。
说到与用户和组相关的文件,那来看看有关对这些文件操作命令
4.用户和组相关文件操作
操作用户和组相关配置文件的命令有以下这些:
vipw、vigr、pwck、grpck、getent
1.vipw和vigr
vipw,vigr
:用于编辑password,group,shadow-password和shadow-group文件
用法:vipw [选项] 、vigr [选项]
vipw
编辑的是/etc/passwd
文件,vigr
编辑的是/etc/group
文件。我这里虽说写了出来,但不建议大家用,毕竟是通过直接修改配置文件,文件间的相互关系会出现问题,即使你看起来编辑成功了,但可能出现各种问题,所以特别不建议大家用。
2.pwck和grpck
pwck
,grpck
:用于检查password文件和group文件的完整性。
用法:pwck [选项] [passwd [shadow] ]
,grpck [选项] [group [gshadow] ]
-q
:仅报告错误
-r
:仅显示错误和告警但不修改文件
-s
:按照UID进行排序分类
可以看出来pwck是检查/etc/passwd
和/etc/shadow
文件的,grpck是检查/etc/group
和/etc/gshadow
文件的。
3.getent
getent
:查看数据相关信息
用法:getent datebase [key...]
datebase包含shadow,passwd,group,gshadow...这是打开了相应的/etc/下的配置文件。
你可能发现有好多命令选项有相同的用法,这里就做个总结:
添加用户到组:
useadd -g 主组 -G 附加组... user (创建)
usermod -g mg -G ag... user (修改)
gpasswd -a user ag(添加)
gpasswd -M user... ag (设置)
gpasswd -A user mg (设置) (设置管理员用户)
goupmems -g 组 -a user (添加)
删除组中用户:
gpasswd -d user ag
goupmems -g 组 -d user
给组设置管理员:
gpasswd -A user 主组
指定个人信息:
useradd -c
usermod -c
chfn
指定shell:
useradd -s
usermod -s
chsh -s
以上就是我对用户和组管理的相关认识,这里就不再举例,大家可以多加尝试。有什么写的不对地方,欢迎提出,谢谢~