用户,用户组
Linux是一个多用户多任务的系统,一个系统上可能会有多个用户。而每个用户都属于一个或多个用户组(至少要属于一个组)。
用户管理
查询信息
某个用户的信息
1
2
3
4
5id [User]
# 例
zuo@zuo-VirtualBox:~$ id zuo
uid=1000(zuo) gid=1000(zuo) 组 =1000(zuo),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)- uid: 用户id号
- gid: 所在组的组id号
- 组:所在组的名称
finger
1
2
3
4
5
6
7
8
9
10
11
12finger [-s] username
选项与参数:
-s :仅列出用户的账号、全名、终端机代号与登陆时间等等;
-m :列出与后面接的账号相同者,而不是利用部分比对 (包括全名部分)
# 例
zuo@zuo-VirtualBox:/home$ finger zuo
Login: zuo Name: Zuo YiPing
Directory: /home/zuo Shell: /bin/bash
On since Mon Jul 16 13:06 (CST) on :0 from :0 (messages off)
No mail.
No Plan.查询当前用户
1
2
3
4
5
6# 查询当前用户
whoami
# 例
zuo@zuo-VirtualBox:/home$ whoami
zuo列出所有用户
1
cat /etc/passwd |cut -f 1 -d:
添加用户
1 | zuo@zuo-VirtualBox:~/桌面$ useradd --help |
不过需要注意一点,而在Ubuntu下直接使用useradd user
创建用户不会在/home下自动创建与用户名同名的用户目录,而且不会自动选择shell版本,也没有设置密码,那么这个用户是不能登录的,需要使用passwd命令修改密码 , 可以使用adduser user
来替代。
个人更喜欢使用adduser
:
1 | # 添加普通用户 |
删除用户
1 | # 删除用户,保留家目录 |
事实上实际工作中,我们都会保留家目录。
用户信息修改
修改密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18用法:passwd [选项] [账户]
选项(部分):
-a, --all 报告所有帐户的密码状态
-d, --delete 删除指定帐户的密码
-e, --expire 强制使指定帐户的密码过期
# 默认不带任何选项是指修改账户的密码,如果连账户也不带是修改自身的密码
zuo@zuo-VirtualBox:~$ passwd
更改 zuo 的密码。
(当前)UNIX 密码:
passwd:认证令牌操作错误
passwd:密码未更改
zuo@zuo-VirtualBox:~$ sudo passwd AUser
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:认证令牌操作错误
passwd:密码未更改
zuo@zuo-VirtualBox:~$用户修改
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21用法:usermod [选项] UserName
选项:
-c, --comment 注释 后面接账号的说明,即设置GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
# 一般 -a 和 -G 放在一起用
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
切换用户
登录时尽量少用root帐号登录,因为它是系统管理员,最大的权限,避免操作失误,可以利用普通用户登录,登录后再用切换成系统管理员身份,切换方式如下:
su [username]
切换成username用户,默认是root。但不改变工作环境。
su - [username]
切换成username用户,默认是root。改变工作环境。
二者的区别:
1 | # 可以看到并没有更改环境 |
要退出的话可以输入exit
或者Ctrl+D
。
退出/注销
logout
logout
注销指令在图形运行级别无效,在运行级别3下有效exit
Ctrl+D
组
添加一个组
1 | 用法:groupadd [选项] 组 |
删除组
1 | 用法:groupdel [选项] 组 |
组的管理
组本身的信息管理:
groupmod
跟 usermod 类似的,这个命令仅是在进行 group 相关参数的修改而已。
1
2
3
4
5用法:groupmod [选项] 组
选项(部分):
-g, --gid GID 将组 ID 改为 GID
-n, --new-name NEW_GROUP 改名为 NEW_GROUP组员管理(群组管理员功能):
gpasswd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27用法:gpasswd [选项] 组
选项:
-a, --add USER 向组 GROUP 中添加用户 USER
-d, --delete USER 从组 GROUP 中添加或删除用户
-Q, --root CHROOT_DIR 要 chroot 进的目录
-r, --remove-password 移除组 GROUP 的密码
-R, --restrict 向其成员限制访问组 GROUP
-M, --members USER,... 设置组 GROUP 的成员列表
-A, --administrators ADMIN,... 设置组的管理员列表
# 例
# 将刘备从蜀国中删除
root@zuo-VirtualBox:/home# gpasswd -d LiuBei ShuGuo
正在将用户“LiuBei”从“ShuGuo”组中删除
root@zuo-VirtualBox:/home# 注销
# 普通用户zuo没有权限
zuo@zuo-VirtualBox:/home$ gpasswd -a LiuBei ShuGuo
gpasswd:没有权限。
zuo@zuo-VirtualBox:/home$ su -
密码:
# 赋予用户zuo组管理员权限
root@zuo-VirtualBox:~# gpasswd -A zuo ShuGuo
root@zuo-VirtualBox:~# 注销
# 用户zuo有权限管理了
zuo@zuo-VirtualBox:/home$ gpasswd -a LiuBei ShuGuo
正在将用户“LiuBei”加入到“ShuGuo”组中
文件存储
不论是用户还是组,其信息都放在文件中保存,注意以下的示例中的x
意味着被加密,无法看见。 - 保存用户的文件: /etc/passwd
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
sshd:x:122:65534::/run/sshd:/usr/sbin/nologin
LiuBei:x:1002:1002:,,,:/home/LiuBei:/bin/bash
保存口令/密码的文件: /etc/shadow
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
保存组的文件: /etc/group 组(group)的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表 >vboxsf:x:999:
>LiuBei:x:1002:
>ShuGuo:x:1003:LiuBei