- Linux从初学到精通
- 张勤 鲜学丰等编著
- 91字
- 2020-08-27 03:01:39
用户及用户组管理命令
在了解Linux系统中与用户及用户组相关的配置文件后,实际上我们可以通过修改这些配置文件来建立用户,但一般很少这样做,因为在Linux系统提供了很多命令方便我们建立用户及用户组。
5.2.1 useradd:建立用户
useradd命令用于建立用户,该命令语法如下。
useradd [-u <UID>] [-g <用户组>] [-G <用户组…>] -[Mm] [-c <说明信息>] [-d <目录>] [-s <Shell>] 用户名
常用指数:
常用选项:
● 用户名:要建立用户的名称。
● -u UID:UID是一个整数,直接指定用户的UID。在RHEL 5.x中如果不使用该选项时,用户的UID会从500开始,每建立一个用户该用户的UID会增加1。
● -g<用户组>:用户组可以指定为一个已存在用户组的名称或GID,用于指定用户的初始组。在RHEL 5.x中如果不使用该选项时,会建立一个与用户名相同的ID及名称的组作为用户的初始组。
● -G<用户组…>:用户组可以指定为一个或多个已存在用户组的名称或GID,用于指定用户的额外组。如果指定多个额外组时,每个组之前使用“,”分隔。在RHEL 5.x中如果不使用该选项时,是不会给用户指定额外组的。
● -c <说明信息>:指定用户的说明信息,这个就是“/etc/passwd”文件中第5列的说明内容。
● -d<目录>:指定某个目录作为该用户家目录。在RHEL 5.x中如果不使用该选项时,会在“/home”目录中建立一个与用户名相同的目录作为该用户的家目录。
● -s<Shell>:指定用户的登录Shell。在RHEL 5.x中如果不使用该选项时,会为用户指定“/bin/bash”作为登录Shell。
● -M:不建立用户家目录。
● -m:建立用户家目录。在RHEL 5.x中如果不指定“-M”或“-m”时,会根据“/etc/login.defs”文件中“CREATE_HOME”选项决定是否建立用户家目录。
useradd用于建立用户,用户建立完成后还需要通过“passwd”命令指定用户的密码。该命令执行完成后,信息将会保存在“/etc/passwd”文件中。该命令默认只有root用户可以使用。下面看几个useradd命令的例子。
● 建立一个名为“charles”的用户。
[root@srv ~]# useradd charles
● 建立一个名为“jack”的用户,并指定其用户说明信息为“JackBauer”。
[root@srv ~]# useradd jack -c JackBauer
● 建立一个名为“nina”的用户,并指定其登录脚本为“/sbin/nologin”(该用户不能登录到系统)。
[root@srv ~]# useradd nina -s /sbin/nologin
● 建立一个名为“house”的用户,并指定其UID为999。
[root@srv ~]# useradd house -u 999
● 建立一个名为“olivia”的用户,并指定其初始组为“charles”。
[root@srv ~]# useradd olivia -g charles
● 建立一个名为“claire”的用户,并指定其家目录为“/home/heroes”。
[root@srv ~]# useradd claire -d /home/heroes
5.2.2 passwd:更改用户密码
passwd命令用于指定或更改用户密码,该命令语法如下。
passwd [-luS] [-n <天数>] [-x <天数>] [-w <天数>] [用户名]
常用指数:
常用选项:
● 用户名:指定需要指定或更改密码的用户。
● -l:将指定用户锁定,实际就是在“/etc/shadow”文件中该用户对应行第2列的第一个字符前插入一个“!”。
● -u:将锁定的用户解锁。
● -S:显示指定用户与密码相关的信息。
● -n<天数>:指定密码最短更改时间,实际就是在“/etc/shadow”文件中该用户对应行第4列的内容。
● -x<天数>:指定密码最长使用时间,实际就是在“/etc/shadow”文件中该用户对应行第5列的内容。
● -w<天数>:指定密码更改警告时间,实际就是在“/etc/shadow”文件中该用户对应行第6列的内容。
passwd命令可以让用户更改自己的密码,所有用户必须在指定密码后才有可能登录到系统。root用户可以通过该命令管理其他用户的密码。在使用passwd命令时如果不指定用户则是修改当前用户的密码,实际上也只有root用户可以在该命令中指定用户名。下面看几个passwd命令的例子。
● 更改用户“charles”的密码(当前root用户登录)。
[root@srv ~]# passwd charles
Changing password for user charles.
New UNIX password: #指定密码。
● 该提示是一个警告表示指定的密码太简单。在RHEL 5.x中只有root用户可以指定简单的密码,如果是一般用户该警告会是一个错误,一般用户必须重新指定一个复杂的密码。
BAD PASSWORD: it is based on a dictionary word Retype new UNIX password: #再次输入密码。 passwd: all authentication tokens updated successfully.
● 更改当前用户的密码(当前使用“charles”用户登录)。
[charles@srv ~]$ passwd
Changing password for user charles.
Changing password for charles
(current) UNIX password: #首先要输入当前的密码。
New UNIX password: #指定新的密码。
Retype new UNIX password: #再次输入新的密码。
passwd: all authentication tokens updated successfully.
● 将用户“olivia”锁定。
[root@srv ~]# passwd -l olivia
Locking password for user olivia.
passwd: Success
5.2.3 usermod:更改用户信息
usermod命令用于更改用户的信息,该命令语法如下。
usermod [-LUa] [-e <日期>] [-l <用户名称>] [-u <UID>] [-d <目录>] [-g <用户组>] [-G <用 户组…>] [-c <说明信息>] [-s <Shell>] 用户名
常用指数:
常用选项:
● 用户名:要更改信息的用户名。
● -c <说明信息>:更改用户的说明信息,这个就是“/etc/passwd”文件中第5列的说明内容。
● -d<目录>:更改用户家目录。
● -e <日期>:更改用户失效日期。指定日期的格式是“YYYY-MM-DD”,这个就是“/etc/shadow”文件中第8列的内容。
● -g<用户组>:用户组可以指定为一个已存在用户组的名称或GID,用于更改用户的初始组。
● -G<用户组…>:用户组可以指定为一个或多个已存在用户组的名称或GID,用于指定用户的额外组。如果指定多个额外组时,每个组之前使用“,”分隔。该选项会首先将指定用户原先的额外组全部删除。
● -a:追加该用户新的额外组,该选项使用时必须与“-G”选项一起使用。
● -l<用户名称>:修改指定用户的用户名。
● -s<Shell>:更改用户的登录Shell。
● -u<UID>:更改用户的UID。
● -L:锁定用户。
● -U:将锁定用户解锁。
usermod命令可以修改用户的相关信息,该命令只有root用户可以使用。在使用usermod命令时要注意修改后可能造成一个系统使用的问题。下面看几个usermod命令的例子。
● 将用户“jack”的说明信息修改为“24”。
[root@srv ~]# usermod -c 24 jack
● 将用户“olivia”原有的额外组删除并为其增加一个名为“fringe”的额外组。
[root@srv ~]# usermod -G fringe olivia
● 为“claire”用户增加一个名为“heroes”的新额外组。
[root@srv ~]# usermod -aG heroes claire
5.2.4 userdel:删除用户
userdel命令用于删除用户,该命令语法如下。
userdel [-r] 用户名
常用指数:
常用选项:
● 用户名:要删除的用户名。
● -r:删除用户家目录。
userdel命令用户删除用户,该命令只有root用户可以使用。如果不使用“-r”选项时,删除用户后会保留该用户家目录。下面看几个userdel命令的例子。
● 删除名为“nina”的用户,但保留其家目录。
[root@srv ~]# userdel nina
● 删除名为“claire”的用户,同时删除其家目录。
[root@srv ~]# userdel -r claire
5.2.5 groupadd:建立用户组
groupadd命令用于建立用户组,该命令语法如下。
groupadd [-g <GID>] 用户组
常用指数:
常用选项:
● 用户组:要建立用户组的名称。
● -g <GID>:GID是一个整数,直接指定用户组的GID。在RHEL 5.x中如果不使用该选项时,用户组的GID会从500开始,每建立一个用户组该用户组的GID会增加1。
groupadd用于建立用户组。该命令执行完成后,信息将会保存在“/etc/group”文件中。该命令默认只有root用户可以使用。下面看几个groupadd命令的例子。
● 建立一个名为了“gossipgirl”的组。
[root@srv ~]# groupadd gossipgirl
● 建立一个名为了“weeds”的组,并指定GID为“999”。
[root@srv ~]# groupadd -g 999 weeds
5.2.6 groupmod:更改GID及组名称
groupmod命令用于更改GID及组名称,该命令语法如下。
groupmod [-g <GID>] [-n <用户组名称>] 用户组
常用指数:
常用选项:
● 用户组:要更改用户组的名称。
● -n<用户组名称>:修改指定用户组的名称。
● -g<GID>:更改用户组的GID。
groupmod用于更改GID及用户组名称。下面看几个groupmod命令的例子。
● 将一个名为“olivia”的用户组名称改为“fringe”。
[root@srv ~]# groupmod olivia -n fringe
5.2.7 groupdel:删除用户组
groupdel命令用于删除用户组,该命令语法如下。
groupdel用户组
常用指数:
常用选项:
● 用户组:要删除的用户组名称。
groupdel命令用于删除用户组,如果某些用户的初始组是删除的用户组时,该用户组无法删除。下面看几个groupdel命令的例子。
● 删除一个名为“jack”的组,但用户组“jack”还是用户“jack”的初始组,而用户“jack”还存在所以不能删除该组。
[root@srv ~]# groupdel jack
groupdel: cannot remove user's primary group.
● 删除一个名为“gossipgirl”的组。
[root@srv ~]# groupdel gossipgirl
5.2.8 chage:修改用户密码策略
chage命令用于修改用户密码策略,该命令语法如下。
chage用户名
常用指数:
常用选项:
● 用户名:要修改用户密码策略的用户名称。
chage命令用于修改用户密码策略。下面看几个chage命令的例子。
● 修改名为“charles”用户的密码策略。
[root@srv ~]# chage charles
Changing the aging information for charles
Enter the new value, or press ENTER for the default
Minimum Password Age [0]: #密码最短更改时间,“0”表示不限制。
Maximum Password Age [99999]: #密码最长使用时间,“99999”表示不限制。
Last Password Change (YYYY-MM-DD) [2010-02-14]: #最近更动密码的日期。
Password Expiration Warning [7]: #密码更改警告时间。
Password Inactive [-1]: #密码过期的时间。
Account Expiration Date (YYYY-MM-DD) [1969-12-31]:#用户失效日期。
5.2.9 finger:查找并显示用户信息
finger命令用于查找并显示用户信息,该命令语法如下。
finger [-lmsp][用户名...]
常用指数:
常用选项:
● 用户名...:要查找并显示信息的用户名。
● -l:显示该用户的名称、用户说明信息、用户家目录、登录的Shell、登录时间、邮件地址、电子邮件状态、计划文件和方案文件内容。
● -m:不显示查找用户的用户说明信息。
● -s:显示该用户名称、用户说明信息、登录终端、闲置时间、登录时间及地址和电话。
● -p:显示该用户名称、用户说明信息、用户家目录、登录的Shell、登录时间、邮件地址、电子邮件状态,但不显示该用户的计划文件和方案文件内容。
finger命令会查找,并显示指定用户相关信息,如果不显示用户则会显示当前登录的所有用户的信息。下面看几个finger命令的例子。
● 查找并显示root用户的信息。
[root@srv ~]# finger root
Login: root Name: root
Directory: /root Shell: /bin/bash
On since Sun Feb 14 09:51 (CST) on pts/1 from 192.168.159.159
On since Sun Feb 14 16:36 (CST) on pts/3 from 192.168.159.159
10 minutes 31 seconds idle
New mail received Sun Feb 14 10:382010 (CST)
Unread since Wed Feb 10 02:122010 (CST)
No Plan.
5.2.10 w:显示当前登录系统的用户及用户进程信息
w命令用于显示当前登录系统的用户及用户进程信息,该命令语法如下。
w [-fhlsu] [用户名]
常用指数:
常用选项:
● 用户名:需要显示登录信息的用户名。
● -f:显示用户从何处登录,在RHEL 5.x中默认会使用该选项。
● -h:不显示各列标题行。
● -l:使用详细格式列表,在RHEL 5.x中默认会使用该选项。
● -s:使用简洁格式,不显示用户登录时间等信息。
● -u:忽略执行程序的名称,以及该程序使用CPU时间的信息。
w命令可以显示当前登录系统的用户及这些用户正在执行的程序。不指定用户名时会显示所有用户的信息,指定用户名后只显示指定用户的相关信息。下面看几个w命令的例子。
[root@srv ~]# w
● 该行显示的内容分别表示:当前时间、系统启动到现在的时间、登录用户的数目、系统在最近1秒、5秒和15秒的平均负载。
16:08:25 up 6:37, 2 users, load average: 0.00, 0.00, 0.00
● 该行是标题行,从下一行开始才是显示的数据。其中每列分别表示:登录账号、终端名称、远程主机名、登录时间、空闲时间、JCPU、PCPU、当前正在运行进程的命令行。
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/1 192.168.159.159 09:51 0.00s 0.59s 0.01s w charles pts/2 192.168.159.159 09:51 1:33m 0.06s 0.06s -bash
提示
JCPU时间指的是和该终端(TTY)连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间。而PCPU时间则是指当前进程(即在WHAT项中显示的进程)所占用的时间。
5.2.11 who:显示当前登录系统的用户信息
who命令用于显示当前登录系统的用户信息,该命令语法如下。
who [ami] [-bdHlpqru]
常用指数:
常用选项:
● ami:只显示与自己相关的登录信息。
● -b:显示系统最后一次启动的时间。
● -d:显示死进程。
● -H:各列标题行。
● -l:显示登录进程号。
● -p:显示由init生成子进程。
● -q:显示登录的用户数。
● -r:当前的运行级别(有关运行级别见第10章)。
● -u:显示当前登录的用户。
who命令用于显示当前登录系统的用户信息。who命令不使用任何选项时会显示登录用户、使用的终端、登录时间、从何处登录。下面看几个who命令的例子。
● 显示当前登录系统的用户信息。
[root@srv ~]# who
root pts/1 2010-02-14 09:51 (192.168.159.159)
charles pts/2 2010-02-14 09:51 (192.168.159.159)
● 只显示与自己相关的登录信息。
[root@srv ~]# whoami
root
● 显示当前的运行级别。
[root@srv ~]# who -r
run-level 5 2010-02-14 09:31 last=S
5.2.12 last:显示当前及过去登录系统的用户信息
last命令用于显示当前及过去登录系统的用户信息,该命令语法如下。
last [-adRx] [- <显示列数>][用户名...][终端编号...]
常用指数:
常用选项:
● 终端编号...:只显示指定终端的登录信息。
● 用户名...:只显示指定用户的登录信息。
● -a:将从何处登录系统的主机名称或IP地址,显示在最后一行。
● -d:将IP地址转换成主机名称。
● -<显示列数>:设置列出名单的显示列数。
● -R:不显示登录系统的主机名称或IP地址。
● -x:显示系统关机,重新开机,以及执行等级的改变等信息。
last命令在默认情况下,会读取位于“/var/log”目录下的“wtmp”文件,并把该文件的内容记录的登录系统的用户信息显示。下面看几个last命令的例子。
● 显示当前及过去登录系统的用户信息,但只显示5行。
root@srv ~]# last -5
tonyzhan tty1 Sun Feb 14 16:53 still logged in
root tty1 Sun Feb 14 16:52-16:52 (00:00)
root pts/3 192.168.159.159 Sun Feb 14 16:36 still logged in
root pts/3 192.168.159.159 Sun Feb 14 15:50-15:50 (00:00)
tonyzhan pts/2 192.168.159.159 Sun Feb 14 09:51 still logged in
wtmp begins Fri Jan 29 19:35:412010
● 显示终端“tty1”的登录信息。
[root@srv ~]# last tty1
tonyzhan tty1 Sun Feb 14 16:53 still logged in
root tty1 Sun Feb 14 16:52-16:52 (00:00)
wtmp begins Fri Jan 29 19:35:412010