深入学习 Linux 用户与权限管理

chown 命令

1
2
# 把 /var/www/html 的所有者改成 www-data,组也改成 www-data
sudo chown -R www-data:www-data /var/www/html # -R 递归, 可以只改所以者, 也可以只改所有组

用户与组管理

用户管理命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 创建用户(需要sudo权限)
sudo useradd -m -s /bin/bash bob # -m: 创建家目录 -s: 指定默认shell 直接运行, 这个用户是Lock状态的

# 设置用户密码
sudo passwd bob

# 配置sudo权限
visudo

# 修改用户属性
sudo usermod -aG sudo bob # 将bob添加到sudo组(debian系是sudo group/red hat系是wheel group) big wheel 大人物
id bob # 查看用户当前状态
sudo usermod -s /bin/zsh bob # 修改默认shell
sudo usermod -L bob # 锁定用户账户(bob临时休假, 锁定只影响密码认证)
sudo passwd -S bob # 查看锁定状态 L表示锁定
sudo usermod -U bob # 解锁用户账户

# 删除用户
sudo userdel -r bob # -r: 同时删除家目录和邮件

组管理命令

具体项目开发权限分配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建组
sudo groupadd developers

# 查看组成员
getent group developers

# 将用户添加到组
sudo gpasswd -a alice developers

# 从组中移除用户
sudo gpasswd -d bob developers

# 删除组
sudo groupdel developers

suid 和 sgid

suid

1
2
3
4
# 设置SUID:执行文件时以文件所有者身份运行
ls -l /usr/bin/passwd
# 输出:-rwsr-xr-x(s表示SUID) 典型的使用suid示例
chmod 4755 # 4代表suid

sgid

1
2
3
# 对文件:以文件所属组身份运行
# 对目录:在该目录创建的文件继承目录的组
chmod 2755 # 2代表sgid

sticky bit

1
2
3
4
# 仅对目录有效:用户只能删除自己创建的文件
# 常用于/tmp目录

chmod 1777 shared_dir # 1表示Sticky Bit

acl

检查是否启动 acl

1
sudo tune2fs -l /dev/sda3 | grep "Default mount options:"