useradd命令详解
useradd是Linux添加新用户的命令,这个命令提供了一次性创建新用户账户及设置用户HOME目录结构的简便方法。
1、useradd命令加参数-D参看系统的默认值:
# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
1)新用户添加到GID为100的公共组
2)新用户的HOME目录将会位于/homoe/username
3)新用户账户密码在过期后不会被禁用
4)新用户账户未被设置为某个日期后就过期
5)新用户账户将bash shell作为默认shell
6)系统会将/etc/skel目录下的内容复制到用户的HOME目录下
7)系统为该用户账户在mail目录下创建一个用于接收邮件的文件
倒数第2个值很有意思。useradd命令允许管理员创建一个默认的HOME目录配置,然后把它作为创建新用户HOME目录的模板。这样,就能自动在每个新用户的HOME目录里放置默认的系统文件。在Ubuntu Linux系统上,/etc/skel目录下有下列文件:
$ ls -la /etc/skel
total 32
drwxr-xr-x 2 root root 4096 Jun 24 09:43 .
drwxr-xr-x 132 root root 12288 Jun 19 09:53 ..
-rw-r--r-- 1 root root 220 Apr 3 2012 .bash_logout
-rw-r--r-- 1 root root 3486 Apr 3 2012 .bashrc
-rw-r--r-- 1 root root 179 Apr 3 2012 example.desktop
-rw-r--r-- 1 root root 675 Apr 3 2012 .profile
$
在创建用户时,可以使用下面的命令行参数改变默认值或默认行为:
============================================================================
参 数 描 述
----------------------------------------------------------------------------
-c comment 给新用户添加备注
-d home_dir 为主目录指定一个名字(如果不想用登录名作为主目录名的话)
-e expire_date 用YYYYY-MM-DD格式指定一个账户过期的日期
-f inactive_days 指定这个帐户密码过期后多少天这个账户被禁用;0表示密码一过期就立即禁
用,-1表示禁用这个功能
-g initial_group 指定用户登录组的GID或组名
-G group ... 指定用户除登录组之外所属的一个或多个附加组
-k 必须和-m一起使用,将/etc/skel目录的内容复制到用户的HOME目录
-m 创建用户的HOME目录
-M 不创建用户的HOME目录(当默认设置里指定创建时,才用到)
-n 创建一个同用户登录名同名的新组
-r 创建系统账户
-p passwd 为用户账户指定默认密码
-s shell 指定默认登录shell
-u uid 为账户指定一个唯一的UID
============================================================================
同样,你可以用-D参数后面跟一个要修改的值的参数,来修改系统默认的新用户值。这些参数如下表:
============================================================================
参 数 描 述
----------------------------------------------------------------------------
-b default_home 更改默认的创建用户HOME目录的位置
-e expiration_date 更改默认的新账户的过期日期
-f inactive_days 更改默认的新用户从密码过期到账户被禁用的天数
-g group 更改默认的组名称或GID
-s shell 更改默认的登录shell
============================================================================
如 #useradd -D -s /bin/tsch ,修改默认的shell为/bin/tsch。
另外,删除用户,使用userdel命令。默认情况下,userdel命令只会删除/etc/passwd文件中的信息,而不会删除系统中属于该账户的任何文件。
如果加上-r,userdel会删除用户的HOME目录以及mail目录。然后,系统上仍可能存有归已删除用户所有的其他文件。这在有些环境中会造成问题。
PS:在有大量用户的环境中使用-r参数时要特别小心。你永远不知道用户是否在他的HOME目录下存放了其他用户或其他程序要使用的重要文件。记住在删除用户的HOME之前一定要检查清楚!