CentOS文件权限管理详解
一、
在CentOS中,文件权限决定了哪些用户和组可以访问文件以及可以执行什么样的操作,每个文件或目录都有其访问权限,这些权限决定了谁能访问和如何访问这些文件和目录,本文将详细介绍文件权限的概念、查看和修改文件权限的方法,并通过实例进行说明。
二、文件权限的基本概念
文件类型与权限
在CentOS中,使用ls al
命令可以查看文件和目录的详细信息,包括权限、所有者、文件大小和修改日期等,以下是一个示例输出:
[root@centos ~]# ls al 总用量 36 drwx 4 root root 4096 8月 28 17:11 . drwxrxrx 23 root root 4096 6月 20 10:32 .. rw 1 root root 5243 8月 30 10:16 .bash_history rwrr 1 root root 3106 10月 23 2015 .bashrc drwx 2 root root 4096 6月 17 11:34 .cache rwrr 1 root root 148 8月 17 10:15 .profile drwxrxrx 2 root root 4096 7月 6 15:18 .ssh rw 1 root root 3624 8月 28 17:11 .viminfo
字段说明:
文件类型与权限:第一个字符表示文件类型,接下来的九个字符分为三组,每组三个字符,分别表示用户、用户组和其他用户的权限。
d
:目录
:普通文件
l
:符号链接
b
:块设备文件
c
:字符设备文件
s
:套接字文件
p
:命名管道文件
权限字符:r
(读)、w
(写)、x
(执行)
文件权限的组成部分
每个文件或目录的权限由十个字符组成:
第一个字符:文件类型
第二到第四个字符:文件所有者的权限
第五到第七个字符:文件所属组的权限
第八到第十个字符:其他用户的权限
对于权限字符串rwxrxr
:
u
(所有者)的权限为rwx
,即4 + 2 + 1 = 7
g
(用户组)的权限为rx
,即4 + 1 = 5
o
(其他用户)的权限为r
,即4 = 4
两种表示方式
符号表示法
使用字符r
、w
、x
表示读、写、执行权限,分别代表数值4、2、1,每组权限的表示是累加的,权限rwxrxr
表示:
u
(所有者)的权限为rwx
,即4 + 2 + 1 = 7
g
(用户组)的权限为rx
,即4 + 1 = 5
o
(其他用户)的权限为r
,即4 = 4
数字表示法
每组权限用一个三位数表示,分别代表所有者、用户组和其他用户的权限,权限rwxrxr
对应的数字表示为754
:
u
(所有者)的权限是7
,即rwx = 4 + 2 + 1
g
(用户组)的权限是5
,即rx = 4 + 1
o
(其他用户)的权限是4
,即r= 4
三、查看文件权限
使用ls al
命令可以查看文件和目录的详细信息,包括权限、所有者、文件大小和修改日期等。
[root@centos ~]# ls al example.txt rwrr1 root root 148 Aug 17 10:15 example.txt
上述输出表示:
rwrr
:文件权限
1
:硬链接数
root
:文件所有者
root
:文件所属组
148
:文件大小(字节)
Aug 17 10:15
:最后修改时间
example.txt
:文件名
四、修改文件权限
使用chmod
命令可以修改文件或目录的权限,以下是一些常见的用法和示例:
符号表示法
添加权限
给当前用户添加执行权限:
chmod u+x example.txt
删除权限
移除文件所属组的写权限:
chmod gw example.txt
设置特定权限
设置其他用户只有读权限:
chmod o=r example.txt
数字表示法
将文件权限设置为rwxrxr
(754):
chmod 754 example.txt
递归修改权限
递归地将所有用户都设置为读写权限:
chmod R a=rw example_dir/
五、修改文件所有者和所属组
修改文件所有者
使用chown
命令可以修改文件的所有者,将文件myfile
的所有者更改为newuser
:
chown newuser myfile
如果需要同时更改所有者和所属组,可以使用冒号分隔:
chown newuser:newgroup myfile
修改文件所属组
使用chgrp
命令可以修改文件的所属组,将文件myfile
的所属组更改为newgroup
:
chgrp newgroup myfile
六、特殊权限与粘滞位(Sticky Bit)
SUID和SGID位
使用chmod
命令可以设置SUID和SGID位,设置文件的用户ID位(SUID)和组ID位(SGID):
chmod u+s filename # 设置用户ID位(SUID) chmod g+s filename # 设置组ID位(SGID)
这些位通常用于可执行文件,以允许程序在运行时临时提升到文件所有者的权限。
粘滞位(Sticky Bit)
粘滞位通常用于目录,以防止非目录拥有者删除目录中的文件,设置粘滞位:
chmod +t directoryname
这会将目录的权限设置为只能由目录拥有者或文件拥有者删除文件。
七、常见操作示例与FAQs
示例一:创建文件并设置权限
假设我们创建一个文件example.txt
并设置它的权限为rwrr
,其含义如下:
所有者可以读和写该文件,权限为6
(4 + 2)。
用户组可以读该文件,权限为4
。
其他用户也可以读该文件,权限为4
。
touch example.txt chmod 644 example.txt ls l example.txt
输出:
rwrr1 root root 0 Date Time example.txt
示例二:修改目录权限
假设我们要修改一个名为mydir
的目录的权限,使其所有者具有读写执行权限,所属组具有读执行权限,其他用户只有读权限,可以使用以下命令:
chmod 755 mydir ls ld mydir
输出:
drwxrxrx 2 root root 4096 Date Time mydir
常见问题与解答(FAQs)
Q1: 如何给当前用户添加执行权限?
A1: 使用以下命令给当前用户添加执行权限:
chmod u+x filename
Q2: 如何取消所有用户的写权限?
A2: 使用以下命令取消所有用户的写权限:
chmod aw filename