Linux--文件的特殊权限
文件的特殊权限--SUID,GUID,STICKY,FACL
SUID(全称:set user ID upon execution)
1.功用
理论理解:用户运行某程序时,如果此程序拥有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件自己的属主。
简单理解:就是让本来没有访问权限的普通用户运行这个程序时,可以访问本没有访问权限的资源。
2. 语法
格式:chmod u+ | -s FILE...
#:chmod u+ 属主有执行权限x,加小写s,无x,加大写S
GUID(set group ID upon execution)
1.功用:当目录属组有写权限,那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组。
2.语法
格式:sgid:chmod g+ | -s FILE...
#:chmod g+ 属主有x,显示为小写s,无x,显示为大写S。
STICKY
1.功用
理论理解:对于属组或全局可写的目录,组内的所有用户或系统上的所有用户对此目录中都能创建新文件或删除所有的已有文件;如果为此类目录设置sticky权限,则每个用户能创建新文件,且只能删除自己的文件;(管理文件的sticky权限)
灵活理解:对一个文件设置了sticky-bit之后,尽管其他用户有写权限, 也必须由属主执行删除、移动等操作。
对一个目录设置了sticky-bit之后,存放在该目录的文件仅准许其属主执行删除、 移动等操作。
2.语法
chmod o+ | -t FILE...
如果其它用户原本有执行权限,显示为小写t,否则,显示为大写T;
Facl:文件的额外赋权机制
1.功用
理论理解:在原来的u,g,o之外,另一层普通用户能控制赋权给另外的用户或组的赋权机制;
灵活理解:FACL:Filesystem Acess Control List:Linux(和其他Unix等POSIX兼容的操作系统)有一种被称为访问控制列表(ACL)的权限控制方法,它是一种权限分配之外的普遍范式。例 如,默认情况下你需要确认3个权限组:owner、group和other。而使用ACL,利用文件扩展属性保存额外的访问控制权限,你可以增加权限给其他用户或组别,而不单只是简单 的"other"或者是拥有者不存在的组别。可以允许指定的用户A、B、C拥有写权限而不再是让他们整个组拥有写权限。(指定哪些用户或者哪些组拥有哪些访问文件的权限)
2.语法
选项: -m:赋权
-x:撤销权限
赋权给用户: setfacl -m u:USERNAME:MODE FILE...
赋权给组:setfacl -m g:GROUPNAME:MODE FILE...
撤销赋权: setfacl -x u:USERNAME FILE...
setfacl -x g:GROUPNAME FILE...
3.实例
(1)对用户设置权限
~]$ setfacl -m u:username:rw- test.txt (对普通的文件设置)
~]$ setfacl -m d:u:username:rw- test/ (对目录设置)
(2)对组设置权限
~]$ setfacl -m g:group:r-- test.txt
~]$ setfacl -m d:group:r-- tset/
(3)查看权限
~]$ getfacl filenema/directory (查看文件名或目录名)
umask
1.实际情景:当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认权限,当新文件被创建时,其最初的权限由文件创建掩码决定。
2.umask存在的原因:
为了避免用户创建出来的文件权限是777,这样一来任何用户都可以随便管理、使用别人的文件,这样的权限就没有任何意义了。
3.umask的作用:修改新创建文件默认的用户权限
4.需要注意的两点:
(1)新建文件默认下的是没有执行权限的,系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。
(2)如果减得的结果中有执行权限,则默认将其加1。
文件默认的权限666 实际权限:666-umask
目录默认的权限777 实际权限:777-umask
eg:对于文件 umask=023
文件:666-023=643,有执行权限,默认加1则为644。
目录:777-023=743,无所谓执行权限,还是743。