小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

linux學習-文件的隱藏屬性

 懶人看書館 2021-02-06

Linux系統(tǒng)中的文件除了具備一般權限和特殊權限之外,還有一種隱藏權限,即被隱藏起來的權限,默認情況下不能直接被用戶發(fā)覺。明明權限充足但卻無法刪除某個文件的情況,或者僅能在日志文件中追加內(nèi)容而不能修改或刪除內(nèi)容,這在一定程度上阻止了黑客篡改系統(tǒng)日志的圖謀。

1.  chattr命令

chattr命令用于設置文件的隱藏權限,格式為“chattr [參數(shù)] 文件”。如果想要把某個隱藏功能添加到文件上,則需要在命令后面追加“+參數(shù)”,如果想要把某個隱藏功能移出文件,則需要追加“-參數(shù)”。chattr命令中可供選擇的隱藏權限參數(shù)非常豐富。

                     chattr命令中用于隱藏權限的參數(shù)及其作用

參數(shù)作用
i無法對文件進行修改;若對目錄設置了該參數(shù),則僅能修改其中的子文件內(nèi)容而不能新建或刪除文件
a僅允許補充(追加)內(nèi)容,無法覆蓋/刪除內(nèi)容(Append Only)
S文件內(nèi)容在變更后立即同步到硬盤(sync)
s徹底從硬盤中刪除,不可恢復(用0填充原文件所在硬盤區(qū)域)
A不再修改這個文件或目錄的最后訪問時間(atime)
b不再修改文件或目錄的存取時間
D檢查壓縮文件中的錯誤
d使用dump命令備份時忽略本文件/目錄
c默認將文件或目錄進行壓縮
u當刪除該文件后依然保留其在硬盤中的數(shù)據(jù),方便日后恢復
t讓文件系統(tǒng)支持尾部合并(tail-merging)
x可以直接訪問壓縮文件中的內(nèi)容

先來創(chuàng)建一個普通文件,然后立即嘗試刪除(這個操作肯定會成功):

[root@hushenjian ~]# echo "for Test" > linuxprobe
[root@hushenjian ~]# rm linuxprobe
rm: remove regular file ‘linuxprobe’? y

接下來我們再次新建一個普通文件,并為其設置不允許刪除與覆蓋(+a參數(shù))權限,然后再嘗試將這個文件刪除:

[root@hushenjian ~]# echo "for Test" > linuxprobe
[root@hushenjian ~]# chattr +a linuxprobe
[root@hushenjian ~]# rm linuxprobe
rm: remove regular file ‘linuxprobe’? y
rm: cannot remove ‘linuxprobe’: Operation not permitted

2.  lsattr命令

lsattr命令用于顯示文件的隱藏權限,格式為“l(fā)sattr [參數(shù)] 文件”。在Linux系統(tǒng)中,文件的隱藏權限必須使用lsattr命令來查看,平時使用的ls之類的命令則看不出端倪:

[root@hushenjian ~]# ls -al linuxprobe
-rw-r--r--. 1 root root 9 Feb 12 11:42 linuxprobe

一旦使用lsattr命令后,文件上被賦予的隱藏權限馬上就會原形畢露。此時可以按照顯示的隱藏權限的類型(字母),使用chattr命令將其去掉:

[root@hushenjian ~]# lsattr linuxprobe
-----a---------- linuxprobe
[root@hushenjian ~]# chattr -a linuxprobe
[root@hushenjian ~]# lsattr linuxprobe 
---------------- linuxprobe
[root@hushenjian ~]# rm linuxprobe 
rm: remove regular file ‘linuxprobe’? y

文件訪問控制列表

一般權限、特殊權限、隱藏權限其實有一個共性—權限是針對某一類用戶設置的。如果希望對某個指定的用戶進行單獨的權限控制,就需要用到文件的訪問控制列表(ACL)了。通俗來講,基于普通文件或目錄設置ACL其實就是針對指定的用戶或用戶組設置文件或目錄的操作權限。另外,如果針對某個目錄設置了ACL,則目錄中的文件會繼承其ACL;若針對文件設置了ACL,則文件不再繼承其所在目錄的ACL。

為了更直觀地看到ACL對文件權限控制的強大效果,我們先切換到普通用戶,然后嘗試進入root管理員的家目錄中。在沒有針對普通用戶對root管理員的家目錄設置ACL之前,其執(zhí)行結果如下所示:

[root@hushenjian ~]# su - linuxprobe
Last login: Sat Mar 21 16:31:19 CST 2017 on pts/0
[hushenjian@huhsenjian ~]$ cd /root
-bash: cd: /root: Permission denied
[hushenjian@hushenjian root]$ exit

1.  setfacl命令

setfacl命令用于管理文件的ACL規(guī)則,格式為“setfacl [參數(shù)] 文件名稱”。文件的ACL提供的是在所有者、所屬組、其他人的讀/寫/執(zhí)行權限之外的特殊權限控制,使用setfacl命令可以針對單一用戶或用戶組、單一文件或目錄來進行讀/寫/執(zhí)行權限的控制。其中,針對目錄文件需要使用-R遞歸參數(shù);針對普通文件則使用-m參數(shù);如果想要刪除某個文件的ACL,則可以使用-b參數(shù)。下面來設置用戶在/root目錄上的權限:

[root@hushenjian ~]# setfacl -Rm u:linuxprobe:rwx /root
[root@hushenjian ~]# su - linuxprobe
Last login: Sat Mar 21 15:45:03 CST 2017 on pts/1
[hushenjain@hushenjian ~]$ cd /root
[hushenjian@hushenjian root]$ ls
anaconda-ks.cfg Downloads Pictures Public
[hushenjian@hushenjian root]$ cat anaconda-ks.cfg
[hushenjain@hushenjian root]$ exit

怎么去查看文件上有那些ACL呢?常用的ls命令是看不到ACL表信息的,但是卻可以看到文件的權限最后一個點(.)變成了加號(+),這就意味著該文件已經(jīng)設置了ACL了。

[root@hushenjian ~]# ls -ld /root
dr-xrwx---+ 14 root root 4096 May 4 2017 /root

2.  getfacl命令

getfacl命令用于顯示文件上設置的ACL信息,格式為“getfacl 文件名稱”。想要設置ACL,用的是setfacl命令;要想查看ACL,則用的是getfacl命令。下面使用getfacl命令顯示在root管理員家目錄上設置的所有ACL信息。

[root@linuxprobe ~]# getfacl /root
getfacl: Removing leading '/' from absolute path names
# file: root
# owner: root
# group: root
user::r-x
user:linuxprobe:rwx
group::r-x
mask::rwx
other::---

sudo命令用于給普通用戶提供額外的權限來完成原本root管理員才能完成的任務,格式為“sudo [參數(shù)] 命令名稱”。sudo服務中可用的參數(shù)以及相應的作用如表5-7所示。

                                        sudo服務中的可用參數(shù)以及作用

參數(shù)作用
-h列出幫助信息
-l列出當前用戶可執(zhí)行的命令
-u 用戶名或UID值以指定的用戶身份執(zhí)行命令
-k清空密碼的有效時間,下次執(zhí)行sudo時需要再次進行密碼驗證
-b在后臺執(zhí)行指定的命令
-p更改詢問密碼的提示語

sudo命令具有如下功能:

限制用戶執(zhí)行指定的命令:

記錄用戶執(zhí)行的每一條命令;

配置文件(/etc/sudoers)提供集中的用戶管理、權限與主機等參數(shù);

驗證密碼的后5分鐘內(nèi)(默認值)無須再讓用戶再次驗證密碼。

當然,如果擔心直接修改配置文件會出現(xiàn)問題,則可以使用sudo命令提供的visudo命令來配置用戶權限。這條命令在配置用戶權限時將禁止多個用戶同時修改sudoers配置文件,還可以對配置文件內(nèi)的參數(shù)進行語法檢查,并在發(fā)現(xiàn)參數(shù)錯誤時進行報錯。

只有root管理員才可以使用visudo命令編輯sudo服務的配置文件。

visudo: >>> /etc/sudoers: syntax error near line 111 <<<
What now?
Options are:
(e)dit sudoers file again
(x)it without saving changes to sudoers file
(Q)uit and save changes to sudoers file (DANGER!)

使用visudo命令配置sudo命令的配置文件時,在sudo命令的配置文件中,按照下面的格式將第99行(大約)填寫上指定的信息:

誰可以使用  允許使用的主機=(以誰的身份)  可執(zhí)行命令的列表

[root@linuxprobe ~]# visudo
 96 ##
 97 ## Allow root to run any commands anywhere
 98 root ALL=(ALL) ALL
 99 linuxprobe ALL=(ALL) ALL

在填寫完畢后記得要先保存再退出,然后切換至指定的普通用戶身份,用sudo -l命令查看到所有可執(zhí)行的命令了(下面的命令中,驗證的是該普通用戶的密碼,而不是root管理員的密碼):

[root@hushenjian ~]# su - linuxprobe
Last login: Thu Sep 3 15:12:57 CST 2017 on pts/1
[hushenjian@hushenjian ~]$ sudo -l
[sudo] password for linuxprobe:此處輸入linuxprobe用戶的密碼
Matching Defaults entries for linuxprobe on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User linuxprobe may run the following commands on this host:
(ALL) ALL

接下來,作為一名普通用戶,是肯定不能看到root管理員的/root中的文件信息的,但是,只需要在想執(zhí)行的命令前面加上sudo命令就可以了:

[hushenjian@hushenjian ~]$ ls /root
ls: cannot open directory /root: Permission denied
[hushenjian@hushenjian ~]$ sudo ls /root
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos

但是考慮到生產(chǎn)環(huán)境中不允許某個普通用戶擁有整個系統(tǒng)中所有命令的最高執(zhí)行權,因此ALL參數(shù)有些不合適。如果需要讓某個用戶只能使用root管理員的身份執(zhí)行指定的命令,切記一定要給出該命令的絕對路徑,可以先使用whereis命令找出命令所對應的保存路徑,然后把配置文件第99行的用戶權限參數(shù)修改成對應的路徑即可:

[hushenjian@hushenjian ~]$ exit
logout
[root@hushenjian ~]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz
[root@hushenajian ~]# visudo
 96 ##
 97 ## Allow root to run any commands anywhere
 98 root ALL=(ALL) ALL
 99 linuxprobe ALL=(ALL) /usr/bin/cat

再次切換到指定的普通用戶,然后嘗試正常查看某個文件的內(nèi)容,此時系統(tǒng)提示沒有權限。這時再使用sudo命令就可以順利地查看文件內(nèi)容了:

[root@linuxprobe ~]# su - linuxprobe
Last login: Thu Sep 3 15:51:01 CST 2017 on pts/1
[linuxprobe@linuxprobe ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[linuxprobe@linuxprobe ~]$ sudo cat /etc/shadow
root:$6$GV3UVtX4ZGg6ygA6$J9pBuPGUSgZslj83jyoI7ThJla9ZAULku3BcncAYF00Uwk6Sqc4E36MnD1hLtlG9QadCpQCNVJs/5awHd0/pi1:16626:0:99999:7:::
bin:*:16141:0:99999:7:::
daemon:*:16141:0:99999:7:::
adm:*:16141:0:99999:7:::
lp:*:16141:0:99999:7:::
sync:*:16141:0:99999:7:::
shutdown:*:16141:0:99999:7:::
halt:*:16141:0:99999:7:::
mail:*:16141:0:99999:7:::
operator:*:16141:0:99999:7:::
games:*:16141:0:99999:7:::
ftp:*:16141:0:99999:7:::
nobody:*:16141:0:99999:7:::
………………省略部分文件內(nèi)容………………

每次執(zhí)行sudo命令后都會要求驗證一下密碼??梢蕴砑覰OPASSWD參數(shù),使得用戶執(zhí)行sudo命令時不再需要密碼驗證:

[hushenjian@hushenjian ~]$ exit
logout
[root@hushenjian ~]# whereis poweroff
poweroff: /usr/sbin/poweroff /usr/share/man/man8/poweroff.8.gz
[root@hushenjian ~]# visudo
 96 ##
 97 ## Allow root to run any commands anywhere
 98 root ALL=(ALL) ALL
 99 linuxprobe ALL=NOPASSWD: /usr/sbin/poweroff

當切換到普通用戶后再執(zhí)行命令時,不用再頻繁地驗證密碼。

[root@hushenjian ~]# su - hushenjian
Last login: Thu Sep 3 15:58:31 CST 2017 on pts/1
[hushenjian@hushenjian ~]$ poweroff
User root is logged in on seat0.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl poweroff -i'.
[hushenjian@hushenjian ~]$ sudo poweroff

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多