文件系统的权限管理:
安全上下文: 任何在计算机中执行的任务都是由进程实现的 进程有必要访问和使用文件或某些数据资源 进程和其要操作的文件之间的关系,就定义为安全上下文 在DAC模型中,定义安全上下文的方式很简单 所有权 任何启动进程的用户就是该进程的所有者,进程的所有者也可以变更 任何创建文件的用户就是该文件的所有者,文件的所有者可以变更 使用权 在文件上面定义的对于该文件的特定使用过滤规则 三个权限:所有者权限,所属组权限,其他人权限 安全上下文的匹配规则 当某个进程试图操作某个文件时,DAC将做如下规则匹配 1.判断进程的所有者和文件的所有者是否为同一用户,如果是,则直接应用文件的所有者权限 2.如果不是,进一步判断进程的所有者是否为文件所属组的成员,如果是,则直接应用文件所属组的权限 3.如果不是,直接应用其他人权限; 文件权限的构成: 使用权:MODE,Premission 三个基本权限: r:Readable,可读 w:Writable,可写 x:eXecutable,可执行 目录文件: r:可以使用ls命令获取其中包含的所有文件的文件名列表 w:可以在此目录中进行文件名修改(创建,删除,修改) ;即:可以创建文件名,删除文件名及修改文件名; x:可以使用ls -l命令来查看各个文件的属性信息;在路径中引用该目录 非目录文件; r:可以利用cat类的命令获取文件中存放的数据信息 w:可以修改(添加,修改,删除,覆盖)文件中存放的数据信息 x:可以将文件发起为进程获取使用权和所有权的相关信息 ls -l[d]/PATH/TO/SOMEFILE rwxr-xr-x.:三个权限位(属主/所有者,属组/所属组,其他用户) 属主权限:rwx,此权限位标识为user,简写为u 属组权限:r-x,此权限位标识为other,简称为o 其他用户权限:r-x *注意:“-”表示在该权限位上不具备指定权限 rwx组合称为“权限标识三元组” 数字权限标识:二进制数字标识,在对应的权限位上有权限则为1,无权限则为0; --- 000 0 --x 001 1 -w- 010 2 -wx 011 3 r-- 100 4 r-x 101 5 rw- 110 6 rwx 111 7 使用符号标识权限和数字标识权限的区别 1.使用符号标识法可以只标识某个特定的权限位,也可以同时标识所有的权限位 例:u=rx.............. 2.使用数字标识法只能同时标识所有权限位 例: 修改文件的使用权 chmod == chage file mod bits MODE :符号权限标识法 u,g,o,a:表示权限位 +,-,=:表示权限方式 +:表示在指定的权限位上增加指定权限;如果新增的权限是已经存在的权限,则结果相比较授权之前无变化 -:表示在指定的权限位上撤销指定权限:如果被撤销权限在原权限 *注意: chmod +|- r|w FILE:在所有的权限位上增加或撤销读或执行权限 chmod +|- w FILE:仅在所有者权限上增加或撤销权限 *注意:对于文件来说,执行权限是非常重要的安全上下文标识;因此默认情况下,所有的非目录文件都不应该有执行权限;因为一旦非目录具有了执行权限,则意味着该文件可以被执行,发起为进程,则可以按需使用系统资源 修改文件的所有权 chown - 修改文件所有者和组别 格式: chown [OPTION]... [OWNER][:[GROUP]] FILE... chown [OPTION]... --reference=RFILE FILE... *注意:在使用chown命令时,特别的,可以使用"."代替":"; -R, --recursive:递归地设置目标文件或目录的所有权; *注意:对于文件来说,普通用户可以修改所有者为自己的文件的使用权,但无法修改文件的所有权;修改文件所有权的操作只有root可以完成; chgrp(不常用) chgrp - change group ownership 格式: chgrp [OPTION]... GROUP FILE... chgrp [OPTION]... --reference=RFILE FILE... 注意:chown和chgrp命令所指定的用户和组,既可以是用户名和组名,也可以是UID和GID; mkdir:-m MODE:在创建目录时为其指定权限;install命令:install - copy files and set attributes
格式: install [OPTION]... [-T] SOURCE DEST 单源复制,为复制后的文件增加执行权限; install [OPTION]... SOURCE... DIRECTORY 多源复制,为复制后的文件增加执行权限; install [OPTION]... -d DIRECTORY... 创建目录; 常用选项: -g, --group=GROUP set group ownership, instead of process' current group //设定目标文件的所属组为指定组,而不是进程所有者的主要组; -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-x //设定目标文件的权限,而不是rwxr-xr-x; -o, --owner=OWNER set ownership (super-user only) //设定目标文件的所有者,仅root可用; *注意:install命令,不能复制目录,即不能以目录为源文件;如果其源文件是一个目录,则install命令会进入该目录,依次复制其中的所有非目录文件到目标位置; 特殊权限: SUID,SGID,STICKY SUID:SUID仅设置在可执行的文件上,默认情况下,当用户执行此类可执行文件时,被发起的进程的所有者不是进程发起者,而是可执行文件的所有者;换句话说,进程以所有者的身份运行 SUID权限所显示的位置,文件的属主的权限位中的执行权限位上;如果属主本来就具有执行权限,则显示为“s”;如果属主本来没有执行权限,则显示为“S” 管理SUID权限: 1.符号标识法:chmod u+s FILE 2.数字标识法:chmod 4755 FILE SGID:SGID可设置在可执行文件或目录的属组权限位的执行权限上 如果某个目录设置了SGID权限,并且对于某些用户有写权限,则所有在此目录中创建的新文件和目录的所属组均为其父母录的所属组,而并非进程发起者的主要组 SGID权限的显示位置:文件的属组权限位上的执行权限上,如果属组本来就有执行权限,则显示为“s”,否则,就显示为“S” 管理SGID权限: 1.符号标识法:chmod g+s DIR 2.数字标识法:chmod 2770 DIR STICKY:STICKY仅设置在目录的其他用户权限位的执行权限上, 如果在某个目录上的权限设置为多个用户都拥有写权限,那就意味着凡是拥有写权限的用户都能直接管理该目录中的所有文件名,包括改名文件及删除文件名等操作;因此需要在这样的目录上设置STICKY特殊权限;如果此类目录设置了STICKY,则所有用户即便拥有写权限,也仅能删除或改名所有者为其自身的文件; STICKY权限的显示位置:在目录的其他用户的权限位的执行权限上;如果该权限位本来有执行权限,则显示为"t",否则,显示为"T"; 管理STICKY权限: 1.符号标识法:chmod o+t DIR 2.数字标识法:chmod 1777 DIR 权限遮罩码:umask 作用:在创建目录或文件时,被创建出来的目录或文件的默认权限上删除遮罩码上所对应的权限 *注意:在创建目录或文件时,默认不设置特殊权限 对于目录文件:默认的权限为:0777-umask 对于非目录文件:默认的权限为:0666-umask umask[OCTL-MODE] 默认设置遮罩码的文件:/etc/bashrc 规则:如果用户的UID大于199并且用户的用户名和主要组的组名相同,则遮罩码为002;否则遮罩码为022; 文件的扩展属性: lsattr:lsattr - 显示文件在Linux第二扩展文件系统上的特有属性 格式:lsattr [ -RVadv ] [ files... ] chattr - change file attributes on a Linux file system 格式:chattr [ -RVf ] [ -v version ] [ mode ] files... mode可以是:+-=[aAcCdDeijsStTu a:在向文件写数据时,只能以附加的方式进行写操作;文件的内容不能被更改和删除;一般会为日志文件设置此属性; A:atime,文件的访问时间戳控制属性;对于并发访问量较大或者并发访问频率较高的文件,应该设置此属性以降低IO成本;防止IO瓶颈; c:设置是否自动压缩之后再存储; C:是否开启"写时复制"; d:使用dump备份文件系统是,跳过属性设置为d的文件; D:设置文件在文件系统中的异步写操作; i:设置文件不能被删除,改名及设定链接关系; s:设置文件的保密性删除; u:与s属性相反,如果此类文件被删除,则在存储器中会继续保存其内容; FACL:Filesystem Access Control List,文件系统访问控制列表 想要应用此功能,必须让文件系统能够支持; FACL为文件系统的额外赋权机制; 在原有的u,g,o权限位之外,让普通用户能够控制权限赋予另外的某个指定的用户或组的一种赋权机制; 与FACL相关的命令: getfacl - get file access control lists 格式:getfacl [-aceEsRLPtpndvh] file ... setfacl - set file access control lists 格式:setfacl [-bkndRLPvh] [{-m|-x} acl_spec] file ... setfacl --restore=file 常用选项: -m acl_spec:为指定文件设置acl_spec; -x acl_spec:将acl_spec从指定文件上移除 注意:如果设置了FACL之后,再修改目标文件的使用权限,那么FACL中设置的权限条目可能受到影响而导致授权失败;因此,为了保证没有此项干扰,应该先调整目标文件或目录的权限,再设置FACL; acl_spec:acl_specification,acl规格,访问控制列表; u:USERNAME:MODE g:GROUPNAME:MODE MODE一般是使用符号权限标识法标识的权限;