linux系統擁有好多權限,雖然目的是為了使用者安全服務,也加強了理解難度,這兒我依照檔案類型總結Linux的權限
一、普通檔案、目錄
對linux系統上的普通檔案、目錄來說,有三種權限:rwx權限、隱藏屬性權限和ACL權限
1.rwx權限(1)用數字表示rwx權限
r代表讀取權限;w代表寫入權限;x代表執行權限。
linux系統有三種身分:所有者(u)、所屬群組(g)和其他人(o)
linux系統用0表示權限關掉,用1表示權限開啟,這麼對於任意一個檔案來說如何安裝LINUX,其所有者權限的所有可能組合為8種,其中
只有讀取權限,表示為r--,二補碼數為100,轉換為十補碼為4;
只有寫入權限,表示為-w-,二補碼數為010,轉換為十補碼為2;
只有執行權限,表示為–x,二補碼數為001,轉換為十補碼為1.
由此,我們得到了用十補碼數字來表示rwx權限的方式:
r用4表示,w用2表示,x用1表示。
(2)rwx權限對系統中檔案、目錄的影響
對檔案來說,r權限代表可讀,表示可查看檔案內容,對應到指令上,就是可執行cat/more/less等檢視內容的指令;w權限代表可寫,表示可變更(寫入)檔案linux 檔案授權給使用者,對應到指令上,就是可執行vim檔案編輯器;x代表執行權限,表示該檔案可以放在系統中運行,一般我們的各類別指令和腳本,都是要具有執行權限的。
對目錄來說,r權限代表可讀,表示可查看目錄下的檔案和目錄名稱(這兒可以把目錄理解為記錄檔案屬性資訊的檔案)linux 檔案授權給使用者,對應到指令上,就是可以執行ls;w權限代表可寫,表示可以更改檔案、目錄名,對應到指令上,就是可以執行touch、mkdir、rmdir、rm等指令;x代表執行權限,表示可以執行這個目錄,對應到指令上,就是可以用cd步入到該目錄。
2.隱藏屬性權限
#linux系統存在一些隱藏屬性,可確保檔案安全性
查看可用如下的指令:
lsattr -a
-a表示查看所有檔案目錄,要是只看目錄linux版qq,可加-d選項。
若要對某個檔案/目錄新增或刪掉隱藏屬性權限,可用如下的指令:
chattr -a filename<span class="token comment">#删除权限</span> chattr +i filename<span class="token comment">#添加权限</span>
其中i选项和a选项对文件和目录又有不同的影响:
对文件来说,假如有i隐藏属性,这么该文件就是一个只读文件,难以更改;假如有a隐藏属性,只能降低数据(echo重定向形式),不能更改数据(因而a隐藏属性适宜于日志)。
对目录来说,假如有i隐藏属性,只能更改目录下已有文件,不能完善新文件以及删掉已有文件(只读目录);假如有a隐藏属性,只能新建或更改文件,不能删掉、改名已有文件。
3.ACL权限
ACL=accesscontrollist英文为“访问控制列表”
作用:可对单一用户设置文件、目录的rwx权限。
形成缘由:出于安全考虑,linux系统下的文件、目录默认对其他人有较低权限,假如某个其他人身分想要查看他不具备权限的目录或文件,要么切换他的身分为所有者,要么让他以所有者的身分登入系统,而这两种做法都具有一定安全隐患,为此,为解决该问题,ACL权限形成。
设置ACL权限可用如下的命令格式:
setfacl -m u:user:rwx filename
-m选项用于设置ACL权限,user表示要修改权限的用户,rwx表示要赋于该用户的权限情况,filename表示要赋于ACL权限的文件或目录。
查看ACL权限可用如下的命令格式:
getfacl filename <span class="token comment">#在当前文件目录下</span>
ACL权限优势:
我们可以用getfacl查看早已设置好ACL权限的文件或目录:
<span class="token comment">#省略输出…………</span> user::rwx <span class="token comment">#文件所有者权限</span> user:user:rwx <span class="token comment">#用户user对该文件的权限</span> group::rwx<span class="token comment">#文件所属组权限</span> other::---<span class="token comment">#文件其他人权限</span> 省略输出…………
可以看见,用户user不属于所有者、所属组或其他人,而是单独为他设置了对该文件的rwx权限。这样在保证其他人难以查看、修改该文件的情况下,也可同时确保用户user更改、查看该文件,达到安全目的。
二、特殊文件——可执行文件
linux系统存在着好多可执行文件,比如各类命令、shell脚本等,这么对于个别只能由超级用户才可执行的命令怎么给普通用户执行呢?这就涉及到了SetUID和SetGID的概念。
1.SetUID权限
linux系统示例:/bin/passwd命令
可以查看一下该文件的权限情况
可以见到,在所有者执行权限的x位上弄成了s,这就表示某个可执行文件被赋于了SUID权限。
作用:普通用户也可用passwd命令更改密码(给用户某执行文件的所有者权限)。
运作过程:
普通用户使用passwduser,意图更改密码------passwd拥有SUID权限且user对passwd命令有x权限------user暂时拥有root权限,以所有者身分执行passwd-------root可把密码写入密码文件/etc/shadow-----更改完成,user身分恢复。
SetUID权限添加、删除命令:
<span class="token function">chmod</span> u+s filename <span class="token comment">#给文件/目录添加SUID权限</span> <span class="token function">chmod</span> u-s filename <span class="token comment">#给文件/目录删除SUID权限</span>
2.SetGID权限
linux系统示例:/usr/bin/locate
可以见到,在所所属组执行权限的x位上弄成了s,这就表示某个可执行文件被赋于了SGID权限。
作用:普通用户也可用locate命令查询mlocate.db数据库(给用户某执行文件的所属组权限)。
运作过程:
普通用户使用locate,意图查询系统上的某文件------locate拥有SGID权限且user对locate命令有x权限------user暂时拥有slocate组权限,以所属组身分执行locate-------该组对mlocate.db数据库有r权限-----user可以查询------查询结束,user组身分恢复。
SetGID权限添加、删除命令:
<span class="token function">chmod</span> g+s filename <span class="token comment">#给文件/目录添加SGID权限</span> <span class="token function">chmod</span> g-s filename <span class="token comment">#给文件/目录删除SGID权限</span>
3.StickyBIT权限
linux系统示例:/tmp
可以看见,该目录的其他人执行权限上的x位弄成了t,这就表示该目录具有BIT权限。
BIT权限特征:仅对目录有效;仅其他人可用。
作用:设置了BIT权限的目录,任何人都可以在该目录下创建、修改文件,但只有该文件的所有者或root用户才可删掉文件。(谁创建,谁删掉)
权限添加、删除命令:
<span class="token function">chmod</span> o+t filename <span class="token comment">#给文件/目录添加BIT权限</span> <span class="token function">chmod</span> o-t filename <span class="token comment">#给文件/目录删除BIT权限</span>
4.umask权限
在命令行执行umask命令时,会听到4位权限数:
其中后三位就表示一个文件/目录的rwx默认权限,它限制了新创建的文件/目录的初始权限(文件644,目录755)
这儿还存在第一位上的0,这一点结合上述执行文件三种权限即可解释:
SetUID权限:以s表示,对应所有者,用十补码4表示(100);
SetGID权限:以s表示,对应所属组,用十补码2表示(010);
BIT权限:以t表示,对应其他人,用十补码1表示(001)。
这样,任何一个文件/目录的权限可表示如下:
rwxsrwxsrwxt
ugo
三、系统命令
尽管超级用户具备linux所有命令的执行权限,但一个多用户系统假如全都由root用户管理是不现实的,正常的管理方式是root用户把一些系统命令授权给普通用户,让其协助管理,这才符合多用户系统的管理思路。
操作对象:系统命令(与上述权限不同)
工具:
1.su:切换用户身分,赋于某用户所有系统命令权限。(有安全隐患)
使用方式:su-用户名(不加为root)
弊病:非root用户切换他人须要密码。
2.sudo:限制用户使用系统命令
授权形式:
<span class="token function">vi</span> /etc/sudoers visudo <span class="token comment">#两种方式选一个即可</span>
更改模板:
root ALL<span class="token operator">=</span>(ALL)ALL <span class="token comment">#用户主机名身份执行的命令 </span>
赋于过程(以user为例):
如果root用户想要赋于普通用户user重启服务器权限
<span class="token function">vi</span> /etc/sudoers <span class="token comment">#在root下加一行即可</span> rootALL<span class="token operator">=</span><span class="token punctuation">(</span>ALL<span class="token punctuation">)</span> ALL userALL<span class="token operator">=</span>usr/sbin/reboot
sudo作用:把原本只能由root用户执行的命令赋于普通用户执行。
四、小结
关于linux系统的权限,主要分为三个部份:普通文件/目录、可执行文件和系统命令,每种权限的诞生都是为了解决相关的权限问题,所以要明白为何会有这些权限。
以上是Linux 系統權限解析:普通檔案與目錄的權限分類及表示方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!