SetUid的許可權問題

2021-07-30 14:27:04 字數 2098 閱讀 4936

1什麼是setuid

我們知道,在linux的命令列下執行「ps -aux」命令時,就會列出當前系統中的所有程序,在其中可以看到每個程序都和使用者的真實id關聯,實際上,linux中的每個程序還跟乙個稱為有效使用者id(set user id)緊密關聯。前者用於表示該程序由那個使用者控制,

後者用於為新建立的檔案分配所有權,檢查檔案訪問許可等操作,同時有效使用者為該檔案的所有者。linux系統核心允許乙個程序以呼叫乙個setuid程式(或顯示執行setuid系統呼叫)的方式,來改變其自身的有效使用者id。

2如何配置setuid許可權

在linux中,不管是root使用者還是普通使用者,都可以使用「password」命令來更改自身的密碼。但是,linux中的密碼通常是儲存在「/etc/paswd」和「/etc/shadow」檔案中,這兩個檔案對系統安全至關重要,因此只有root使用者才能對其執行讀寫操作。以管理員的身份登陸系統,在linxu提示符下執行「ls /etc/passwd /etc/shadow」命令,在返回資訊中可以看到普通使用者對上述這兩個檔案並沒有寫許可權,因此從檔案屬性的角度看,普通使用者在更改自身密碼時,是無法將密碼資訊寫入到上述檔案中的,哪麼使用者是怎樣成功的更改密碼的呢?

實際上,問題的關鍵不在於密碼檔案本身,而在於密碼更改命令「passwd」。在提示符下執行命令「ls /usr/bin/passwd」,在返回資訊中的檔案所有者執行許可權位上顯示「s」字樣,表示「passwd」命令具有setuid許可權,其所有者為root,這樣普通使用者在執行「passwd」命令時,實際上以有效使用者root的身份來執行的,並具有了相應的許可權,從而將新的密碼寫入到「/etc/passwd」和「/etc/shadow」檔案中,當命令執行完畢,該使用者的身份立即消失。如何設定setuid許可權呢?使用「chmod」命令即可為指定檔案設定setuid許可權,例如「chmod 4*** filename」命令,取消setuid許可權的命令為「chmod *** filename」。類似的,執行「chmod 2*** filename」命令可以設定setgid許可權,使用「chmod *** filename」命令即可取消setgid許可權,如果執行「chmod 6*** filename」命令,即可同時為指定檔案設定setuid和setgid,執行命令「chmod 0*** filename」,即可同時取消指定檔案的setuid和setgid許可權。例如以root使用者登陸系統,執行「chmod 0511 /usr/bin/passwd」命令,就可以取消「passwd」命令的setuid許可權,這樣普通使用者就無法修改自己的密碼了。

3setuid許可權的安全性

使用setuid可以靈活的調整所有檔案所有者許可權,但是也為系統的安全性帶來了隱患。如果root使用者為指定的程式檔案配置過大的setuid許可權,那麼就會為黑客或者非法使用者開啟了侵入系統的大門。例如在linux中可以使用「vi」命令來編輯檔案,但是,對於普通使用者而言,當其試圖使用命令「vi /etc/shadow」來修改密碼檔案時,系統就會彈出「/etc/shadow : permission denied」的警告提示,從而禁止其對密碼檔案的非法修改。但是,如果在root使用者環境中執行「which vi」命令,就可以看到「vi」命令實際上是「vim」命令的別名,其真實路徑為「/usr/bin/vim」,這樣執行命令"chmod 6755 /usr/bin/vim",就可以將「vi」命令的所有者更改為root,這樣在普通的使用者環境中,就可以使用「vi」命令來編輯任何檔案(例如「/etc/shadow」),這樣,即使是普通使用者也可以將密碼檔案清空,從而實現無密碼登陸linux,給系統的安全帶來的威脅不言而喻。因此,對可能給系統安全帶來危害的程式來說,應該盡量不要隨意為其配置setuid許可權。

4 如何禁用setuid許可權

對於存放在敏感資料的分割槽而言,有時可能希望禁用setuid許可權設定功能。例如對"/home" 分割槽禁用setuid許可權,可以找到修改其配置檔案「/etc/fstab」, 執行命令「vi /rtc/fstab」,可以看到「label=/home /home ext3 defaults 1 2」等資料,我們只需在上述「default」關鍵字的後面新增「nosuid」 關鍵字即可,例如使用「vi」命令將其修改為「lanbel=/home /home ext3 default , nosuid 1 2」,之後執行命令「mountoremount /home」,這樣即使對「/home」分割槽上的任何可執行檔案配置了setuid許可權,也是無效的。這樣就在很大程度上保護了系統的安全。

setuid的作用 深入理解SetUID

在linux系統中每個普通使用者都可以更改自己的密碼,這是合理的設定。問題是 使用者的資訊儲存在檔案 etc passwd中,使用者的密碼儲存在檔案 etc shadow中,也就是說使用者更改自己密碼時是修改了 etc shadow檔案中的加密密碼,但是,look rw r r 1 root roo...

setuid的作用 Linux下Setuid命令

置頂 linux下setuid命令!linuxauthenticationkillfile加密list 在linux系統中每個普通使用者都可以更改自己的密碼,這是合理的設定。問題是 使用者的資訊儲存在檔案 etc passwd中,使用者的密碼儲存在檔案 etc shadow中,也就是說使用者更改自己...

cp a的許可權問題

最近開始學習鳥哥的linux私房菜。剛入門,遇到一點點小問題。看到鳥哥描述說cp a可以複製文件的所有屬性。但實驗之後發現不是,使用者的ower和group始終是當前複製著的ower和group。經過王老闆的指導,自己有所領悟。理解上的偏差,只是大部分的屬性cp過來。如果cp所有許可權則會出現普通使...