4.3 用户管理命令
用于用户管理的命令有useradd、usermod和userdel,它们分别用于用户创建、用户修改和用户删除。
4.3.1 用户创建(useradd)
1.功能与用法
useradd命令的功能是创建新用户,其用法为:
useradd [-c comment] [-d home_dir] [-e expire_date] [-f inactive_days][-g group] [-G group1,group2,…] [[-m] [-k skel_dir]|-M] [-n][-o] [-r] [-s shell] [-u uid] user useradd -D [-g default_group] [-b default_home] [-e default_expire_date][-f default_inactive] [-s default_shell]
2.参数说明
useradd命令的部分参数如表4-1所示。
表4-1 useradd命令的部分参数
3.关于创建用户的说明
(1)若不带选项运行useradd,如useradd newuser,则使用默认方式创建newuser。若在创建用户时没有创建家目录,则为保证newuser创建后可以登录还必须手动创建newuser的家目录,并修改家目录归属关系和存取权限。
(2)创建用户时,是否创建用户家目录,默认情况下取决于/etc/login.defs中变量CREATE_HOME的值,可以使用-m强制创建,也可以使用-M强制不创建。不创建用户家目录也是常见的,当多个用户共用一个家目录时,只要第一个用户创建时创建家目录就可以了,而以后的用户可以直接使用已经存在的目录。这时应该注意目录的存取权限问题,必要时可将这类用户放在一个组中。
(3)若未指定密码,则在一切准备好后,还必须经超级用户为新建用户设置或修改密码后才能正常登录和使用。
(4)Linux默认在创建新用户时,按新用户名创建一个新组,该组为新用户的归属组,称为基本组。如果想让新建用户使用一个已经存在的组,可使用-g参数。如果同时还想让新建用户也归属到其他组,则可以使用-G参数。
4.创建用户示例
1)以默认方式创建用户
#useradd test1 #以默认方式创建用户test1,之后使用命令 # grep test1 /etc/passwd /etc/group /etc/shadow /etc/gshadow ##发现在文件/etc/passwd、/etc/group、/etc/shadow和/etc/gshadow中分别添加了如下行: /etc/passwd: test1:x:505:505::/home/test1:/bin/bash /etc/group: test1:x:505: /etc/shadow: test1:!!:13563:0:99999:7::: #!!表示用户未启用或被上锁 /etc/gshadow:test1:!:: #!表示未启用组密码 ##/etc/shadow文件中test1项中的密码项内容为“!!”,是一个上锁状态,说明此用户还没有被启用 (没有密码且不能登录),只有在超级用户为它修改密码或解锁后才能被启用。
2)以非默认方式创建用户
##创建一个名为test2的用户,并且为其创建家目录/usr/test2,而非默认的/home/test2 # useradd -d /usr/test2-m mytest
3)创建用户test3,让其与test1使用相同的家目录和相同的组
#useradd-d/home/test1-g test1-M test3 #不创建家目录
使用非默认模式创建用户时,在创建后使用时可能会遇到问题。例如,若指定的目录新用户不可访问或没有创建,则创建后不能登录;若指定的uid不合适,则可能会创建失败。
4.3.2 用户删除(userdel)
对于系统中不再使用的用户账号,应尽早删除它,因为多余用户的存在可能是安全的隐患。删除用户的命令是userdel。其用法为:
userdel [-r] user
选项-r的作用是在删除用户的同时删除用户的家目录。
关于用户删除有以下说明:
(1)在某些高级别的UNIX系统里,用户一旦创建,是不能从系统中删除的,用户的uid也不能被重新使用,但可以通过过期或上锁的办法将它闲置起来。
(2)对于已经登录的用户或属于该用户的程序正在运行的用户来说,删除可能失败。
(3)一般情况下,删除用户时只删除/etc/passwd、/etc/shadow、/etc/group及相关文件中与该用户相关的内容,而不删除用户的家目录,因为用户家目录中可能存放重要数据。对用户家目录的删除应由用户或经用户确认后由管理员来进行。
(4)若要在删除用户的同时删除用户家目录,可使用-r选项。
4.3.3 用户修改(usermod)
当用户被创建后,它的属性可通过usermod命令来修改。usermod的用法为:
usermod [-c comment] [-d dir [-m]] [-e expire_date] [-f inactive_days][-g group][-G group1,group2, …]
[-l newname] [-s shell][-u uid [-o]] [-L|-U] name
usermod命令的多数参数与表4-1意义相同,新增的参数有以下三个。
-l newname:设置新用户名,将用户名由原来的name变为newname。
-L:将用户密码上锁。
-U:将用户密码解锁。