@cdmonkey
2016-05-17T17:30:21.000000Z
字数 2619
阅读 1373
命令总结
创建新用户,要求新创建的用户在系统中不能已经存在。可以使用useradd命令来新建用户,密码的给与则使用passwd命令。使用该指令所建立的帐号,实际上是保存在“/etc/passwd”文件中。
命令格式:
useradd [-u UID] [-g 初始用户组] [-G 次要用户组] [-mM] [-c 说明]
[-d 主文件夹绝对路径] [-s shell] username
常用选项:
选项 | 长选项 | 说明 |
---|---|---|
-u.. |
--uid |
后面接的是UID,是组数字,直接指定一个特定的UID给这个用户账号。但是要求这个UID必须唯一而且符合/etc/login.defs 中的设定范围。 |
-g |
--gid |
后面接的用户组就是“初始用户组(initial group)”,该GID会被放置到/etc/passwd 的第四个字段内。如果接GID,则这个指定的GID对应的组必须已经存在。 |
-G |
--groups |
后面接的组名则是这个账号还可以加入的用户组。这个参数会修改/etc/group 内的相关数据。 |
-M |
强制!不创建用户的主目录(系统账号默认值)。优先于/etc/login.defs 文件的设定。 |
|
-m |
--create-home |
强制!要创建用户的主目录(一般账号默认值)。并且将/etc/skel 目录下的文件全部复制到新建用户的主目录下。如果在创建新用户时没有用该选项,且/etc/login.defs 文件中的配置项CREATE_HOME 不是yes ,则不会创建主目录。 |
-N |
--no-user-group |
取消建立以用户名称为名的群组。 |
-c |
--comment |
备注信息,这个就是/etc/passwd 的第五个字段内的内容,随意。 |
-d |
--home |
指定某个目录作为主目录,而不使用默认值,必须是绝对路径。如果指定的主目录不存在,系统会自动创建。 |
-D |
--defaults |
变更预设值。 |
-e |
--expiredate |
指定帐号的有效期限,缺省表示永久有效。日期的指定格式为:2014/08/18。CentOS 6.x到终止日期就无法登陆,比CentOS 5.x严格。 |
-f |
--inactive |
指定在密码过期后多少天即关闭该帐号。当值为0时帐号立刻会被停权。而当值为-1时则表示关闭此功能,预设值为-1。 |
-r |
--system |
建立系统帐号。 |
-s |
--shell |
指定用户登录后使用的shell。如果指定了使用/sbin/nologin ,则可以禁止用户登录。如果没有指定,则参考/etc/default/useradd 中的配置内容。 |
需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号。
默认配置:创建新用户的默认配置文件为:/etc/default/useradd
(useradd defaults file)
[root@LB-N1 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
条目 | 作用 |
---|---|
GROUP=100 |
表示可创建普通组。 |
HOME=/home |
用户主目录的默认地址。 |
INACTIVE=-1 |
是否启用帐号过期停权:-1表示不启用;宽限天数;0表示立即停权。 |
EXPIRE= |
帐号终止日期,不设置表示不启用。 |
SHELL=/bin/bash |
默认shell。 |
SKEL=/etc/skel |
用户家目录中的环境文件的所在地址。 |
CREATE_MAIL_SPOOL=yes |
是否创建用户邮件缓冲。 |
经验技巧:
/etc/skel
下的所有文件(包括以“.”开头的文件和目录)拷贝到用户的主目录。
[root@LB-N1 ~]# useradd -u 520 -g test oldboy
[root@LB-N1 ~]# grep oldboy /etc/passwd
oldboy:x:520:502::/home/oldboy:/bin/bash
--------------
[root@LB-N1 ~]# useradd -u 555 -g 555 nono
useradd: group '555' does not exist
#看来-g后面要跟一个已经存在的组名。
--------------
#创建用户并设置账号的有效期:
[root@LB-N1 ~]# useradd nono -e "2015/02/20"
useradd指令通过使用-D选项可以修改默认选项(即修改配置文件/etc/default/useradd
)。
#单纯使用-D选项会显示当前的预设值:
[root@LB-N1 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
总结:添加用户过程其实蛮复杂的,它涉及到的文件有很多。
[root@LB-N1 ~]# cat /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 500
UID_MAX 60000
GID_MIN 500
GID_MAX 60000
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
[root@LB-N1 ~]# ls -al /etc/skel/
total 32
drwxr-xr-x. 3 root root 4096 Nov 13 17:41 .
drwxr-xr-x. 98 root root 12288 Dec 29 20:31 ..
-rw-r--r--. 1 root root 18 Jul 18 2013 .bash_logout
-rw-r--r--. 1 root root 176 Jul 18 2013 .bash_profile
-rw-r--r--. 1 root root 124 Jul 18 2013 .bashrc
drwxr-xr-x. 2 root root 4096 Nov 12 2010 .gnome2