Linux权限管理详解

1.文件权限介绍
2.修改权限:chmod
3.新建目录文件的默认权限
4.特殊权限
5.访问控制列表

1.文件权限介绍

文件的权限主要针对三类对象,分别是:owner:u:所属用户;group:g:所属组;other:o:其他人
每个文件针对每类访问者都定义了三种权限:r=4:可读,能否查看内容和确定文件类型;w=2:可写,能否添加修改删除内容;x=1:可执行,是否可运行。
目录随说文件的一种,但目录是文件夹,所以这里目录和文件在权限方面还有些不同。
针对目录来说:r:可以查看目录内的文件列表;w:可创建删除目录内的文件,但必须有x权限才可真正执行;x:可以进入目录内;X:只给目录x权限,不给文件x权限,但若文件本身就带x权限,则会给其他所有位加上x权限。
针对文件来说:r:可查看内容和元数据;w:可修改内容;x:可以运行,对root也有效。
注意
文件是目录的内容,删除权限是文件所在目录的权限决定,若目录没有x权限,就不可删除文件。但修改权限是文件本身决定的,也就是即使删除不了,也可以使对文件进行修改破坏。
任何用户无执行权限将无法执行,而root用户在u、g、o上没有执行权限时也不例外,但一旦任何一个上有x权限那么root就可以有x权限。
时刻记住root为超级管理员,系统对root的约束力不大,很多规则都不能约束root。
文件目录的权限是按照顺序检查的:u,g,o。

2.修改权限:chmod

chmod - 修改文件权限
用法:
chmod [option]... mode[,mode]... file...
chmod [option]... octal-mode file...
chmod [option]... --reference=rfile file...
[option]
-f:错误信息不显示
-R:递归修改权限
-v:显示详细修改权限过程
-c:和-v一样,但只有出现改变时才显示
[mode]和[octal-mode]
{u|ug|ugo|go|uo}{=|-|+}{rwxX|421}:任意组合的u,g,o可以直接=或-或+权限,权限也可以使用rwx,也可以使用对于的数字
[--reference=rfile]
这是可以参考rfile文件的权限,来将file的权限修改与rfile的权限相同

这里举些实例方便理解:
chmod -R g+rwX /testdir
chmod 600 file
chmod u+wx,g-r,o=rx file

3.新建目录文件的默认权限

当我们创建一个目录或文件时,系统会自动给其分配一个权限,这个权限是怎么来的?实际上,新建目录或文件的权限是系统根据所设定的umask的值来计算出来的。
umask有个默认值放在/etc/profile文件中。当用户uid在0-199之内时,umask=022;当用户uid大于199时,umask=002。
默认权限是怎么来的呢?新建文件的默认权限为666-umask的值,且如果所得的结果某位存在执行权限也就是奇数是,则将其位上权限+1;新建目录的默认权限为777-umask的值所得。当然上面计算方法,本质上是对位将最大权限的umask的相应位权限去除,来得到默认权限;也就是说umask为0的位,不去除对位,umask为1的位,去除对位,对位是0还是0,对位是1就去为0。
umask还是个命令:

umask-显示和设定umask值
umask [-p] [-S] [mode]
-p:输出umask值,可以作为标准输入用
-S:输入u=,g=,o=
umask mode:设定umask值,但只是暂时的,重启机器后就会失效。

要想永久保留自己设定的umask值可以保存在:~/.bashrc,这个用户自己用;/etc/bashrc,这个大家一起用。

4.特殊权限

文件除了一般权限外,还在执行位x上还有特殊权限。对于所有者u来说特殊权限称为SUID,对于所属组来说特殊权限为SGID,对于其他人来说特殊权限为STICKY。

1.SUID

任何一个可执行程序文件能不能启动为进程,取决于发起者即所有者u对程序文件是否拥有执行权限;启动为进程后,其进程的所有者为原程序文件的所有者。
SUID作用在所有者u的可执行权限x上,就是用于继承程序所有者的权限,来使所有人都可以暂借这个执行权限来执行这个文件。SUID只对二进制可执行程序有效,而设置在目录上无意义。
权限的设定为:

chmod u{+|-}s file...:给文件添加或去除suid权限

2.SGID

默认情况下,用户创建文件或目录时其所属组为此用户的所属组g。
SGID作用在二进制文件上时,会使属于这个组g的人都继承文件的执行权限。
SGID作用在目录上时,会使目录内新建的文件的所属组自动继续目录的所属组。
权限的设定为:

chmod g{+|-}s {dir|file}...:给目录或文件添加或去掉sgid权限

3.STICKY

具有写权限的目录,用户可以删除该目录中的任何文件。
STICKY作用在目录上后,只有文件的所有者或root可以删除该文件。且STICKY设置在文件上无意义。
权限的设定为:
chmod o{+|-}t dir...:给目录添加或去掉sticky权限

4.特殊权限的数字法和权限位的映射

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13371.html