chattr命令
chattr命令用來修改文件系統的權限屬性
選項:
選項 | 選項說明 |
+ |
増加權限 |
- |
刪除權限 |
= |
等於某權限 |
i |
如果對文件設置屬性,那么不允許對文件進行刪除、改名,也不能添加和修改數據; 如果對目錄設置 i 屬性,那么只能修改目錄下文件中的數據,但不允許建立和刪除文件 |
a |
如果對文件設置 a 屬性,那么只能在文件中増加數據,但是不能刪除和修改數據; 如果對目錄設置 a 屬性,那么只允許在目錄中建立和修改文件,但是不允許刪除文件 |
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":權限不夠
[root@localhost ~]# chattr -i ftest
[root@localhost ~]# chattr -i dtest/
#建立備份目錄 [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":不允許的操作
lsattr 命令
命令格式:
[root@localhost ~]# lsattr 選項 文件名 選項:
選項:
選項 | 選項說明 |
-a |
顯示所有文件和目錄 |
-d |
如果目標是目錄,則僅列出目錄本身的屬性,而不會列出文件的屬性 |
例如:查看/back/log/目錄,其擁有a和e屬性
sudo命令
[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
#切換成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 路徑中,否則無法執行。