linux用户管理
添加新用户
用来向Linux系统添加新用户的主要工具是 useradd 。这个命令简单快捷,可以一次性创建新用户账户及设置用户HOME目录结构。 useradd 命令使用系统的默认值以及命令行参数来设置用户账户。系统默认值被设置在/etc/default/useradd文件中。可以使用加入了 -D 选项的 useradd命令查看所用Linux系统中的这些默认值。
[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
说明 一些Linux发行版会把Linux用户和组工具放在/usr/sbin目录下,这个目录可能不在 PATH 环境变量里。如果你的Linux系统是这样的话,可以将这个目录添加进 PATH 环境变量,或者用绝对文件路径名来使用这些工具。
在创建新用户时,如果你不在命令行中指定具体的值, useradd 命令就会使用 -D 选项所显示的那些默认值。这个例子列出的默认值如下:
-
新用户会被添加到GID为 100 的公共组;
-
新用户的HOME目录将会位于/home/loginname;
-
新用户账户密码在过期后不会被禁用;
-
新用户账户未被设置过期日期;
-
新用户账户将bash shell作为默认shell;
-
系统会将/etc/skel目录下的内容复制到用户的HOME目录下;
-
系统为该用户账户在mail目录下创建一个用于接收邮件的文件。
倒数第二个值很有意思。 useradd 命令允许管理员创建一份默认的HOME目录配置,然后把它作为创建新用户HOME目录的模板。这样就能自动在每个新用户的HOME目录里放置默认的系统文件。
使用默认系统参数创建一个新用户账户,然后检查所创建的用户HOME目录。
[root@localhost ~]# useradd -m root1
[root@localhost ~]# ls -al /home/root1/
总用量 20
drwx------. 2 root1 root1 4096 1月 12 23:01 .
drwxr-xr-x. 3 root root 4096 1月 12 23:01 ..
-rw-r--r--. 1 root1 root1 18 10月 31 2018 .bash_logout
-rw-r--r--. 1 root1 root1 193 10月 31 2018 .bash_profile
-rw-r--r--. 1 root1 root1 231 10月 31 2018 .bashrc
默认情况下, useradd 命令不会创建HOME目录,但是 -m 命令行选项会使其创建HOME目录。你能在此例中看到, useradd 命令创建了新HOME目录,并将/etc/skel目录中的文件复制了过来。记得及时使用man useradd 或者 info useradd命令查看操作。
删除用户
如果你想从系统中删除用户, userdel 可以满足这个需求。默认情况下, userdel 命令会只删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件。
如果加上 -r 参数, userdel 会删除用户的HOME目录以及邮件目录。然而,系统上仍可能存有已删除用户的其他文件。这在有些环境中会造成问题。
[root@localhost ~]# userdel -r root1(用户名称)
警告 在有大量用户的环境中使用 -r 参数时要特别小心。你永远不知道用户是否在其HOME目录下存放了其他用户或其他程序要使用的重要文件。记住,在删除用户的HOME目录之前一定要检查清楚!
修改用户
Linux提供了一些不同的工具来修改已有用户账户的信息。
命令 | 描述 |
---|---|
usermod | 修改用户账户的字段,还可以指定主要组以及附加组的所属关系 |
passwd | 修改已有用户的密码 |
chpasswd | 从文件中读取登录名密码对,并更新密码 |
chage | 修改密码的过期日期 |
chfn | 修改用户账户的备注信息 |
chsh | 修改用户账户的默认登录shell |
usermod
usermod 命令是用户账户修改工具中最强大的一个。它能用来修改/etc/passwd文件中的大部分字段,只需用与想修改的字段对应的命令行参数就可以了。参数大部分跟 useradd 命令的参数一样(比如, -c 修改备注字段, -e 修改过期日期, -g 修改默认的登录组)。除此之外,还有另外一些可能派上用场的选项。
-
-l 修改用户账户的登录名。
-
-L 锁定账户,使用户无法登录。
-
-p 修改账户的密码。
-
-U 解除锁定,使用户能够登录。
-L 选项尤其实用。它可以将账户锁定,使用户无法登录,同时无需删除账户和用户的数据。
要让账户恢复正常,只要用 -U 选项就行了。
passwd 和 chpasswd
改变用户密码的一个简便方法就是用 passwd 命令。
如果只用 passwd 命令,它会改你自己的密码。系统上的任何用户都能改自己的密码,但只有root用户才有权限改别人的密码。
-e 选项能强制用户下次登录时修改密码。你可以先给用户设置一个简单的密码,之后再强制在下次登录时改成他们能记住的更复杂的密码。
如果需要为系统中的大量用户修改密码, chpasswd 命令可以事半功倍。 chpasswd 命令能从标准输入自动读取登录名和密码对(由冒号分割)列表,给密码加密,然后为用户账户设置。你也可以用重定向命令来将含有 userid:passwd 对的文件重定向给该命令。
chsh 、 chfn 和 chage
chsh 、 chfn 和 chage 工具专门用来修改特定的账户信息。 chsh 命令用来快速修改默认的用户登录shell。使用时必须用shell的全路径名作为参数,不能只用shell名。
chfn 命令提供了在/etc/passwd文件的备注字段中存储信息的标准方法。 chfn 命令会将用于Unix的 finger 命令的信息存进备注字段,而不是简单地存入一些随机文本(比如名字或昵称之类的),或是将备注字段留空。 finger 命令可以非常方便地查看Linux系统上的用户信息。
[root@localhost ~]# finger rich
Login: rich Name: Rich Blum
Directory: /home/rich Shell: /bin/bash
On since Thu Sep 20 18:03 (EDT) on pts/0 from 192.168.1.2
No mail.
No Plan.
说明 出于安全性考虑,很多Linux系统管理员会在系统上禁用 finger 命令,不少Linux发行版甚至都没有默认安装该命令。