Ubuntu的文件权限分为三级:
每个层级的权限包括读(r,4)、写(w,2)、执行(x,1),权限值通过数字相加组合(如rwx=4+2+1=7)。
ls -l命令使用ls -l可查看文件/目录的详细权限信息,例如:
ls -l filename
输出结果示例:
-rw-r--r-- 1 username groupname 4096 Jan 1 00:00 filename
-=普通文件,d=目录);rw-=读写);r--=只读);r--=只读)。chmod命令chmod是调整权限的核心命令,支持数字表示法和符号表示法:
通过三位数字组合设置所有者、所属组、其他用户的权限,例如:
chmod 755 filename:所有者(7=rwx)、所属组(5=r-x)、其他用户(5=r-x),适用于目录/可执行程序(如网站根目录、脚本文件);chmod 644 filename:所有者(6=rw-)、所属组(4=r–)、其他用户(4=r–),适用于普通文本文件(如配置文件、日志文件);chmod 700 filename:所有者(7=rwx),所属组和其他用户无权限,适用于敏感文件(如私钥、数据库文件)。通过u(所有者)、g(所属组)、o(其他用户)、a(所有用户)配合+(添加)、-(删除)、=(设置)调整权限,例如:
chmod u+w filename:给所有者添加写权限;chmod g-x filename:删除所属组的执行权限;chmod o=r filename:设置其他用户为只读权限;chmod a+x script.sh:给所有用户添加执行权限(如启动脚本)。使用-R参数可递归修改目录及其所有子文件/子目录的权限,例如:
chmod -R 755 /path/to/directory # 将目录及子项设置为所有者rwx、组和其他r-x
⚠️ 注意:递归修改需谨慎,尤其是对系统目录(如/etc),避免误操作导致系统故障。
chown与chgrp命令权限控制需结合所有者和所属组调整,常用命令如下:
chownsudo chown newowner filename # 仅修改所有者(如将文件所有者改为当前用户)
sudo chown newowner:newgroup filename # 同时修改所有者和所属组(如将文件所有者改为user1,所属组改为dev)
⚠️ 注意:修改系统文件的所有者需用sudo,避免权限不足。
chgrpsudo chgrp newgroup filename # 修改文件所属组(如将文件所属组改为developers)
同样,修改系统文件的所属组需用sudo。
若需为单个用户或组设置更细粒度的权限(如允许某用户对目录有写权限但不改变所有者),可使用ACL(Access Control List):
sudo apt install acl # Ubuntu默认仓库包含acl,直接安装即可
setfacl -m u:username:rwx directory/(允许用户username对directory/有读写执行权限);setfacl -m g:groupname:r-x directory/(允许组groupname对directory/有读执行权限);getfacl directory/(显示目录的ACL规则);setfacl -x u:username directory/(删除用户username的ACL权限)。避免过度开放权限:
chmod 777(所有用户可读写执行),这会导致敏感文件泄露或被篡改;/etc/shadow、私钥)应设置为600(仅所有者可读写)。定期检查权限:
使用ls -l或find /path -type f -perm 777(查找所有权限为777的文件)排查异常权限。
结合SELinux/AppArmor:
启用SELinux(sudo apt install selinux-utils)或AppArmor(默认开启),限制程序的权限范围,防止越权访问。
备份重要文件:
修改权限前备份重要文件(如cp filename filename.bak),避免误操作导致数据丢失。
通过以上步骤,可灵活控制Ubuntu中文件/目录的访问权限,兼顾系统安全与使用便利性。