Linux權限管理 chattr命令、lsattr命令、sudo命令


chattr命令

chattr命令用來修改文件系統的權限屬性

chatrr 只有 root 用戶可以使用,用來修改文件系統的權限屬性,建立凌駕於 rwx 基礎權限之上的授權。
chatrr 命令格式如下:
[root@localhost ~]# chattr [+-=] [選項] 文件或目錄名

選項:

 選項 選項說明

+

増加權限

-

刪除權限

=

等於某權限

i

如果對文件設置屬性,那么不允許對文件進行刪除、改名,也不能添加和修改數據;

如果對目錄設置 i 屬性,那么只能修改目錄下文件中的數據,但不允許建立和刪除文件

a

如果對文件設置 a 屬性,那么只能在文件中増加數據,但是不能刪除和修改數據;

如果對目錄設置 a 屬性,那么只允許在目錄中建立和修改文件,但是不允許刪除文件

e

Linux 中的絕大多數文件都默認擁有 e 屬性,表示該文件是使用 ext 文件系統進行存儲的,

而且不能使用"chattr -e"命令取消 e 屬性

例如:

1. 給文件賦予屬性

#建立測試文件
[root@localhost ~]# touch ftest 
 
#增加屬性 
[root@localhost ~]# chattr +i ftest

#刪除屬性
#被賦予i屬性后,root不能刪除
[root@localhost ~]# rm -rf flest
rm:無法刪除"ftesr":不允許的操作

#也不能修改文件中的數據 
[root@localhost ~]# echo 111>>ftest
-bash:ftest:權限不夠

2. 給目錄賦予i屬性

#建立測試目錄
[root@localhost ~]# mkdir dtest

#再建立一個測試文件abc
[root@localhost dtest]# touch dtest/abc

#給目錄賦予i屬性
[root@localhost ~]# chattr +i dtest/

#dtest目錄不能新建文件
[root@localhost ~]# cd dtest/
[root@localhost dtest]# touch bed
touch:無法創建"bcd":權限不夠

#但是可以修改文件內容
[root@localhost dtest]# echo 11>>abc
[root@localhost dtest]# cat abc
11

#不能刪除
[root@localhost dtest]# rm -rf abc
rm:無法刪除"abc":權限不夠
此時,flest 文件和 dtest 目錄都變得非常強悍,即便你是 root 用戶,也無法刪除和修改它。若要更改或刪除文件,也必須先去掉 i 屬性才可以。命令如下:
[root@localhost ~]# chattr -i ftest
[root@localhost ~]# chattr -i dtest/
 在某個項目中,我們可以每天自動實現把服務器的日志備份到指定目錄,備份目錄可設置 a 屬性,變為只可創建文件而不可刪除。命令如下:
#建立備份目錄
[root@localhost ~]# mkdir -p /back/log

#賦予a屬性
[root@localhost ~]# chattr +a /back/log/

#可以復制文件和新建文件到指定目錄中
[root@localhost ~]# cp /var/log/messages /back/log/

#但是不允許刪除
[root@localhost ~]# rm -rf /back/log/messages
rm:無法刪除"/back/log/messages":不允許的操作
說明:chattr 命令不宜對目錄 /、/dev/、/tmp/、/var/ 等進行設置,嚴重者甚至容易導致系統無法啟動。

lsattr 命令

命令格式:

[root@localhost ~]# lsattr 選項 文件名 選項:

選項:

選項 選項說明

-a

顯示所有文件和目錄

-d

如果目標是目錄,則僅列出目錄本身的屬性,而不會列出文件的屬性

例如:查看/back/log/目錄,其擁有a和e屬性

[root@localhost ~]#lsattr -d /back/log/
-----a------e- /back/log/

sudo命令

管理員作為特權用戶,可授權普通用戶協助完成日常管理。
現在較為流行的工具是 sudo,幾乎所有 Linux 都已默認安裝。還要注意一點,我們在前面介紹的所有權限,比如普通權限、默認權限、ACL權限、特殊權限、文件系統屬性權限等操作的對象都是文件和目錄,但是 sudo 的操作對象是系統命令,也就是 root 把本來只能由超級用戶執行的命令賦予普通用戶執行。
sudo 使用簡單,管理員 root 使用 vi sudo 命令即可編輯其配置文件 /etc/sudoers 進行授權。命令如下:
[root@localhost ~]# visudo
…省略部分輸出…
root ALL=(ALL) ALL
# %wheel ALL=(ALL) ALL

這兩行是系統為我們提供的模板,我們參照它寫自己的就可以了 

格式說明:

root ALL=(ALL) ALL
#用戶名 被管理主機的地址=(可使用的身份) 授權命令(絕對路徑)
#%wheel ALL=(ALL) ALL
#%組名 被管理主機的地址=(可使用的身份) 授權命令(絕對路徑)

參數的具體含義如下:

用戶名/組名:代表 root 給哪個用戶或用戶組賦予命令,注意組名加"%"。

用戶可以用指定的命令管理指定 IP 地址的服務器。如果寫 ALL,則代表用戶可以管理任何主機;如果寫固定 IP,則代表用戶可以管理指定的服務器。如果我們在這里寫本機的 IP 地址,則不代表只允許本機的用戶使用指定命令,而代表指定的用戶可以從任何 IP 地址來管理當前服務器。

可使用的身份:就是把來源用戶切換成什么身份使用,(ALL) 代表可以切換成任意身份。這個字段可以省略。

授權命令:代表 root 把什么命令授權給普通用戶。默認是 ALL,代表任何命令,這當然不行,如果需要給哪個命令授權,則只需寫入命令名即可。不過需要注意,一定要寫絕對路徑。

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

由 root 用戶添加,如下行:
[root@localhost ~】# visudo
zhangsan ALL=/sbin/shutdown -r now
指定組名用百分號標記,如 %admgroup,多個授權命令之間用逗號分隔。用戶 zhangsan 可以使用 sudo -l 查看授權的命令列表。
#切換成zhangsan用戶
[root@localhost ~]# su - zhangsan

#查看授權的命令列表
[zhangsan@localhost ~]$ sudo -l

#需要輸入zhangsan用戶的密碼
[sudo] password for zhangsan:
User zhangsan may run the following commands on this host:
(root) /sbin/shutdown -r now

可以看到zhangsan 用戶擁有了 shutdown -r now的權限

提示輸入密碼為 zhangsan 普用戶的密碼,是為了驗證操作服務器的用戶是不是 zhangsan 用戶本人。zhangsan 用戶需要執行時,只需使用如下命令:
[zhangsan@localhost ~]$ sudo /sbin/shutdown -r now

zhangsan 用戶即可以重啟服務器。注意,命令寫絕對路徑,或者把 /sbin 路徑導入普通用戶 PATH 路徑中,否則無法執行。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM