常见权限错误
“Permission denied”
# 查看文件权限
ls -la /path/to/file
# 查看当前用户和所属组
id“Operation not permitted”
通常需要 root 权限,使用 sudo:
sudo 命令文件权限基础
-rwxr-xr-- 1 user group 4096 Mar 24 10:00 file.txt
│├─┤├─┤├─┤
│ │ │ └── 其他用户:r-- (读)
│ │ └───── 组用户:r-x (读+执行)
│ └───────── 文件所有者:rwx (读+写+执行)
└─────────── 文件类型(- 普通文件,d 目录,l 链接)常见场景修复
无法编辑配置文件
# /etc 下的配置文件属于 root
sudo nano /etc/xxx/config.conf
# 或临时修改权限(不推荐用于系统文件)
sudo chmod 666 /path/to/file无法执行脚本
# 添加执行权限
chmod +x script.sh
# 仅所有者可执行
chmod u+x script.shWeb 服务目录权限
# 典型 Web 目录权限设置
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
sudo chmod -R 644 /var/www/html/*.html挂载硬盘无法写入
NTFS 或 FAT32 分区权限由挂载参数控制:
# 查看当前挂载
mount | grep /dev/sd
# 重新挂载 NTFS 为可写
sudo mount -o rw,uid=$(id -u),gid=$(id -g) /dev/sdX1 /mnt/data
# 在 /etc/fstab 中配置
# UUID=xxx /mnt/data ntfs-3g defaults,uid=1000,gid=1000 0 0SSH 密钥权限
SSH 对密钥文件权限有严格要求:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/config用户主目录权限被改
# 恢复主目录权限
sudo chown -R $USER:$USER ~/
chmod 755 ~/sudo 相关问题
用户不在 sudo 组
# 需要以 root 登录或使用恢复模式
su - root
usermod -aG sudo 用户名
# 用户需注销重新登录sudo 密码错误
如果忘记密码,通过恢复模式重置:
- GRUB 菜单 > Advanced options > Recovery mode
- 选择 root 命令行
- 执行:
passwd 用户名
/etc/sudoers 语法错误导致 sudo 失效
# 使用 pkexec 修复(无需 sudo)
pkexec visudo
# 或从恢复模式修复
# 确保 /etc/sudoers 包含:
# %sudo ALL=(ALL:ALL) ALL特殊权限
SUID/SGID/Sticky Bit
# 设置 SUID(以文件所有者身份执行)
chmod u+s /path/to/file
# 设置 SGID(新建文件继承目录的组)
chmod g+s /path/to/directory
# 设置 Sticky Bit(仅所有者可删除目录中的文件)
chmod +t /path/to/directoryACL 扩展权限
# 安装 ACL 工具
sudo apt install acl
# 设置特定用户权限
setfacl -m u:用户名:rwx /path/to/file
# 查看 ACL
getfacl /path/to/file
# 移除 ACL
setfacl -b /path/to/fileAppArmor 限制
Ubuntu 使用 AppArmor 进行强制访问控制:
# 查看 AppArmor 状态
sudo aa-status
# 临时将某个程序设为宽容模式
sudo aa-complain /usr/bin/程序名
# 禁用某个配置文件
sudo aa-disable /etc/apparmor.d/某配置排查思路总结
- 先用
ls -la确认文件的所有者、组和权限位 - 用
id确认当前用户身份 - 检查用户是否属于需要的组:
groups 用户名 - 检查 AppArmor 或 SELinux 是否有限制
- 检查挂载选项(特别是外部分区)
Last updated on