在CentOS中,文件/目录的权限分为三类用户和三种操作权限:
通过ls -l命令可查看权限详情(如-rwxr-xr--),其中第1位为文件类型(-为普通文件、d为目录),后9位分为3组(所有者、所属组、其他用户)。
ls -lls -l /path/to/file_or_directory
输出示例:-rw-r--r-- 1 user group 4096 Jan 1 12:34 file.txt
解读:所有者(user)有读写权限(rw-),所属组(group)和其他用户有读权限(r–)。
chmod语法:chmod [who][operator][permission] file
who:u(所有者)、g(所属组)、o(其他用户)、a(所有用户)。operator:+(添加权限)、-(移除权限)、=(设置权限)。permission:r(读)、w(写)、x(执行)。示例:
chmod u+x script.shchmod go-w file.txtchmod a=rwx,u-w file.txt。语法:chmod xyz file(x、y、z为0-7数字,对应权限之和)
常见组合:
755:所有者(7=rwx)、组和其他用户(5=r-x),适用于目录(如/var/www/html)。644:所有者(6=rw-)、组和其他用户(4=r–),适用于普通文件(如config.conf)。777:所有用户均有读写执行权限(慎用,仅测试环境用)。chown/chgrp语法:chown [新所有者][:新组] file
示例:
file.txt所有者改为admin:chown admin file.txtchown admin:developers file.txtchown -R admin:developers /project。语法:chgrp [新组] file
示例:
file.txt所属组改为developers:chgrp developers file.txtchgrp -R developers /project。作用:文件执行时,进程继承所有者权限(如passwd命令)。
设置:chmod u+s file(如chmod 4755 /usr/bin/passwd)。
作用:目录下新建文件时,自动继承目录的所属组(便于团队协作)。
设置:chmod g+s directory(如chmod 2770 /project/src)。
作用:目录下文件只能由所有者、目录所有者或root删除(如/tmp目录)。
设置:chmod +t directory(如chmod 1777 /tmp)。
使用-R选项修改目录及其所有子文件/子目录的权限(谨慎使用777):
chmod -R 755 /path/to/directory # 递归设置目录权限
chown -R user:group /path/to/directory # 递归修改所有者/组
umaskumask定义文件/目录创建时的默认权限(取反后减去基础权限):
666 - umask(如umask 022→644)。777 - umask(如umask 022→755)。查看当前umask:umask
设置umask(临时):umask 027(所有者全权限,组读权限,其他用户无权限)。
当需要为特定用户/组设置权限时,使用setfacl命令(需安装acl包:yum install acl)。
示例:
devuser添加目录读写权限:setfacl -m u:devuser:rwx /projectdevelopers添加目录执行权限:setfacl -m g:developers:x /projectgetfacl /projectsetfacl -R -m u:devuser:rwx /project。sudo临时提权(需加入wheel组):sudo command # 如sudo apt-get update
wheel组:sudo usermod -aG wheel username。SELinux是CentOS的安全模块,可能限制权限(如无法访问/var/www/html)。
sestatus(Enforcing为开启)。sudo setenforce 0(重启后恢复)。/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled(需重启)。chmod 777(会暴露敏感文件)。ls -l)和SELinux状态(sestatus)。