添加用户
useradd或者adduser。其实adduser是useradd的一个软连接。以useradd为例,其用法为 useradd [option] USERNAME
1 [[email protected] ~]# ll `which adduser` 2 lrwxrwxrwx. 1 root root 7 5月 26 14:21 /usr/sbin/adduser -> useradd
-u 指定新添加用户的UID,不过根据规定,普通用户的UID必须大于499且不能和已存在的UID重复。
1 [[email protected] ~]# useradd -u 1010 user1 2 [[email protected] ~]# tail -1 /etc/passwd 3 user1:x:1010:1010::/home/user1:/bin/bash
-g 指定新添加用户的基本组,可以使用GID也可以使用组名来为其指明基本组(可以用id命令来查看用户信息)
1 [[email protected] ~]# useradd -g root user2 2 [[email protected] ~]# id user2 3 uid=1011(user2) gid=0(root) 组=0(root)
-G 指定新添加的用户的附加组,附加组可以有多个,多个附加组之间用逗号隔开。
1 [[email protected] ~]# useradd -G user1,root user3 2 [[email protected] ~]# id user3 3 uid=1012(user3) gid=1012(user3) 组=1012(user3),0(root),1010(user1)
-d 为新添加的用户指定家目录,默认情况下家目录是/home下的与用户名同名的目录。
-M 不为新用户创建家目录。
-s 为新添加的用户指定默认的shell。(系统中有一个nologin的shell可以禁止某账户登入)
1 [[email protected] ~]# useradd -s /sbin/nologin user4 2 [[email protected] ~]# su user4 3 This account is currently not available.
可以使用 echo $SHELL 来查看当前用户的shell
-r 添加新用户为系统用户,系统用户的UID在1-499之间,一般不能登入,没有家目录。
注:该命令添加的用户的部分默认参数(比如用户的默认shell)在/etc/default/useradd文件中。
查看用户信息
用id命令可以查看用户信息,用法:id [option] [USERNAME],不指定用户名时默认用户为当前用户。
-u 查看UID
-g 查看基本组的GID
-G 查看所有组的GIO
-n 和上面的选项组合使用,用于显示名称,而非id号
1 [[email protected] ~]# id -u user1 2 1010 3 [[email protected] ~]# id -un user1 4 user1 5 [[email protected] ~]# id -G user3 6 1012 0 1010 7 [[email protected] ~]# id -Gn user3 8 user3 root user1
finger命令也可以查看用户相关信息
1 [[email protected] ~]# finger user1 2 Login: user1 Name: 3 Directory: /home/user1 Shell: /bin/bash 4 Never logged in. 5 No mail. 6 No Plan.
删除用户
使用userdel命令来删除用户,不过值得注意的是userdel命令默认情况下是不会删除用户的家目录。
userdel的用法:userdel [option] USERNAME
-r 同时删除用户的家目录。
1 [[email protected] ~]# ls /home 2 boost compute EasyDrcom libpcap lost+found user1 user2 user3 user4 3 [[email protected] ~]# userdel user1 4 userdel:组“user1”没有移除,因为它包含其它成员。 5 [[email protected] ~]# userdel -r user2 6 [[email protected] ~]# ls /home 7 boost compute EasyDrcom libpcap lost+found user1 user3 user4
修该用户信息
使用usermod来修改用户的账户信息,其用法同useradd。具体实例如下:
1 [[email protected] ~]# id user3 2 uid=1012(user3) gid=1012(user3) 组=1012(user3),0(root),1010(user1) 3 [[email protected] ~]# usermod -u 505 user3 4 [[email protected] ~]# id user3 5 uid=505(user3) gid=1012(user3) 组=1012(user3),0(root),1010(user1) 6 [[email protected] ~]# finger user3 7 Login: user3 Name: 8 Directory: /home/user3 Shell: /bin/bash 9 Never logged in. 10 No mail. 11 No Plan. 12 [[email protected] ~]# usermod -g 0 -s /bin/tcsh user3 #这里该的基本组必须事先存在 13 [[email protected] ~]# !id 14 id user3 15 uid=505(user3) gid=0(root) 组=0(root),1010(user1) 16 [[email protected] ~]# !fing 17 finger user3 18 Login: user3 Name: 19 Directory: /home/user3 Shell: /bin/tcsh 20 Never logged in. 21 No mail. 22 No Plan.
-l 参数用于修改用户名
1 [[email protected] ~]# usermod -l u3 user3 2 [[email protected] ~]# id u3 3 uid=505(u3) gid=0(root) 组=0(root),1010(user1)
注:如果使用-G为用户修改附加组的话,默认情况下会覆盖原有的附加组,如果只想追加新的附加组可以使用 -aG 其中a表示追加。使用 -d 修改用户家目录的时候最好用再配合 -m 使用,其意思是修改家目录的同时把原来家目录下的文件复制一份到目的家目录。
修改用户的登入shell还可以使用 chsh (change shell)命令。其用法为 chsh USERNAME
可以用pwck来检查用户账号的完整性。
修改用户密码
使用passwd命令来修改用户的密码,用法:passwd [USERNAME]
对于普通用户来说,只能使用passwd命令,用来修改自己的密码。对于管理员来说,不仅可以使用passwd来修改自己的密码,还可以使用passwd USERNAME 命令来修改别人的密码。
passwd可以使用 --stdin 参数来指明从标准输入来获取密码。
1 [[email protected] ~]# passwd user3 2 更改用户 user3 的密码 。 3 新的 密码: 4 无效的密码: 密码未通过字典检查 - 过于简单化/系统化 5 重新输入新的 密码: 6 passwd:所有的身份验证令牌已经成功更新。 7 [[email protected] ~]# echo "123456789" | passwd user3 --stdin 8 更改用户 user3 的密码 。 9 passwd:所有的身份验证令牌已经成功更新。
-d 参数可以删除用户的密码。
组的创建
组的创建使用groupadd命令,可以使用 -g 指定GID,-r表明改组为系统组。具体用法和useradd类似,以下关于组的操作命令的用法均可参考关于用户操作的命令的用法。
组信息修改
groupmod 命令用于修改组信息,-g 修改GID,-n 修改组名。
组的删除
groupdel 命令用于删除一个组
组添加密码
使用 gpasswd 命令用于修改组密码。组密码主要用于临时改变用户所属的组。
比如下面的代码中,user3用户临时使用了user4组创建了一个b.txt文件
1 [[email protected] ~]# usermod -l user3 u3 2 [[email protected] ~]# gpasswd user4 3 正在修改 user4 组的密码 4 新密码: 5 请重新输入新密码: 6 [[email protected] ~]# su - user3 7 上一次登录:五 7月 28 06:29:18 CST 2017pts/1 上 8 [[email protected] ~]$ touch a.txt 9 [[email protected] ~]$ id 10 uid=505(user3) gid=0(root) 组=0(root),1010(user1) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 11 [[email protected] ~]$ ll 12 总用量 0 13 -rw-r--r--. 1 user3 root 0 7月 28 06:30 a.txt 14 [[email protected] ~]$ newgrp user4 15 密码: 16 [[email protected] ~]$ touch b.txt 17 [[email protected] ~]$ id 18 uid=505(user3) gid=1013(user4) 组=1013(user4),0(root),1010(user1) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 19 [[email protected] ~]$ ll 20 总用量 0 21 -rw-r--r--. 1 user3 root 0 7月 28 06:30 a.txt 22 -rw-r--r--. 1 user3 user4 0 7月 28 06:31 b.txt 23 [[email protected] ~]$ exit 24 exit 25 [[email protected] ~]$ id 26 uid=505(user3) gid=0(root) 组=0(root),1010(user1) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 27 [[email protected] ~]$ exit 28 logout 29 [[email protected] ~]#
注:上面的newgrp用于临时切换基本组,当这个临时组用完要退出时使用exit命令。