1. 首页 > Linux教程 > 正文

Linux教程FG309-权限管理

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。

风哥提示:

本文档详细介绍Linux权限管理的方法。

Part01-基础权限

1.1 文件权限管理

# 查看权限
$ ls -la /etc/passwd
-rw-r–r–. 1 root root 2847 Apr 4 10:00 /etc/passwd

# 权限说明
– 第1位: 文件类型 (- 普通文件, d 目录, l 链接)
– 第2-4位: 所有者权限
– 第5-7位: 组权限
– 第8-10位: 其他用户权限

# 修改权限
$ chmod 755 script.sh
$ chmod u+x script.sh
$ chmod g-w script.sh
$ chmod o=r script.sh

# 修改所有者
$ chown user1 file.txt
$ chown user1:group1 file.txt
$ chgrp group1 file.txt

# 递归修改
$ chmod -R 755 /var/www/html
$ chown -R apache:apache /var/www/html

# 特殊权限
# SUID (4): 以文件所有者身份执行
$ chmod u+s /usr/bin/passwd

# SGID (2): 以文件所属组身份执行
$ chmod g+s /shared/project

# Sticky bit (1): 只有所有者可以删除
$ chmod +t /tmp

# 数字表示
# SUID: 4755
# SGID: 2755
# Sticky: 1755

Part02-ACL权限

2.1 配置ACL

# 查看ACL
$ getfacl /var/www/html
# file: var/www/html
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

# 设置ACL
$ setfacl -m u:user1:rwx /var/www/html
$ setfacl -m g:developers:rwx /var/www/html
$ setfacl -m o::r-x /var/www/html

# 删除ACL
$ setfacl -x u:user1 /var/www/html
$ setfacl -b /var/www/html

# 设置默认ACL
$ setfacl -d -m u:user1:rwx /var/www/html

# 递归设置ACL
$ setfacl -R -m u:user1:rwx /var/www/html

# 复制ACL
$ getfacl file1 | setfacl –set-file=- file2

# 查看ACL掩码
$ getfacl /var/www/html | grep mask
mask::rwx

# 设置掩码
$ setfacl -m m::r-x /var/www/html

# ACL示例脚本
$ cat > /usr/local/bin/setup-acl.sh << 'EOF' #!/bin/bash DIR=$1 USER=$2 if [ -z "$DIR" ] || [ -z "$USER" ]; then echo "Usage: $0
exit 1
fi

setfacl -R -m u:$USER:rwx $DIR
setfacl -R -d -m u:$USER:rwx $DIR

echo “ACL set for $USER on $DIR”
EOF

chmod +x /usr/local/bin/setup-acl.sh

Part03-sudo配置

3.1 配置sudo权限

# 编辑sudoers
$ sudo visudo

# 基本规则
root ALL=(ALL) ALL

# 用户规则
user1 ALL=(ALL) ALL
user1 ALL=(ALL) NOPASSWD: ALL

# 组规则
%wheel ALL=(ALL) ALL
%developers ALL=(ALL) /usr/bin/systemctl, /usr/bin/yum

# 命令别名
Cmnd_Alias SOFTWARE = /usr/bin/yum, /usr/bin/dnf, /usr/bin/rpm
Cmnd_Alias SERVICES = /usr/bin/systemctl, /usr/sbin/service
Cmnd_Alias NETWORK = /usr/sbin/ip, /usr/sbin/ifconfig

# 用户别名
User_Alias ADMINS = user1, user2
User_Alias WEBMASTERS = user3, user4

# 主机别名
Host_Alias WEBSERVERS = web1, web2, web3
Host_Alias DBSERVERS = db1, db2

# 规则示例
ADMINS ALL = (ALL) ALL
WEBMASTERS 学习交流加群风哥QQ113257174WEBSERVERS = SERVICES, /usr/bin/nginx

# 限制sudo
user1 ALL=(AL学习交流加群风哥微信: itpux-comL) !/usr/bin/su, !/usr/bin/passwd

# 日志sudo
Defaults logfile=/var/log/sudo.log
Defaults log_input, log_output
Defaults iolog_dir=/var/log/sudo-io

# 包含其他配置更多学习教程公众号风哥教程itpux_com
@includedir /etc/sudoers.d

# 创建用户配置
$ sudo tee /etc/sudoers.d/user1 << 'EOF' user1 ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx user1 ALL=(ALL) NOPASSWD: /usr/bin/systemctl status nginx EOF $ sudo chmod 440 /etc/sudoers.d/user1

Part04-SELinux权限

4.1 配置SELinux

# 查看SELinux状态
$ getenforce
Enforcing

# 临时设置模式
$ sudo setenforce 0
$ sudo setenforce 1

# 永久设置模式
$ sudo sed -i ‘s/SELINUX=.*/SELINUX=enforcing/’ /etc/selinux/config

# 查看SELinux上下文
$ ls -Z /var/www/html
unconfined_u:object_r:httpd_sys_content_t:s0 index.html

# 修改SELinux上下文
$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html
$ sudo chcon -R -t httpd_sys_content_t /var/www/html

# 恢复默认上下文
$ sudo restorecon -Rv /var/www/html

# 查看布尔值
$ getsebool -a | grep httpd
httpd_can_network_connect –> off
httpd_can_network_connect_db –> off
httpd_enable_homedirs –> off

# 设置布尔值
$ sudo setsebool -P httpd_can_network_connect on
$ sudo setsebool -P httpd_can_network_connect_db on

# 查看SELinux策略
$ sesearch –allow -s httpd_t -c file

# 创建SELinux策略模块
$ cat > myapp.te << 'EOF' module myapp 1.0; require { type httpd_t; type var_log_t; class file { read open }; } allow httpd_t var_log_t:file { read open }; EOF $ checkmodule -M -m -o myapp.mod myapp.te $ semodule_package -o myapp.pp -m myapp.mod $ sudo semodule -i myapp.pp # 排除SELinux问题 $ sudo ausearch -m avc -ts recent $ sudo audit2allow -w -a $ sudo audit2allow -a -M mypolicy $ sudo semodule -i mypolicy.pp

风哥针对权限管理建议:
1. 遵循最小权限原则
2. 使用ACL精细控制
3. 配置sudo审计
4. 启用SELinux
5. 定期审查权限

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息