3. 用户管理命令
3.1 用户添加命令:useradd
(1)useradd命令: useradd [选项] 用户名
选项 |
含义 |
-u UID |
手工指定用户的UID |
-d 家目录 |
手工指定用户的家目录 |
-c 用户说明 |
手工指定用户的说明 |
-g 组名 |
手工指定用户的初始组 |
-G 组名 |
手工指定用户的附加组 |
-s Shell |
手工指定用户的登录Shell,默认是/bin/bash |
(2)注意事项
①如果只是执行useradd,而没有设置密码。则信息不完整,不能登录。
②useradd user1一个用户后,会同时修改etc/passwd、/etc/shadow、/etc/group、/etc/gshadow等文件,同时创建/home/user1家目录和/var/spool/mail/lamp邮件文件。
(3)用户默认值文件/etc/default/useradd
默认值 |
含义 |
GROUP=100 |
#用户默认组 |
HOME=/home |
#用户家目录 |
INACTIVE=-1 |
#密码过期宽限天数(shadow文件第7字段) |
EXPIRE= |
#密码失效时间(第8字段) |
SHELL=/bin/bash |
#默认shell |
SKEL=/etc/skel |
#模板目录 |
CREATE_MAIL_SPOOL=yes |
#是否建立邮箱 |
(4)默认的用户账号限制文件/etc/login.defs
默认值 |
含义 |
PASS_MAX_DAYS 99999 |
#密码有效期(shadow文件的第5字段) |
PASS_MIN_DAYS 0 |
#密码修改间隔(shadow文件的第4字段) |
PASS_MIN_LEN 5 |
#密码最小5位(PAM) |
PASS_WARN_AGE 7 |
#密码到期警告(shadow文件的第6字段) |
UID_MIN 500 |
#最小UID |
UID_MAX 60000 |
#最大UID |
ENCRYPT_METHOD SHA512 |
#加密模式 |
(5)应用举例
#useradd -u 550 -G root,bin -d /home/user2 \ -c "test User2" -s /bin/bash user2
3.2 修改用户密码:passwd
(1)passwd命令格式: passwd [选项] 用户名
选项 |
含义 |
-S |
查询用户密码的密码状态。仅root用户可用。 |
-l |
暂时锁定用户。仅root用户可用 |
-u |
解锁用户。仅root用户可用 |
--stdin |
可以通过管道符输出的数据作为用户的密码 |
(2)应用举例
①查看密码状态:#passwd –S testUser
②锁定用户和解锁用户:#passwd –l testUser //则testUser不能登录。-u为解锁。本质上是在/etc/shadow文件中用户对应的密码前加“!!”
③使用字符串作为用户的密码:#echo "123" | passwd –stdin testUser //将echo输出的内容(“123”)作为testUser的密码,即将testUser的密码改为123。这种做法主要是在Shell脚本中批量输入密码时经常用到。
3.3 修改用户信息(usermod)和修改用户密码状态(chage)
(1)usermod命令:
①usermod [选项] 用户名
选项 |
含义 |
-u UID |
修改指定用户的UID |
-c 用户说明 |
修改指定用户的说明 |
-G 组名 |
手工指定用户的附加组 |
-L |
临时锁定用户(Lock) |
-U |
解锁用户锁定(Unlock) |
②应用举例:#usermod –c "test User" –G root –u 550 testUser
(2)修改密码状态(chage)
①chage [选项] 用户名
选项 |
含义 |
-l |
列出用户的详细密码状态 |
-d 日期 |
修改密码最后一次更改日期(shadow的第3字段) |
-m 天数 |
两次密码修改间隔(第4字段) |
-M 天数 |
密码有效期(第5字段) |
-W 天数 |
密码过期前警告天数(第6字段) |
-I 天数 |
密码过期后宽限天数(第7字段) |
-E 日期 |
账号失效时间(第8字段) |
②应用举例:
#chage –d 0 testUser //将密码修改日期归0,这样用户一登陆就要修改密码。如批量为用户设置的初始密码可能不完全,如果将这个归0,这样就会要求用户一登录就要修改。
3.4 删除用户(userdel)和用户切换命令(su)
(1)删除用户 userdel
①userdel格式: #userdel [-r] 用户名 (其中-r表示删除用户的同时,删除家目录)
②说明:userdel与useradd一样,都是同时操作那5个文件(etc/passwd、/etc/shadow、/etc/group、/etc/gshadow等文件以及/home/user1和/var/spool/mail/lamp目录)
(2)查看用户ID:#id 用户名
(3)切换用户:su
①su格式: #su [选项] 用户名
选项 |
含义 |
- |
选项只使用“-”代表连带用户的环境变量一起切换 |
-c 命令 |
仅执行一次命令,而不切换用户身份 |
②注意事项:
A.#su root,只是切换用户的身份,但环境变量仍为切换之前的用户的环境变量(可用#env查询)。因此可以加“-”,即#su – root连同环境变量一起切换。
B.从root用户切换到普通用户不需要输入密码,反之需要输入密码。
③应用举例:
$su – root –c "useradd user2" //不切换成root用户,但是执行useradd命令
4. 用户组管理命令
4.1 添加用户组
(1)groupadd 命令:#groupadd [选项] 组名
可加“-g 组ID”选项来指定组ID
(2)应用举例:#groupadd testGroup //添加testGroup用户组,可cat /etc/group查看
4.2 修改用户组
(1)格式:#groupmod [选项] 组名
选项 |
含义 |
-g GID |
修改组ID |
-n 新组名 |
修改组名 |
(2)应用举例:#groupmod –n testGrp testGroup //将原testGroup组名改为testGrp
4.3 删除用户组
(1)groupdel命令:#groupdel 组名
(2)注意事项
①如果要删除的组中存在有用户的话,一定要确保这个组没有被任何用户作为初始组。因为用户必须存在一个初始组,否则用户无法单独存在。
②如果要删除的组只是被其它用户的作为附加组,则该组可以直接删除
(3)应用实例分析
#groupadd tg //增加tg组 #useradd -g tg test1 //添加test1用户并加入tg组,即test1用户的初始组为tg //注意,此时并不生成test1组,因为test1己经有初始组tg了 #useradd -G tg test2 //添加test2用户并将tg作为其附加组(但会同时为test2创建初始组test2)
#groupdel tg //会产生失败,因为tg是test1的初始组,如果删除初始组,则test1用 //户将没有初始化,linux系统不允许一个用户没有初始组。所以如果 //删除这个组,必须先删除所有以这个组为初始组的用户(但不要求删除 //以这个组为附加组的用户),最后再删除该组。 #groupdel test2 //也会失败。同理,要先删除test2用户,最后才能删除该组。
4.4 把用户添加到组或从组中删除
(1)gpasswd [选项] 组名
选项 |
含义 |
-a 用户名 |
把用户加入组 |
-d 用户名 |
把用户从组中删除 |
(2)注意事项
命令中,用户名写在前面,最后是组名。因为gpasswd操作的对象是组,所以组放最后。useradd操作的对象是用户,所以useradd放在命令的最后面。
(3)应用举例:
①#gpasswd –a user1 root //将user1加入root组,可以cat /ect/group查看root组中都有哪些用户。