在CentOS这类Linux系统中,文件和目录的权限管理是系统安全的核心环节,正确设置权限可以防止未经授权的访问、修改或执行,保障系统和数据的完整性,本文将详细介绍如何在CentOS中改变目录权限,主要涉及chmod和chown两个核心命令。

理解Linux权限基础
在修改权限之前,首先需要理解权限是如何表示的,使用ls -l命令查看目录或文件时,会看到类似drwxr-xr-x的字符串,这代表了权限信息。
- 第一位:表示文件类型。
d代表目录,代表普通文件,l代表链接文件。 - 接下来的九位:分为三组,每组三位,分别定义了所有者、所属组和其他用户的权限。
r(Read):读权限,对于目录意味着可以列出其内容。w(Write):写权限,对于目录意味着可以在其中创建、删除、重命名文件或子目录。x(Execute):执行权限,对于目录意味着可以进入(cd)该目录。
 
使用 chmod 命令修改权限
chmod(change mode)命令是修改文件或目录权限的主要工具,它提供两种使用方式:符号模式和数字模式。
符号模式
符号模式直观易懂,通过字母组合来增减权限。
u:代表所有者g:代表所属组o:代表其他用户a:代表所有用户- 添加权限
 - 移除权限
 - 设置精确权限
 
示例:
chmod u+w mydir:为目录所有者添加写权限。chmod go-r mydir:移除所属组和其他用户的读权限。chmod a+x mydir:为所有用户添加执行权限。
数字模式
数字模式更为快捷,在脚本编写中尤为常用,它将每种权限赋予一个数字值:r=4,w=2,x=1,将每组的权限值相加,得到一个三位数的八进制数。

| 权限 | 数字 | 说明 | 
|---|---|---|
| rwx | 7 | 读、写、执行 (4+2+1) | 
| rw- | 6 | 读、写 (4+2) | 
| r-x | 5 | 读、执行 (4+1) | 
| r-- | 4 | 只读 | 
| -wx | 3 | 写、执行 (2+1) | 
| -w- | 2 | 只写 | 
| --x | 1 | 只执行 | 
| 0 | 无权限 | 
常见权限组合示例:
chmod 755 mydir:设置所有者拥有rwx权限,组和其他用户拥有r-x权限,这是Web目录的常见设置。chmod 700 mydir:只有所有者可以读、写、执行,其他用户无任何权限,适用于私密目录。
使用 chown 命令修改所有权
有时,改变权限还不够,还需要更改目录的所有者或所属组,这时需要使用chown(change owner)命令,此操作通常需要sudo或root权限。
语法: chown [选项] [所有者][:所属组] 文件或目录
示例:
sudo chown alice mydir:将mydir的所有者改为用户alice。sudo chown alice:developers mydir:将mydir的所有者改为alice,所属组改为developers。sudo chown :developers mydir:仅将mydir的所属组改为developers,所有者不变。
递归修改与最佳实践
当需要修改一个目录及其下所有文件和子目录的权限时,可以使用-R(或--recursive)选项。

示例:
chmod -R 755 /var/www/html:递归地将/var/www/html目录及其所有内容的权限设置为755。sudo chown -R www-data:www-data /var/www/html:递归地将/var/www/html及其所有内容的所有者和所属组设置为www-data。
警告: 使用-R选项时要格外小心,尤其是在根目录()或重要系统目录上误操作可能导致系统无法启动,避免轻易使用chmod 777,它会赋予所有用户最高权限,带来严重的安全风险。
相关问答FAQs
问题1:为什么目录通常需要执行权限,而文件不一定?
解答: 目录的执行权限与文件的执行权限含义不同,对于目录,x权限代表用户能否“进入”该目录(即使用cd命令),如果没有x权限,即使有r权限,用户也无法查看目录内的详细内容(只能看到文件名),而对于文件,x权限代表能否将其作为程序或脚本运行,为了让用户能够浏览目录结构,目录必须至少拥有x权限,通常配合r权限使用(如r-x或rwx),普通文件(如文本、图片)通常不需要被执行,所以一般不设置x权限。
问题2:我使用chmod 755 mydir后,普通用户仍然无法在其中创建文件,为什么?
解答: 这个问题很可能出在父目录的权限上,虽然mydir本身对所有者开放了写权限,但如果它的父目录(例如/home)对这位普通用户没有w(写)权限,那么该用户就无法在父目录下进行任何创建、删除、重命名操作,自然也无法在mydir中创建文件,请使用ls -ld /path/to/parent/dir检查父目录的权限,并确保用户对父目录有相应的写权限。