首先我們看su在man幫助頁中的解釋su - run a shell with substitute user and group ids, 也就是說通過su我們不用提供使用者和組名就可以啟動乙個shell程式. su是乙個二進位制的可執行檔案, 命令所在的檔案路徑是/bin/su, 下面是通過命令列查詢su檔案的型別及所在路徑:
例一:
islab$ which su
/bin/su
例二:
islab$ file /bin/su
/bin/su: setuid elf 32-bit lsb shared object, intel 80386, version 1 (sysv), for gnu/linux 2.6.9, stripped
例三:
islab$ll /bin/su
-rwsr-xr-x 1 root root 24060 jan 10 2007 /bin/su
例三和例二中我們可以看到su是乙個setuid程式(setuid位可以使用chmod u+s進行設定, 如ls顯示su檔案所有者屬性起用了setuid位), 在這種情況下, su可以獲得比其所有者更高的許可權, 也就是說su執行的時候, 您的許可權會被提公升, 將與root的許可權等同.
例三中我們可以看到檔案的型別是elf 32-bit lsb shared object(設定了setuid位), 也就是說程式需要libc這樣的函式庫, 也需要使用了elf直譯器, 並遵守lsb 規範.
問一: 普通使用者可以從其它機器拷貝su命令.
答: 他們可以從其它機器拷貝su命令, 但是他們將不能對su進行正確的許可權設定比如chown root和chmod u+s等等. 所以拷貝過來su不能夠正常工作.
問二: 如何防止普通使用者執行su命令.
答: 1). 你可以建立乙個專門的組, 只有組成員才能執行su命令
islab# groupadd wheel
islab# useradd wheel
islab# chown root:mysql /bin/bash
islab# chmod 4750 /bin/su
2). 只有root使用者才能執行su命令.
islab# chmod 4700 /bin/su
3). 通過pam庫實現只有wheel組成員才能執行su命令, 下面例子中增加了zhaoke帳號到wheel組中.
islab# groupadd wheel
islab# useradd wheel
islab# usermod -g wheel zhaoke
islab# ll /lib/security/pam_wheel.so
-rwxr-xr-x 1 root root 5692 feb 22 2007 /lib/security/pam_wheel.so
islab# vi /etc/pam.d/su
增加下面一行auth required /lib/security/pam_wheel.so use_uid
然後儲存退出su配置檔案.
問三: 普通使用者雖然不能執行su命令, 但是還有可能通過蠻力攻擊獲得root的密碼
答: 普通使用者可以在shell或者ssh方式對root帳戶進行蠻力攻擊.我們可以考慮使用一些安全工具如pam_abl來對ssh進行保護. pam_abl將能在設定的時間內對錯誤登陸的帳戶進行進行臨時封禁. 當然普通使用者也可以通過程式漏洞提公升許可權, 比如緩衝區溢位。
linux命令su與su 的差別
su命令和su 命令最大的本質差別就是 su僅僅是切換了root身份。但shell環境仍然是普通使用者的shell。而su 連使用者和shell環境一起切換成root身份了。僅僅有切換了shell環境才不會出現path環境變數錯誤。su切換成root使用者以後,pwd一下,發現工作資料夾仍然是普通使...
linux中su與su 命令的區別
linux中su與su 命令的區別 在我的fc6系統下用普通使用者登入,然後用su命令切換到超級使用者,再輸入ifconfig命令,報錯 command not find。而如果用su 命令切換到超級使用者,再輸入ifconfig命令則能成功執行。這其中涉及的就是su命令與su 命令的區別,man ...
Linux下su與su 命令的區別
使用 su root 切換到root使用者後,不可以使用service命令 使用 su 後,就可以使用service命令了。原因 su命令和su 命令區別就是 su只是切換了root身份,但shell環境仍然是普通使用者的shell 而su 連使用者和shell環境一起切換成root身份了。只有切換...