在CentOS中,文件/目录的权限分为三类用户和三种操作权限:
通过ls -l
命令可查看权限详情(如-rwxr-xr--
),其中第1位为文件类型(-
为普通文件、d
为目录),后9位分为3组(所有者、所属组、其他用户)。
ls -l
ls -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.sh
chmod go-w file.txt
chmod 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.txt
chown admin:developers file.txt
chown -R admin:developers /project
。语法:chgrp [新组] file
示例:
file.txt
所属组改为developers
:chgrp developers file.txt
chgrp -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 # 递归修改所有者/组
umask
umask
定义文件/目录创建时的默认权限(取反后减去基础权限):
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 /project
developers
添加目录执行权限:setfacl -m g:developers:x /project
getfacl /project
setfacl -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
)。