Chapter6 - Controlling Access to Files with Linux File system Permissions
Controlling Access to Files with Linux File system Permissions
Linux 文件系统权限
文件具体三个应用权限 的用户类别。文件归用户所有,通常是创建文件的用户。文件归单个组所有,通常是创建文件的用户的主要组,但是可以进行更改。可以为所属用户、所属组和系统上的非用户和非所属组的其它用户设置不同的权限。三种应用权限 :r,w,x(读、写、执行)
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
r | 可以读取文件的内容 | 可以列出目录的内容(文件名) |
w | 可以更改文件内容 | 可以创建或删除目录中的文件 |
x | 可以作为命令执行文件 | 可以访问目录的内容(取决于目录中文件的权限) |
用户通常对目录具有r,x 权限,因此他们可以列出目录并访问其内容。如果用户只有 r 权限那只能列出文件名,其它信息都不可用。如果用户对目录只有 x 权限。则不能列出目录中的文件名,但是可以对已知文件名并有读取权限的文件通过明确指定文件名来访问文件的内容。对文件具有 w 权限的用户可以删除目录的文件,不论文件所属是谁(特殊权限除外)。
ls -l file1 #查看文件的所有权
ls -ld dir #查看目录的所有权
与NTFS权限不同,linux 权限设置适用于设置了linux 权限的目录和文件,目录中的子目录和文件不会继承目录的权限。(但是目录的权限可以会阻止用户访问文件)
更改文件/目录的权限
符号法
chmod WhoWhatWhich file|dir
Who 是指 u , g , o , a (代表用户、组、其它、全部)
What 是指 + , - , = (代表添加、删除、精确设置)
Which 是指 r , w , x (代表读取、写入、可执行)
数值法
chmod ### file | dir
每个数字代表一个访问级别:用户、组、其它,是 r = 4 , w = 2 , x = 1 的和
使用数值法,权限由3位(或者设置高级权限时4位)八进制数来表示。单一数值范围0-7
chmod go-rw file1 #删除组和其它的 r,w 权限
chmod a+x file2 #为每个人添加x 权限
chmod 750 sampledir #设置用户 rwx ,组 rx ,其它 - 无权限
#目录树递归设置权限使用 -R 选项。当使用此选项是,务必使用 X 权限,而不是 x 权限 。表示应对目录而不是普通文件设置执行权限。
chmod -R g+rwX demodir #对demodir 目录及其子目录设置rwx 权限 ,对目录中的文件设置rw 权限
更改文件/目录的用户或组所有权
chown student foofile #修改文件foofile 的所有都为student
chown -R student foodir #修改目录及其子文件、目录的所有都为student
chown :admins foodri #修改目录的所属组为admins
chown visitor:guests foodir #修改目录的所属者visitor,所属组guests
#只能root用户可以更改文件所有权。但是,root 或文件的所有者可以设置组所有权。root 用户可将所有权授予任何组,非root用户可将所有权授予他们所属的组。
默认权限和文件访问
特殊权限
对可执行文件的setuid (或setgid)权限表示将以文件所属用户(或组)身份执行,而不是运行命令的用户身份。
目录的粘滞位可以为文件的删除设置特殊权限:仅文件所属者或root用户可以删除。
对于目录的setgid 权限表示 在该目录中创建的文件将继承目录组所属关系,而不是继承自用户。这通常用于组协作目录,将文件从默认的专有组自动更改成共享组。
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
u+s (suid) | 以文件所属者身份运行,而非运行命令的用户身份 | 无 |
g+s (sgid) | 对文件所属组身份执行文件 | 在目录中最新创建的文件将其所属组设置为和目录所属组相匹配 |
o+t (sticky) | 无 | 对目录有写入权限的用户仅可删除自己创建的文件,无法删除或强制保存到其它用户拥有的文件 |
设置特殊权限
符号法:setuid = u+s ,setgid = g+s ,sticky = o+t
数值法:(4位第1位) setuid = 4, setgid = 3 ,sticky =1
chmod g+s dir #在dir目录添加setgid位
chmod 2770 dir #在dir目录设置setgid,并对目录的用户和组设置 rwx 权限
默认文件权限
bash shell 用户的默认umask 在/etc/profile 和 /etc/bashrc 文件中定义。用户可以修改家目录下的.profile 和 .bashrc 文件来覆盖系统值。设置umask 少于3位时,默认前导为0。
0002 清除其它用户的写入权限,077 删除用户所属组和其它的所有权限。