1. 程式人生 > 其它 >linux 檔案許可權-sudo 錯誤恢復-ls檢視檔案許可權詳解

linux 檔案許可權-sudo 錯誤恢復-ls檢視檔案許可權詳解

出現問題:

sudo su
sudo: error in /etc/sudo.conf, line 0 while loading plugin "sudoers_policy"
sudo: /usr/lib/sudo/sudoers.so must be only be writable by owner
sudo: fatal error, unable to load plugins

解決方案,和相關資料:

如果能進root環境,如通過串列埠可以:

chmod 644 /usr/lib/sudo/sudoers.so

chown -R root /usr/lib/sudo

否則嘗試:

pkexec chmod go-w /usr/lib/sudo/sudoers.so

原因:

/usr/lib/sudo/sudoers.so 必須只對其所有者可寫 sudo: 致命錯誤,無法載入外掛

至於為何組和其他使用者對sudoers.so有寫的許可權時會有問題還沒時間詳細研究,下面是相關一些資料:

https://blog.csdn.net/weixin_43459866/article/details/113455200

https://blog.csdn.net/u013197629/article/details/73608613#t1

https://blog.csdn.net/kexiaoling/article/details/51096164

sudo許可權管理:

在linux中,我們可以使用chmod + chown來控制一個使用者對某個檔案的許可權。簡單的說就是某一個使用者是否對某一個檔案/資料夾有讀/寫/執行的許可權。

如果想編輯或執行其他使用者的檔案怎麼辦,這時候可以使用sudo命令

sudo ⇒ substitute user do 譯為:代替某個使用者去做。 語法sudo -u user  預設就是root

如果任意就去代替某個使用者做某些事就太危險了,那還要檔案許可權控制幹什麼。所以,sudo有自己的許可權控制系統,其實都維護在了/etc/sudoers檔案中。

visudo ⇒ vi sudo 即使用vi編輯sudoers的檔案

sudo許可權配置是有語法規則的,如下:

root ALL=(ALL:ALL) ALL
第一欄位指出當前規則要適用於哪一個使用者

root ALL =(ALL:ALL) ALL
第一個ALL指明瞭當前規則要適用於哪一個主機,ALL就是所有主機。
root ALL=(ALL :ALL) ALL
第二個ALL指出了root使用者可以替代所有使用者執行命令

root ALL=(ALL:ALL ) ALL
第三個ALL指出了可以替代所有組執行命令

root ALL=(ALL:ALL) ALL
最後一個ALL欄位代表可以執行哪些命令,此處ALL即可以執行所有命令

總結來說:哪個使用者可以替代哪些其他使用者(組)執行哪些命令。

針對上面那句話就是root使用者可以替代任意使用者執行任意命令所以他的許可權就是無限制的。

Linux許可權詳解(chmod、600、644、700、711、755、777、4755、6755、7755)

Linux下檔案的許可權型別一般包括讀,寫,執行。對應字母為 r、w、x。

Linux下許可權的粒度有 擁有者 、群組 、其它組 三種

u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o 表示其他以外的人,a 表示所有(包含上面三者)。

+ 表示增加許可權,- 表示取消許可權,= 表示唯一設定許可權

r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。

例子:

設定檔案 a.conf 許可權為擁有者與其所屬同一個群組 可讀寫,其它組可讀不可寫

chmod a+r,ug+w,o-w a.conf

使用數字代表權限規則:

我們規定 數字 4 、2 和 1表示讀、寫、執行許可權(具體原因可見下節許可權詳解內容),即 r=4,w=2,x=1 

例:rwx = 4 + 2 + 1 = 7    rw = 4 + 2 = 6      rx = 4 +1 = 5

更改檔案擁有者(chown命令)

chown [可選項] user[:group] file...

user : 新的檔案擁有者的使用者

group : 新的檔案擁有者的使用者群體(group)

例子:chown -R root /usr/lib/sudo

十位許可權表示

-rw------- (600) 只有擁有者有讀寫許可權。
-rw-r--r-- (644) 只有擁有者有讀寫許可權;而屬組使用者和其他使用者只有讀許可權。
-rwx------ (700) 只有擁有者有讀、寫、執行許可權。
-rwxr-xr-x (755) 擁有者有讀、寫、執行許可權;而屬組使用者和其他使用者只有讀、執行許可權。
-rwx--x--x (711) 擁有者有讀、寫、執行許可權;而屬組使用者和其他使用者只有執行許可權。
-rw-rw-rw- (666) 所有使用者都有檔案讀、寫許可權。
-rwxrwxrwx (777) 所有使用者都有讀、寫、執行許可權。

第一位代表的是檔案的型別

d代表的是目錄(directroy)
-代表的是檔案(regular file)
s代表的是套字檔案(socket)
p代表的管道檔案(pipe)或命名管道檔案(named pipe)
l代表的是符號連結檔案(symbolic link)
b代表的是該檔案是面向塊的裝置檔案(block-oriented device file)
c代表的是該檔案是面向字元的裝置檔案(charcter-oriented device file)

後九位解析: 我們知道Linux許可權總共有三個屬組,這裡我們給每個屬組使用三個位置來定義三種操作(讀、寫、執行)許可權,合起來則是許可權的後九位。 上面我們用字元表示許可權,其中 -代表無許可權,r代表讀許可權,w代表寫許可權,x代表執行許可權。(後九位的前3位對應擁有者許可權、4-6位對應群組許可權、7-9對應其他組許可權)

ls -l命令檢視某一個目錄會得到一個7個欄位的列表

第1欄位: 檔案屬性欄位

第2欄位:檔案硬連結數

第3欄位:檔案(目錄)擁有者

第4欄位:檔案(目錄)擁有者所在的組

第5欄位: 檔案所佔用的空間(以位元組為單位)

第6欄位:檔案(目錄)最近訪問(修改)時間

  lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit

  檔案建立的時間可以通過touch命令來修改。如:

  [root@localhost ~]# touch exit

  可以把exit的建立時間修改為當前時間,另外,一個檔案還有最後訪問時間,最後修改時間等屬性。

  這些屬性可以用ls 的其它引數顯示出來。

第7欄位:檔名