CentOS文件系统权限分为三类:所有者权限(Owner)、组权限(Group)、其他用户权限(Others)。每类权限包含读(r)、写(w)、**执行(x)**三种类型,可通过ls -l命令查看(如-rw-r--r--表示所有者有读写权限,组和其他用户仅有读权限)。
修改权限(chmod):
755=所有者rwx+组r-x+其他r-x;644=所有者rw-+组r--+其他r--)。chmod 755 /path/to/directory(设置目录为所有者可读写执行,组和其他用户可读执行)。u+x=给所有者添加执行权限;g-w=移除组写权限)。chmod u+w /path/to/file(给文件所有者添加写权限)。修改所有者/组(chown/chgrp):
chown:同时修改所有者和组(如chown user:group /path/to/file)。chgrp:仅修改所属组(如chgrp developers /path/to/file)。sudo chown $USER:$USER /home/user/docs(将文件所有者设为当前用户及其主组)。若需修改目录及其内部所有文件/子目录的权限,需添加-R选项(谨慎使用777权限,易引发安全风险)。
示例:sudo chmod -R 755 /var/www/html(设置Web目录及其内容为所有者可读写执行,组和其他用户可读执行)。
ACL(访问控制列表):实现更细粒度的权限控制(如给特定用户添加权限)。
sudo yum install acl。setfacl -m u:editor:rwx /path/to/file(给editor用户添加读写执行权限);setfacl -R -m u:devs:rwx /team/project(递归设置团队目录权限)。SGID(设置组ID):确保目录内新创建的文件继承目录的组权限(适用于团队协作)。
示例:chmod 2770 /path/to/team_dir(2表示SGID位,770=所有者rwx+组rwx+其他---)。
SELinux是CentOS的安全模块,可能覆盖文件权限。若权限设置正确但仍无法访问,需检查SELinux状态:
sestatus(若显示Enforcing,则为启用状态)。sudo setenforce 0(重启后恢复)。/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled(不推荐,影响系统安全)。chcon命令(如sudo chcon -t httpd_sys_content_t /var/www/html/index.html)或semanage fcontext(持久化修改)。若文件系统以只读方式挂载,即使权限允许也无法修改:
mount | grep /path/to/mount(若出现ro,则为只读)。sudo mount -o remount,rw /path/to/mount(临时生效)。/etc/fstab:编辑文件,移除挂载选项中的ro(如将defaults,ro改为defaults,rw),然后执行mount -a(永久生效)。getfacl -p -R /path/to/dir > acl.bak备份,便于恢复。chmod 777,优先通过chown/chgrp和合理权限设置控制访问。