Linux
SUID 意外從 /bin/su 文件中刪除
它是一個生產伺服器 - CentOS 6.1
一些過去具有 root 訪問權限的使用者登錄到伺服器並從 /bin/su 文件中刪除了 SUID 位,然後退出了 root。現在我們無法切換回 root。伺服器上也禁用了 root 的 ssh 訪問,因此 root 無法直接登錄機器。由於我們既不能 su 到 root,也不能 ssh 作為 root,我們不能將 /bin/su 文件的 suid 位設置回來。(而且我們不能使用 su 在使用者之間切換)
它應該是怎樣的:
$ ll /bin/su -rwsr-xr-x. 1 root root 30092 Mar 10 2011 /bin/su
現在情況如何:
$ ll /bin/su -rwxr-xr-x. 1 root root 30092 Mar 10 2011 /bin/su
有什麼方法可以切換回 root 或以任何方式設置 SUID 位?
**注意:**我們希望避免重新啟動無網路使用者模式,因為服務器 24x7 都在使用並且停機時間有點困難。如果可以重新啟動,那麼我們可以簡單地以 root 身份使用單使用者模式登錄並重置該位。
隨意給出創造性的答案。我可以在我們的測試環境中測試您的答案。
一些選項:
sudo -i
,這是最明顯的選擇。sudo -l
然後尋找一個允許您使用的命令,您可以使用它來解決問題,例如:編輯由 root 執行的文件,例如 crontab、logrotate、executon yum/rpm…- 轉到控制台,並以 root 身份連接(如果我理解的話,只有 ssh 受到限制)
- 打開一個圖形會話,一些發行版有工具可以成為不依賴 sudo 的 root。此外,他們中的許多人都有一些更新管理器..也許你可以重新安裝提供的包
su
- 如果你有 puppet/chef/ansible/fai 之類的配置管理工具… 推送配置!
- 調查您的 crontab 以查看您是否可以編輯要升級的文件。
- 如果您的伺服器連接到中央身份驗證系統(尤其是 LDAP/nis),請創建一個具有高權限的帳戶(組輪,或使用者 uid=0)。
- 如果它是虛擬伺服器,請將其關閉,然後掛載並編輯文件系統。
一些銀彈:
- 以單使用者模式(紅帽)或指定
init=/bin/sh
(Debian 和 rhel/CentOS 7)重新啟動伺服器,然後修復權限。- 在 CD/DVD/USB/NetBoot 中重新啟動伺服器並使用恢復(或僅安裝和編輯)
還有一些真的很醜:
- 在你的系統中找到一個漏洞來破壞它!
如果您的系統管理員做得很好,普通使用者將無法做任何這些事情(但您是系統管理員)