ubuntu文件管理怎样设置权限更安全
小樊
40
2025-11-23 04:51:51
Ubuntu 文件与目录权限安全设置指南
一 核心原则与权限基础
- 坚持最小权限原则:仅授予完成工作所必需的最小权限,避免使用777或过度递归修改。
- 理解权限对文件与目录的不同影响:
- 文件:r 查看内容,w 修改内容,x 执行(脚本/二进制)。
- 目录:r 列出条目,w 创建/删除条目,x 进入目录;删除文件取决于目录的w与x,而非文件自身权限。
- 三类主体:所有者 u / 所属组 g / 其他 o;权限位用rwx表示,可用数字模式(如 755、644)或符号模式(如 u+x、g-w、o=r)设置。
二 常用命令与典型安全配置
- 查看与修改
- 查看权限:
ls -l /path
- 修改权限:
chmod 755 file|dir(目录常用),chmod 644 file(常规文件)
- 递归设置:
chmod -R 755 /path(谨慎使用 -R)
- 修改所有者/组:
sudo chown user:group file|dir,递归:sudo chown -R user:group /path
- 典型安全配置
- 可执行程序/目录:755(rwxr-xr-x)
- 普通文件:644(rw-r–r–)
- 私有文件(密钥、配置):600(rw-------)
- 共享目录(组内协作):770(rwxrwx—),并将目录所属组设为共享组,必要时用
setgid 让新建文件继承组
- 临时共享目录(如 /tmp 风格):1777(rwxrwxrwt,Sticky Bit 仅允许属主删除)
- 特殊权限位
- SUID(4):以文件所有者权限执行(如 passwd)
- SGID(2):目录继承所属组;文件以所属组执行
- Sticky Bit(1):目录内仅文件属主可删除
- 建议:仅在确有必要时启用,并严格审计。
三 进阶控制与加固
- 访问控制列表 ACL(细粒度授权)
- 为用户/组授予超出传统 u/g/o 的权限:
setfacl -m u:alice:rwx /data
- 查看:
getfacl /data
- 递归与默认 ACL(目录新建文件继承):
setfacl -R -d -m g:devs:rwx /data
- 强制访问控制 MAC
- Ubuntu 默认提供 AppArmor,可为关键服务(如 nginx、mysqld)加载受限策略,限制越权访问;必要时再考虑 SELinux。
- 不可变属性防误删/篡改
- 重要文件加不可变位:
sudo chattr +i /path/file(撤销:sudo chattr -i /path/file)
- 系统级关键文件与目录
- 确保系统身份与配置文件的权限正确,例如:/etc/passwd、/etc/group、/etc/shadow、/etc/hosts.allow、/etc/hosts.deny 等,避免被非授权修改。
四 风险排查与持续维护
- 风险扫描
- 查找过度开放权限的文件/目录:
find /path -perm /o+w(其他可写)、find /path -perm /700(仅所有者全权)、find / -xdev -type f -perm -4000 -ls(SUID 文件)、find / -xdev -type f -perm -2000 -ls(SGID 文件)
- 审计与监控
- 使用 journalctl 与系统日志跟踪访问与异常行为,结合服务日志定位权限导致的故障。
- 变更与回滚
- 权限批量变更前先备份当前权限:
getfacl -R /data > acl-backup.txt
- 必要时按备份恢复:
setfacl --restore=acl-backup.txt
- 安全运维习惯
- 定期更新系统与软件包;日常使用普通用户 + sudo,仅在必要时提权;对公网服务最小化端口与暴露面。
五 场景化配置示例
- 私有家目录
- 设置:
chmod **700** ~,chown **$USER:$USER** ~
- 说明:仅属主可读写与进入,杜绝同机其他用户访问。
- Web 服务目录(以 www-data 运行)
- 设置:
sudo chown -R www-data:www-data /var/www/html,find /var/www/html -type d -exec chmod **755** {} \;,find /var/www/html -type f -exec chmod **644** {} \;
- 说明:目录需 x 才能被访问,文件不需执行权限。
- 共享开发目录(组内协作)
- 设置:
sudo chown -R :devs /data,sudo chmod **770** /data,sudo chmod **g+s** /data(新建文件继承组),按需添加 ACL:setfacl -d -m g:devs:rwx /data
- 说明:组内成员可共同读写,其他用户无权限。