当前位置:首页>Linux>Linux权限设置控制

Linux权限设置控制

  • 2026-09-09 06:11:03
Linux权限设置控制

1. 基础权限系统

文件/目录权限结构

-rwxrwxrwx
↑   ↑   ↑
|   |   └── 其他用户权限
|   └── 所属组权限
└── 所有者权限

权限表示

  • 字母表示:r(读=4)、w(写=2)、x(执行=1)

  • 数字表示:rwx = 4+2+1 = 7

2. 常用命令

查看权限

ls-l# 查看详细信息
ls-la# 查看所有文件(包括隐藏文件)
stat filename   # 查看详细权限信息

修改权限 chmod

# 数字模式
chmod755 file.txt      # rwxr-xr-x
chmod644 file.txt      # rw-r--r--
chmod600 file.txt      # rw-------

# 符号模式
chmod u+x file.txt      # 给所有者添加执行权限
chmod g-w file.txt      # 从所属组移除写权限
chmodo=r file.txt      # 其他用户只读
chmod a+x file.txt      # 给所有用户添加执行权限
chmodu=rwx,g=rx,o= file.txt  # 分别设置

修改所有者 chown

chown user file.txt              # 修改所有者
chown user:group file.txt        # 同时修改所有者和组
chown :group file.txt            # 只修改组
chown-R user:group directory/   # 递归修改目录

修改所属组 chgrp

chgrp group file.txt
chgrp -R group directory/

3. 特殊权限

SetUID (4)

  • 文件执行时以文件所有者身份运行

    chmod u+s file      # 设置SetUID
    chmod4755 file     # 数字方式
    ls-l /usr/bin/passwd  # 典型示例

SetGID (2)

  • 文件:以文件所属组身份运行

  • 目录:在该目录创建的文件继承目录的组

    chmod g+s file      # 设置SetGID
    chmod2755 dir/     # 目录SetGID

Sticky Bit (1)

  • 目录:只有文件所有者可以删除自己的文件

    chmod+t dir/       # 设置粘滞位
    chmod1777 /tmp     # /tmp目录典型权限

4. 权限掩码 umask

查看和设置

umask              # 查看当前umask
umask 022# 设置umask
umask -S# 符号形式显示

计算方法

  • 默认文件权限:666 - umask

  • 默认目录权限:777 - umask

  • 示例:umask=022 → 文件644,目录755

5. ACL(访问控制列表)

高级权限控制

# 安装ACL工具(如果需要)
sudo apt install acl  # Ubuntu/Debian
sudo yum install acl  # RHEL/CentOS

# 查看ACL
getfacl file.txt

# 设置ACL
setfacl -m u:username:rwx file.txt    # 给用户添加权限
setfacl -m g:groupname:rx file.txt    # 给组添加权限
setfacl -x u:username file.txt        # 删除用户ACL条目
setfacl -b file.txt                   # 删除所有ACL条目

# 递归设置目录
setfacl -R-m u:username:rwx dir/

# 默认ACL(影响新创建的文件)
setfacl -d-m u:username:rwx dir/

6. 实用示例

常见权限配置

# 网页文件
chmod755 /var/www/html/           # 目录
chmod644 /var/www/html/*.html     # 网页文件

# 用户家目录
chmod700 /home/username           # 私有目录
chmod755 /home/public             # 公开目录

# 脚本文件
chmod+x script.sh                 # 添加执行权限

# 配置文件
chmod600 ~/.ssh/id_rsa            # 私钥文件
chmod644 ~/.ssh/id_rsa.pub        # 公钥文件
chmod700 ~/.ssh                   # SSH目录

权限检查脚本示例

#!/bin/bash
# 检查特定目录权限
echo"Checking permissions for /etc/passwd:"
ls-l /etc/passwd

echo-e"\nChecking home directory permissions:"
find /home -maxdepth1-type d -execls-ld {} \;

echo-e"\nChecking SUID files:"
find / -perm-4000-type f 2>/dev/null | head -10

7. 安全最佳实践

最小权限原则:只授予必要权限

定期审计:检查权限设置

使用组管理:通过组分配权限而非个人用户

重要文件保护

chattr +i important_file    # 不可修改
chattr +a log_file          # 只追加

监控权限变更:使用auditd等工具

8. 权限故障排查

# 为什么无法访问?
ls-la file.txt          # 检查权限
id                       # 检查用户和组
groups username          # 查看用户所属组
getfacl file.txt         # 检查ACL
lsattr file.txt          # 检查特殊属性

最新文章

随机文章