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

chattr命令

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

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

選項:bash

 選項 選項說明

+服務器

増加權限工具

-測試

刪除權限this

=spa

等於某權限.net

i日誌

若是對文件設置屬性,那麼不容許對文件進行刪除、更名,也不能添加和修改數據;code

若是對目錄設置 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 路徑中,不然沒法執行。

相關文章
相關標籤/搜索