1. 程式人生 > >Linux權限管理詳解

Linux權限管理詳解

linux權限管理 特殊權限之acl管理 sudo授權

Linux權限管理詳解

1Linux 的基本權限:

1Linux的基本權限說明

-rw-r--r-- 1 root root 08-11 01:45 aa.txt

權限位是十位

第一位:代表文件類型

- 普通文件

d 目錄文件

l 鏈接文件

b 塊設備文件

c 字符設備文件

s 套接字

p 管道

其余九位

執行 執行 執行

r w x r w x r w x

4 2 1 4 2 1 4 2 1

文件所有者(u 文件所屬組(g 其他用戶(o

r4):允許查看文件內容;允許顯示目錄內的文件列表

w2):允許修改文件內容;允許對目錄內的文件進行添加、刪除、移動

執行 x1):允許文件文件執行;允許目錄的切換

2)文件歸屬

所有者(屬主):擁有該文件或目錄的用戶

所屬組(屬組):用戶改文件或目錄的組

3)修改文件權限的命令及用法

命令名稱:chmod

命令英文原意:change the permissions mode of a file

命令所在路徑:/bin/chmod

功能描述:修改文件的權限

例:

chmod u+x aa aa文件的所有者添加x權限

chmod g+w,o+w aa aa文件的所屬組和其他人添加w權限

chmod u=rwx aa aa文件的所有者賦予

rwx權限

chmod 644 aa 修改aa文件的權限為644,對應為rw-r--r—

chmod -R 777 aa 遞歸修改aa目錄及其子目錄和文件權限為777

-R 遞歸修改目錄下子選項的權限

說明:對文件有寫權限,只代表可以修改這個文件;要想刪除文件,需要對文件所在目錄有寫權限,只要對目錄有寫權限,目錄中的文件,就算是 root 創建的,普通用戶一樣能刪

除。目錄一般都同時有 r-x 權限,如果一個目錄只有 r 卻沒有 x,你能用 ls 查看,卻

不能 cd 進去!

4)文件或目錄的所有者和所屬組修改

命令名稱:chown

命令英文原意:change file ownership

命令所在路徑:/bin/chown

功能描述:修改文件或目錄的所有者、所屬組

例:

chown user1 aa aa文件的所有者修改為user1用戶

chown user1:user1 aa aa文件的所有者修改為user1用戶並且所屬組修改為user1

chown :user1 aa aa文件的所屬組修改為user1

chown -R [屬主:屬組] 目錄 遞歸修改目錄和文件的所有者和所屬組

命令名稱:chgrp

命令英文原意:change file group ownership

命令所在路徑:/bin/chgrp

功能描述:改變文件或目錄的所屬組

語法:chgrp 用戶組文件或目錄

例:chgrp adm file1 改變文件file1的所屬組為adm

命令名稱:umask

功能描述:顯示和設置默認掩碼值

777

-022

--------------

755

就是創建文件的默認權限

總結:Linux的安全機制,不給新建文件x權限。

2ACL 權限

1ACL權限的介紹

Linux基本的權限控制僅可以對所屬用戶、所屬組、其他用戶進行的權限控制,而不能精確地控制每個用戶的權限。ACL規則就是用來解決這個問題的。使用ACL規則,我們可以針對單一賬戶設置文件及目錄的訪問權限。在centos7xfs文件系統中默認開啟了ACL權限

2ACL 權限的使用

格式:setfacl [選項] {-m|-x} {u:username:rwx} 文件或目錄

選項:

-m :添加 ACL 權限

-x :刪除某項 ACL 權限

-b :清空所有 ACL 權限

-R :實現目錄上 ACL 權限的遞歸

d :設置默認 ACL 權限

1:添加 ACL 權限

setfacl –m u:u1:rwx a.txt 添加 u1 用戶對 a.txt 文件的 rwx 權限

2:刪除某項 ACL 權限

setfacl -x u:u1 a.txt 刪除 u1 用戶在 a.txt 文件上的 ACL 權限

3:清空所有 ACL 權限

setfacl -b a.txt 清空在 a.txt 文件上的所有 ACL 權限

4:實現目錄上 ACL 權限的遞歸(目錄)

setfacl -R –m u:u2:rwx aa 添加 u1 用戶對 aa 目錄以及目錄內子選項的 rwx 權限

5:設置默認 ACL 權限(目錄)

空目錄:

setfacl -m d:u:u3:rwx bb

添加 u3 用戶對目錄 bb rwx 權限,並且在 bb 目錄裏新建的文件 u3用戶都有 rwx 權限

非空目錄:

setfacl –m d:u:u3:rwx bb

setfacl -R –m u:u3:rwx bb

第一條設置默認權限,第二條遞歸設置 ACL 權限

註:前五個例子使用的 u 均可換成 g,然後實現特殊組對文件的 ACL 權限

6:設置最大有效權限 mask(目錄)

setfacl -m m:rx cc cc 目錄添加默認最大權限為 rx,其他 ACL 權限不得超出此權限

3sudo 授權

1sudo授權的介紹

在企業實踐中,不是每一個系統管理員都能用 root 來管理服務器,所以需要給普通用戶賦予一部分超級管理員權限。然後普通用戶在使用超級管理員的命令時前面加上sudo 命令就可以正常使用超級管理員的命令了。/sbin/usr/sbin裏面的命令只有超級管理員才能執行,這個時候,就需要root來使用sudo授權普通用戶使用部分超級用戶才能使用的命令了。

2sudo授權的系統驗證步驟

1. 當普通用戶執行/sbin /usr/sbin 下的命令時,系統會查詢/etc/sudoers 文件中是否有 root 給的授權

2. 當查詢普通用戶已擁有授權後,需要輸入普通用戶的密碼來確認用戶身份

3. 若密碼輸入成功後,則執行對應已經授權的命令

3sudo授權的方法

給普通用戶授權使用超級用戶命令方法一般是使用visudo命令來打開/etc/sudoers這個配置文件來給普通用戶授權,普通用戶使用這些被授權的超級用戶命令時,只需在命令的前面添加上sudo加空格即可執行這些授權的超級用戶命令。

註意:/etc/sudoers 文件內有固定語法結構,使用其它文檔編輯器可能會造成配置文件出現錯誤,所以必須使用 visudo 命令打開該配置文件

## Allow root to run any commands anywhere

root ALL=(ALL) ALL

a1 192.168.115.0/24=(ALL) ALL

上面的元素介紹:

roota1系統的哪個用戶能使用 sudo 命令,即被授權者。也可以是組,組要在前面加%表示

ALL或某個網段:可以被管理的服務器的網絡地址,寫自己或 ALL 代表任何來源地址都可以管理本臺服務器,192.168.115.0/24代表這個網段的服務器可以執行sudo授權的命令。

(ALL)或某個權限較大的用戶:是以誰的身份來執行,ALL:ALL 就代表 root 可以任何人的身份來執行命令。

ALL或命令的絕對路徑:可以使用什麽命令,多條命令用逗號隔開(必須寫絕對路徑)

1:給 admin 用戶賦予 root 所有命令權限

admin ALL=ALL ALL

2:授權 zhangsan 用戶可以重啟服務器

zhangsan ALL=root /sbin/shutdown -r now

3:授權 web 用戶可以管理 IP192.168.110.39 web 服務器

NO.1:可以使用 Apache 管理腳本

web 192.168.110.39=root /etc/rc.d/init.d/httpd reload/etc/rc.d/init.d/httpd configtest

reload 重新加載配置文件使之生效;configtest 檢查配置文件是否有語法錯誤。

NO.2:可以修改 Apache 的配置文件

web 192.168.110.39=(root) /bin/vi /etc/httpd/conf/httpd.conf

sudo 不僅僅能授權超級管理員的命令,還能授權普通命令以及詳細選項和參數。

NO.3:可以更新網頁文件

設置合理權限即可(w),可以通過給/var/www/html目錄設置ACL權限,讓 web 用戶對/var/www/html 有寫權限即可。

4:授權 add 用戶可添加普通用戶

add ALL=/usr/sbin/useradd add 用戶可以添加普通用戶

add ALL=/usr/bin/passwd [A-Za-z]* !/usr/bin/passwd“”,!/usr/bin/passwd root

add 用戶可以給新添加用戶修改密碼,不允許修改 root 用戶的密碼

4、文件特殊權限

1SetUID 權限

1、當一個具有執行權限的文件設置 SetUID 權限後,用戶執行這個文件時將以文件所有者的身份執行

特點:

2、只有可以執行的二進制程序才能設定 SUID 權限

3、命令執行者要對該程序擁有 x(執行)權限

4、命令執行者在執行該程序時獲得該程序文件屬主的身份(在執行程序的過程中靈魂附體為文件的屬主)

5SetUID 權限只在該程序執行過程中有效,也就是說身份改變只在程序執行過程中有效

例:普通用戶使用/usr/bin/passwd命令修改自己的密碼

普通用戶使用/usr/bin/passwd 的那一瞬間臨時調用了 root 的身份,進行對/etc/passwd /etc/shadow 進行了修改,當信息修改完成後,立即釋放 root 身份變回了自己普通用戶的身份。

註意:如果取消了/usr/bin/passwd SetUID 權限,則普通用戶無法修改密碼

危險的 SetUID:如果給/usr/bin/vim這個命令設置 SetUID 權限後,普通用戶即可使用/usr/bin/vim命令來修改/etc/passwd等系統文件,使普通用戶成為超級用戶。

2 SetGID 權限(文件和目錄)

1、針對文件的作用:

1)只有可執行的二進制程序才能設置 SGID 權限

2)命令執行者要對該程序擁有 x(執行)權限

3)命令執行在執行程序的時候,組身份升級為該程序文件的屬組

4SetGID權限同樣只在該程序執行過程中有效,也就是說組身份改變只在程序執行過程中有效

2、針對目錄的作用:

1)普通用戶必須對此目錄擁有 r x 權限,才能進入此目錄

2)普通用戶在此目錄中的有效組會變成此目錄的屬組

3)普通用戶對此目錄擁有 w 權限時,新建的文件的默認屬組是這個目錄的屬組

例:創建long目錄,並給long目錄SetGID權限,讓普通用戶有寫權限。

[root@localhost ~]# mkdir /long

[root@localhost ~]# chmod g+s /long/

[root@localhost ~]# chmod 777 /long/

[root@localhost ~]# ls -ld /long/

drwxrwsrwx 2 root root 6 11 29 15:56 /long/

[root@localhost ~]# su - a1 切換到普通用戶a1

[a1@localhost ~]$ cd /long/ 讓普通用戶進入/long目錄創建文件

[a1@localhost long]$ touch 1.txt

[a1@localhost long]$ ls -l

總用量 0

-rw-rw-r-- 1 a1 root 0 11 29 16:04 1.txt

最後發現普通用戶創建的1.txt文件的所屬組不是a1,而是 root

3Sticky BIT 權限

Sticky BIT 粘著位,也簡稱為 SBITSBIT 目前僅針對目錄有效,它的作用如下:

1、粘著位目前只對目錄有效,普通用戶對該目錄擁有 w x 權限,即普通用戶可以在此目錄擁有寫入權限

2、如果沒有粘著位,因為普通用戶擁有 w 權限,所以可以刪除此目錄下所有文件,包括其他用戶建立的文件。一但賦予了粘著位,除了 root 可以刪除所有文件,普通用戶就算擁有 w 權限,也只能刪除自己建立的文件,但是不能刪除其他用戶建立的文件。

5、總結SetUID 權限,SetGID 權限,Sticky BIT 權限的設置

1)各種特殊權限所對應的權限數值

權限名稱

對應的權限數值

SetUID

4

SetGID

2

Sticky BIT

1

讀(r

4

寫(w

2

執行(x

1

註意:權限值由4位數字組成,從左往右第一位是特殊權限值,第二位是文件或目錄所有者的權限值,第三位是文件或目錄的所屬組的權限值,第四位是文件或目錄其他人的權限值。

2SetUID 權限,SetGID 權限,Sticky BIT 權限的設置

上面知道了這些特殊權限所對應的權限值,那麽我們就可以使用chmod來進行設置。

1:給文件/long/1.txt設置SetUID權限

方法1

[root@localhost long]# chmod u+s 1.txt 設置SetUID權限

[root@localhost long]# ls -l

總用量 0

-rwSrw-r-- 1 a1 root 0 11 29 16:04 1.txt

[root@localhost long]# chmod u-s 1.txt 取消SetUID 權限

[root@localhost long]# ls -l

總用量 0

-rw-rw-r-- 1 a1 root 0 11 29 16:04 1.txt

方法2

[root@localhost long]# chmod 4755 1.txt 使用權限值設置SetUID權限

[root@localhost long]# ls -l

總用量 0

-rwsr-xr-x 1 a1 root 0 11 29 16:04 1.txt

[root@localhost long]# touch 2.txt

[root@localhost long]# chmod 755 1.txt 使用權限值取消SetUID權限

[root@localhost long]# ls -l

總用量 0

-rwxr-xr-x 1 a1 root 0 11 29 16:04 1.txt

2:給/long/2.txt設置SetGID 權限。

方法1

[root@localhost long]# chmod g+s 2.txt 設置SetGID 權限

[root@localhost long]# ls -l

總用量 0

-rw-r-Sr-- 1 root root 0 12 1 16:27 2.txt

[root@localhost long]# chmod g-s 2.txt 取消SetGID 權限

[root@localhost long]# ls -l

總用量 0

-rw-r--r-- 1 root root 0 12 1 16:27 2.txt

方法2

[root@localhost long]# chmod 2744 2.txt 使用權限值設置SetGID 權限

[root@localhost long]# ls -l

總用量 0

-rwxr-Sr-- 1 root root 0 12 1 16:27 2.txt

[root@localhost long]# chmod 744 2.txt 使用權限值取消SetGID 權限

[root@localhost long]# ls -l

總用量 0

-rwxr--r-- 1 root root 0 12 1 16:27 2.txt

3:給/long目錄設置Sticky BIT 權限

方法1

[root@localhost long]# chmod o+t /long/ 設置Sticky BIT 權限

[root@localhost long]# ls -ld /long/

drwxr-xr-t 2 root root 19 12 1 16:35 /long/

[root@localhost long]# chmod o-t /long/ 取消Sticky BIT 權限

[root@localhost long]# ls -ld /long/

drwxr-xr-x 2 root root 19 12 1 16:35 /long/

方法2

[root@localhost long]# chmod 1755 /long/ 使用權限值設置Sticky BIT 權限

[root@localhost long]# ls -ld /long/

drwxr-xr-t 2 root root 19 12 1 16:35 /long/

[root@localhost long]# chmod 755 /long/ 使用權限值取消Sticky BIT 權限

[root@localhost long]# ls -ld /long/

drwxr-xr-x 2 root root 19 12 1 16:35 /long/

6、文件系統屬性設置(chattr可以限制root

格式:chattr [+-=] [選項] 文件或目錄

選項:

i:如果對文件設置 i 屬性,那麽不允許對文件進行刪除、改名,也不能

添加和修改數據;如果對目錄設置 i 屬性,那麽只能修改目錄下文件的

數據,但不允許建立和刪除文件

a:如果對文件設置 a 屬性,那麽只能在文件中增加數據,但是不能刪

除也不能修改數據;如果對目錄設置 a 屬性,那麽只允許在目錄中建立

和修改文件,但是不允許刪除

eLinux 中絕大多數的文件都默認擁有 e 屬性。表示該文件是使用 ext

件系統進行存儲的,而且不能使用“chattr -e”命令取消 e 屬性

查看文件系統屬性

格式:lsattr 選項 文件名

選項:

-a 顯示所有文件和目錄

-d 若目標是目錄,僅列出目錄本身屬性


Linux權限管理詳解