1. 程式人生 > >Linux許可權管理

Linux許可權管理

1、ACL許可權的簡介與開啟

    Linux許可權只有所屬者,所屬組和其他人,身份許可權不夠用,但是ACL許可權可以解決這個問題,具體做法是找到這個人的id,賦予其許可權即可。

    檢視分割槽的ACL許可權是否開啟:

        dumpe2fs -h /dev/sda3

    #dumpe2fs命令是查詢指定分割槽詳細檔案系統資訊的命令

    #-h選項:僅僅顯示超級塊中資訊,而不顯示磁碟塊組的詳細資訊。

預設掛載選項:


臨時分割槽開啟ACL許可權:

    mount -o remount,acl /

    #重新掛載根分割槽,並掛載加入acl許可權

永久開啟分割槽ACL許可權:

    vi /etc/fstab

    #加入ACL許可權

    mount -o remount /

    #重新掛載檔案系統或者重啟系統,使得修改生效

檢視ACL命令:

    getfacle 檔名

    #檢視ACL許可權

設定ACL許可權的命令:

    setafacl 【選項】 檔名

        -m    設定ACL許可權

        -x      刪除指定的ACL許可權

        -b     刪除所有的ACL許可權

        -d     設定預設的ACL許可權

        -k      刪除預設的ACL許可權

        -R      遞迴設定ACL許可權

在根下建立工程目錄,建立使用者和組,新增使用者到組



setfacl -m u st:rx /project/

#給使用者st賦予r-x許可權,使用“u:使用者名稱:許可權”格式


最大有效許可權mask

mask是用來指定最大有效許可權的。如果我給使用者賦予了ACL許可權,是需要和mask許可權“相與”才能得到使用者的真正許可權

修改最大有效許可權

setfacl -m m:rx 檔名

#設定mask許可權為r-x。使用“m:許可權”格式

刪除ACL許可權:

setfacl -x u 使用者名稱 檔名

#刪除指定使用者的ACL許可權

setfacl -x g:組名 檔名

#刪除指定使用者組的ACL許可權

setfacl -b 檔名

#會刪除檔案的所有acl許可權


遞迴ACL許可權:

    遞迴是父目錄在設定ACL許可權時,所有的子檔案和子目錄也會擁有相同的ACL許可權

    setfacl -m u:使用者名稱:許可權-R 檔名

+ 是賦予了其他許可權

預設的ACL許可權

預設的ACL許可權的作用是如果給父目錄設定了預設的ACL許可權,那麼父目錄中所有新建的子檔案都會繼承父目錄的ACL許可權。

    setfacl -m d:u使用者名稱:許可權 檔名

    #只是針對於新的使用者才確定的,已經確定的檔案不能賦予其許可權


2、檔案特殊許可權

1、SetUID

功能:

1、只有可執行的二進位制程式才能設定SUID許可權

2、命令執行者要對該程式擁有x(執行)許可權

3、命令執行者在執行該程式時獲得該程式檔案屬主的身份(在執行程式的過程中靈魂附體為檔案的屬主)

4、SetUID許可權只在該程式執行過程中有效,也就是說身份改變只在程式執行過程中有效

passwd命令擁有SetUID許可權,所有普通使用者可以修改自己的密碼。

    ll /usr/bin/passwd

    cat命令沒有SetUID許可權,所以普通使用者不能檢視/etc/shadow檔案內容

    ll /bin/cat


設定SetUID的方法

    4代表SUID

        chmod 4755 檔名

        chmod u+s檔名

含義:

    1代表著SBIT許可權

    2代表著SGID許可權

    4代表著SUID許可權

1+2+4=7代表者SUID SGID SBIT不過並沒有意義 針對的操作物件不一樣

    change mod 改變許可權是方式



取消SetUID的方法

    chmod 755 檔名

    chmod u-s 檔名


S是報錯,沒有符合suid的執行許可權


切換為普通使用者:


只要是給vim設定了suid,那麼切換為普通使用者可以把配置檔案普通使用者id修改為0,普通使用者成為了超級使用者



2、SetGID

3、Sticky BIT

3、檔案系統屬性chattr許可權

4、Sudo許可權