linux
是乙個多使用者多工的作業系統,身為乙個優秀安全的多使用者作業系統,
linux
對使用者之間資源的訪問許可權管理得十分嚴謹。
linux
每個檔案和目錄都有一組訪問許可權標誌位,用
9個二進位制位表示: 如用
ls -l
顯示/etc/passwd
檔案:
-rw-r--r-- 1 root root 1687 passwd 代表
passwd
檔案的訪問許可權是:所屬使用者(擁有者)可讀可寫;組使用者可讀;其他使用者可讀;(其中
passwd
所屬使用者為
root
,所屬為
root組)
1、按這許可權標記意味著只有
passwd
的所屬者
root
對其有可寫許可權,那麼真得用其它使用者登入的情況下就不能對其進行寫操作嗎?
首先我們得明白
linux
系統是怎麼判定訪問者是誰。其實我們無論圖形操作和終端命令操作都是呼叫一段程式對某個檔案資源的訪問。而程序(執行中的程式)中有個
euid
(有效使用者)這個才是系統用來判定訪問者的根據。意味著即使是非
root
使用者只要執行的程式程序中的
euid==root
,那麼系統就認為訪問者是
root
,就能對
/etc/passwd
進行可寫操作! 2
、那麼什麼時候非
root
使用者執行程序的
euid
才會是root呢?
這就關係到今天的主題
suid
位的作用。在程式沒設定
suid
的情況下,哪個使用者執行該程式,該程式程序中的
euid
就為該使用者
uid。
比如使用者
jaxonxu
執行了許可權描述為
-rwxr-xr-x root root foo
的foo
程式,那麼該程序的
euid
就為jaxonxu
,就不能對
/etc/passwd
進行寫操作。
但在某程式檔案設定了
suid
位以後,比如
bar程式,其許可權描述為:
-rwsr-xr-xroot root bar
(注意在所屬使用者可執行位里標的是
s,表明檔案設定了
suid
並且所屬使用者可執行,具體請翻看
apue
)當jaxonxu
執行bar
程式,該程序的
euid
為程式的所屬使用者
root
(這就是
suid
的作用),因此該程序就可以對
/etc/passwd
進行可寫操作(即使是非
root
使用者執行的)!
這就是passwd
命令可以讓非
root
使用者修改
/etc/passwd
檔案的原因。
我們用which passwd
定位到passwd
命令的位置
/usr/bin/passwd
,用ls -l
檢視:
-rwsr-xr-x 1 root root 37100 passwd 可知
/usr/bin/passwd
命令檔案設定了
suid
的標記位。
粘滯位(粘著位)的作用
檔案的粘滯位 sticky 位是作什麼用的?普通檔案的sticky位會被linux核心忽略,目錄的sticky位表示這個目錄裡的檔案只能被owner和root刪除 粘著位 sticky bit 如果使用者對目錄有寫許可權,則可以刪除其中的檔案和子目錄,即使該使用者不是這些檔案的所有者,而且也沒有讀或...
位運算的作用
運算 and運算通常用於二進位製取位操作,例如乙個數 and 1的結果就是取二進位制的最末位。這可以用來判斷乙個整數的奇偶,二進位制的最末位為0表示該數為偶數,最末位為1表示該數為奇數 運算 or運算通常用於二進位制特定位上的無條件 賦值,例如乙個數or 1的結果就是把二進位制最末位強行變成1。如果...
櫥窗位作用
櫥窗位的作用 開虛擬店鋪那麼久了,竟然還不懂得什麼是櫥窗位,更不懂有什麼作用,直到現在,店鋪轉化成實物店鋪,店鋪沒生意,才每天泡論壇,去 大學,上 打聽去了解,去琢磨,才發現櫥窗位的重要性。是不是還有店主跟那時的我一樣了,那就趕快來看看吧,這是我的一點拙見。櫥窗推薦,跟掌櫃推薦不一樣哦,櫥窗推薦是為...