简介
Linux系统中的每个文件和目录都有访问许可权限,用他来确定谁能通过何种方式对文件和目录进行访问和操作。 文件或目录的访问权限分为只读,只写和可执行三种。
我们可以通过设置用户权限、组权限、其他人权限、特殊权限、ACL来实现不同的访问机制。
一、安全上下文
关系:用户、命令和文件
使用命令查看文件:(1)用户(2)/bin/cat(3)/root/.bashrc
用户使用cat 打开.bashrc文件需要2次判定。用户分别对cat和.bashrc文件进行权限判定,先判定所属人是否存在权限,再判定所属组的权限。所属人判定没有权限将不再进行后续判断
二、权限的说明
权限分为所属人、所属组、其他人,linux中文件与目录是由r读、w写、x执行来构建整个系统。
二、文件与目录的权限
对于文件的权限说明
1.当仅r权限作用在文件上的时候,表示用户可以读取该文件的内容。
2.当仅w权限作用在文件上的时候,表示用户可以修改该文件的内容。
3.当仅x权限作用在文件上的时候,没有意义。
4.当rw同时作用在文件上的时候,表示用户可以读写文件。
5.当rx同时作用在文件上的时候,表示用户可以读且可以执行该文件。
6.当wx同时作用在文件上的时候,权限与仅w相同。
普通用户不能更改文件所属人,更改文件的组需要用户在相应的组才能更改组,二进制文件读写无意义。7.当rwx同时作用在文件上的时候,用户可以读写执行。
对于 目录的文件说明
1.当仅r权限作用在目录上的时候,表示用户可以短列出查看目录下的文件名。2.当仅w权限作用在目录上的时候,没有意义。3.当仅x权限作用在目录上的时候,表示用户可以进入且可以访问目录下的文件,但不能列出文件名。4.当仅rw权限同时作用在目录上的时候,权限等同于仅r权限作用在目录。5.当仅rx权限同时作用在目录上的时候,表示用户可以进入,可以访问子文件,同时可以长列出文件。6.当仅wx权限同时作用在目录上的时候,表示用户可以进入,可以访问子文件,可以创建及删除,但不能列出。7.当rwx权限同时作用在目录上的时候,表示用户有完整权限。
普通用户对于目录没有执行权限是不能进入,也不能查看文件的详细属性和内容,即使有读权限,有写权限就可删除目录内文件内容。
文件能不能删不由文件决定,由目录决定 。X对于批量增加x权限时,可以跳过文件而只对目录加x。
三、权限的修改方式
chmod [OPTION]... OCTAL-MODE FILE...
修改方法:
chmod who(对谁操作) opt(做什么操作) per(给什么权限) filewho : owner group other u g oopt : + - = a(all或不写ugo 也是全部)增加 减少 赋予per : r w x X s ,tchmod u+x,g-w,o= | file =等号后是空 权限就是空的
删除文件权限是由目录决定的,读权限对二进制程序是不受影响的。root用户可以无视读写权限,root用户无执行权限也是无法执行,但自身可以加上权限 。
四、新建文件与目录默认权限
umask掩码是用于取消新建文件与目录对应的权限。
linux下目录最高权限777,文件最高权限666,为保证系统安全umask码的默认数值为022。umask 查看umaskumask n(数字权限)设置umaskumask -S 显示创建目录的默认权限全局设置: /etc/bashrc 用户设置:~/.bashrc
文件权限对位相减遇到奇数+1
五、特殊权限位
suid: 对于可执行的二进制文件作用了suid权限之后,任何人在执行该文件时,可临时拥有其所属人的权限。
启动为进程之后,其进程的属主为原程序文件的属主。SUID只对二进制可执行程序有效。SUID设置在目录上无意义。权限设定:
chmod u+s FILE...chmod u-s FILE...
sgid: 对于可执行的二进制文件作用了sgid权限之后,任何人在执行该文件时,可临时拥有其所属组的权限。启动为进程之后,其进程的属组为原程序文件的属组
权限设定:
chmod g+s FILE...chmod g-s FILE...
对于目录作用了sgid权限之后,任何人在该目录下创建的文件的所属继承目录的所属组。
一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组通常用于创建一个协作目录权限设定:chmod g+s DIR...chmod g-s DIR...
sticky:对于目录作用了sticky之后,该目录下的文件及子目录,仅其所属人和目录的所属人及root才能删除。
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件sticky 设置在文件上无意义权限设定:
chmod o+t DIR...chmod o-t DIR...
六、ACL 的使用方法
ACL用于复杂的权限环境。
加用户acl权限到文件 setfacl -m u:用户名:rw 文件名加组acl权限到文件 setfacl -m g:用户组:rw 文件名查看acl权限 getfacl f1启用acl权限 group=mask按getfacl 内的权限顺序排列owner > acl user > group acl group 谁权限多谁优先 > other用户属于文件多个组权限互补删除acl权限 setfacl -x u:用户名 或 g:用户组设定acl最高权限 setfacl -m mask:r 用户名 比mask高的权限全削减为mask相应的最高权限清空所有acl权限 setfacl -b 文件名
~/.bashrc 将umask设定保存以让下次登录时仍然有效