在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的分配方法也是和用户一样。但也有些不同地方,组名和用户名相同且仅仅保护用户自身的组称为私有组;一个用户可以附加到其他组内,这个组称为这个用户的附加组,也就是说,一个用户可以属于零个或多个组。
与用户管理的相关的命令有以下这些,这里会选择常用的选项来详细说下:
useradd;usermod;userdel;id;passwd;chage;chfn;chsh;finger;chpasswd;newusers
1.useradduseradd:用于创建新用户或更新默认的新用户信息
用法: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用于存放用户的邮件。
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文件的修改,锁定是在文件中加密码的那一栏增加了个“!”,解锁就是去掉了那个“!”。
userdel:用于删除用户账号和相关用户相关文件
用法:userdel [选项] username
-r:移除用户家目录和邮件
-f:强制执行删除
删除用户时需要注意一点,就是正在使用的用户是不能删除的,强制执行删除的话会有各种问题,所以建议不要使用强制删除,并且强制删除不一定能够删除掉。
4.idid:查看用户相关ID信息
用法:id [选项] [username]
-G:显示所有组的id
-g:仅显示有效的组id
-u:仅显示有效的用户id
-n:显示名称,需配合ugG
passwd:设置用户密码
用法:passwd [选项] username
-l:锁定用户
-u:解锁被锁定的用户,与-l相反
-e:强制用户下次登录时修改密码
-n mindays:指定最短使用期限
-x maxdays:指定最长使用期限
-w warndays:指定提前多少天开始警告
-i inactivedays:指定非活动期限
--stdin:从标准输入接收用户密码