1. 程式人生 > >二周第四次課(2月1日)

二周第四次課(2月1日)

可執行文件 打開 軟鏈接 分區 chm 失敗 sha span 結果

2.18 特殊權限set_uid

2.19 特殊權限set_gid

2.20 特殊權限stick_bit

2.21 軟鏈接文件

2.22 硬連接文件



2.18 特殊權限set_uid

#which passwd

/usr/bin/passwd

# ls -l /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd


-rws中的s是 set_uid的權限

passwd 支持讓普通用戶更改自己密碼

改密碼需要通過修改密碼的文件/etc/shadow

/etc/shadow的權限是----------

*root是超級權限,可以更改任何權限,即

使文件是-------權限,也是如此。

*想讓普通用戶更改密碼,又不想讓普通用戶更改密碼文件,set_suid可以實現。


如果執行了set_uid,無論是所有者、所屬組或其他用戶,都會被臨時賦予所有者的權限


*set_uid 的作用是保證普通用戶臨時擁有所有者身份的命令。

如果給文件設定set_uid文件的前提條件是,這個文件必須是二進制可執行文件。


給ls加set_uid權限

打開新的xhsell ssh連接,切換到其他用戶登錄,

$su -aming

$ls /root

權限不夠

切換回最初原本的Xshell連接

#chmod u+s /usr/bin/ls

#ls -l /usr/bin/ls

-rwsr-xr-x. /usr/bin/ls

標紅代表ls set_uid賦予成功。


切換其他用戶窗口,

$ls -ld /root/

dr-xr-x--- 發現other user還是沒有s權限,此處是因為otheruser只是被臨時賦予權限,並不是永久,所以可以臨時執行root的ls命令權限。


去掉s權限

#chmod u-s /usr/bin/ls


嘗試利用#chmod u=rws /usr/bin/ls來修改權限,

#chmod u=rws /usr/bin/ls

#ls -l /usr/bin/ls

-rwSr-xr-x. /usr/bin/ls

之所以變成S,是因為缺少x權限,此時加上x權限即可,如下

#chmod u+x /usr/bin/ls

#ls -l /usr/bin/ls

-rwsr-xr-x. /usr/bin/ls



2.19 特殊權限set_gid


set_gid和set_uid區別的地方就是,set_gid是對所屬組(g)權限修改,而set_uid是所有者(u)權限修改。


此處先還原u的權限,修改為rwx

#chmod u=rwx

#chmod g+s /usr/bin/ls

#ls -l /usr/bin/ls

-rwxr-sr-x. root root /usr/bin/ls

set_uid 跟set_gid文件功能都相似,只不過是換了角色而已。set_uid的角色是所有者,而set_gid的角色是所屬組。


set_gid 可以用在目錄上。

為234/創建gid權限

#chmod g+s 234

#ls -ld 234

drwxrwsr-x root root /234/目錄

目錄顏色沒變, 不過g的x變成了s.


#chown :user1 234 所屬組設為user1,(所有者root)

#ls -ld 234

drwxrwsr-x. root user1 234/

創建的目錄的子文件所屬組也是user1

#touch 234/aminglinux

#ls -l 234/

-rw-rw-r-- root user1 aminglinux


創建子目錄am,結果所屬組也是user1

#mkdir 234/am

ls -l 234/

drwxrwsr-- root user1 am/

-rw-rw-r-- root user1 aminglinux


g-s,創建文件,結果發現,取消s之後,所屬組變回root.

#chmod g-s 234

#touch 234/aminglinux111

#!ls

drwxrwsr-- root user1 am

-rw-rw-r-- root user1 aminglinux

-rw-rw-r-- root root aminglinux111


*總結:

當作用在文件上,跟set_uid作用是類似的,讓普通用戶執行文件並使用set_gid的時候,臨時擁有所屬組的身份權限。當給一個目錄設置set_gid,在這目錄創建子目錄和子文件的時候,這兩者的所屬組會跟著當前父級目錄保持一致。



2.20 特殊權限stick_bit



stick bit權限,/tmp用得比較多。

drwxrwxrwt.中rwt.的t就是stick_bit,防刪除位

#ls -ld /tmp/

drwxrwxrwt. /tmp/


stick_bit

可以理解為防刪除位。文件是否可以被某用戶刪除,主要取決於該文件所在的目錄是否對該用戶具有寫權限。如果沒有寫權限,則這個目錄下所有的文件都不能刪除,同時也不能添加新的文件。如果希望用戶能夠添加文件,但不能刪除該目錄下其他用戶的文件,則可以對父目錄增加該權限。設置該權限後,就算用戶對目錄具有寫權限,也不能刪除其他用戶的文件。


test

新窗口切換到aming用戶,

$cd /tmp/

$touch aming

$ls -l

-rw-rw-r-- aming aming aming

所有者,所屬組都是aming

$ vi aming 隨便寫入數據,保存退出wq

$chmod 777 aming

$ls -l aming

-rwxrwxrwx. aming aming aming

$su - user1


1號窗口(2號窗口其他用戶作用)切換到user1下

#su - user1

$cd /tmp/

$ls

aming


$vi aming 可以修改,wq。

$rm -f aming 嘗試刪除 ,提示報錯。

此處證明user1不能刪除aming創建的文件。

只有root和aming刪除


test2

$mkdir user1

$chmod 777 user1

$ls -l

drwxrwxrwx user1 user1 user1

切換至aming用戶,

$cd user1

$ls

$touch 1.txt

$mkdir 234

$ls -l

$cd user1

$ ls -l 文件和目錄都沒有w權限

-rw-rw-r-- aming aming 1.txt

drwxrwxr-x aming aming 234

測試能否刪除,文件和目錄均可刪除。

*疑問:為什麽普通用戶沒有w權限,都可以刪除目錄和文件。

因為 所刪除的東西的父目錄 /user1 寫了w權限,而不是看刪除文件和目錄本身的權限。


總結:

stick bit的作用就是防止別的用戶刪除自己的文件(除了root)。



2.21 軟鏈接文件


軟鏈接類似於windows的快捷方式,

例如 /bin是一個軟鏈接文件

#ls -l /bin

lrwxrwxrwx. root root /bin ->usr/bin

ls命令位於/bin/ls,

所以平時使用的ls命令,相當於使用/usr/bin/ls

舉此例子為軟鏈接格式,

/bin/ls --> /usr/bin/ls .


路徑長度影響軟鏈接文件大小

lib64/ 軟鏈接集合

絕對路徑用法

#ln -s 源文件路徑 目的文件路徑

相對路徑用法

#ln -s yum.log aming.log

*這樣做的弊端是:源的文件名稱和路徑發生改變的話,直接影響文件打開的效果。


用處

磁盤快滿的時候,該磁盤某文件還在寫入數據,導致容量越來越膨脹的時候,應該怎麽做?

/boot/aming.log 不停大量寫入數據進去/boot 此時/boot即將膨脹爆滿,

此時應該這樣做,

#cp /boot/aming.log /aming.log

#rm /boot/aming.log

同時,迅速

#ln -s /aming.log /boot/aming.log.

這樣,服務還是會寫入/boot/aming.log

因為寫入是通過路徑尋找文件。



2.22 硬鏈接文件


*硬鏈接核心的地方,就是兩個文件使用了同一個inode。(同一indoe只占用一份空間)

硬連接不支持目錄,不支持跨分區,只支持文件。


硬鏈接用法 ln 源 定義名稱

#ln 1.txt 1_heard.txt

再做個軟鏈接

#ln -s 1.txt 1_sorft.txt


#ls -l

-rw-rw-r--. 2 1_heart.txt

lrwxrwxrwx. 1 1_sorft.txt-> 1.txt

-rw-rw-r-- 2 1.txt


#ls -i

.....395 1.txt

.....395 1_heard.txt

.....394 1_sorft.txt


刪除源1.txt查看屬性

#rm -f 1.txt

#ls -l

-rw-rw-r-- 1 1_heard.txt

lrwxrwxrwx 1 1_sorft.txt>空 閃紅

此時發現,源文件不在,硬鏈接還在,inode號從2變成1。軟鏈接報錯,指向路徑失敗。


二周第四次課(2月1日)