Ubuntu

阻止其他使用者查看我的文件

  • November 14, 2016

參考:root/超級使用者可以讀取我的讀保護文件嗎?

我的 Ubuntu 使用者帳戶名稱為“user-3121”,類型為“管理員”。還有一個名為“admin”的帳戶,類型為“Administrator”。我如何確定“admin”是否可以以我的身份登錄或以其他方式查看“user-3121”中的文件?

我與其他使用者討論了這個問題,我們嘗試修改/etc/sudoers以保護我的文件:

Cmnd_Alias   SHELLS = /bin/sh,/bin/bash,/bin/ksh, /usr/bin/x11/passwd

Cmnd_Alias   SU = /usr/bin/su,/bin/su,/usr/bin/gksudo,/usr/bin/sudo,/usr/bin/su bash,/usr/bin/sudo /bin/bash,/usr/sbin/visudo

Cmnd_Alias   PASS = /usr/bin/passwd root,/bin/* * root,/bin/* * sysadmin,/bin/* * /home/sysadmin,/usr/bin/passwd

Cmnd_Alias      EDIT= /bin/* /etc/sudoers,/bin/* sudoers,/bin/* /etc/passwd,/bin/* passwd,/bin/* /etc/group,/bin/* group,/bin/* /etc/shadow,/bin/* shadow,/*/*/[a-z]* /etc/sudoers,/*/*/[a-z]* /etc/passwd,/*/*/[a-z]* /etc/group,/*/*/[a-z]* /etc/shadow,/*/*/[a-z]* sudoers,/*/*/[a-z]* passwd,/*/*/[a-z]* group,/*/*/[a-z]* shadow

Cmnd_Alias   CMDS = /usr/sbin/userdel * sysadmin,/usr/sbin/userdel sysadmin,/usr/sbin/deluser * sysadmin,/usr/sbin/deluser sysadmin

root    ALL=(ALL) ALL, !CMDS

%admin ALL=(ALL) ALL, !SHELLS, !SU, !CMDS, !PASS, !EDIT
%sudo  ALL=(ALL) ALL,!SHELLS, !SU, !CMDS, !PASS, !EDIT

admin ALL=(ALL) ALL
administrator ALL=(ALL) ALL

如果“管理員”仍然可以讀取我的數據,我該如何防止呢?還有這個配置是如何工作的,它允許“user-3121”執行一些 sudo 命令,但它實際上並沒有在任何地方提到“user-3121”?

PS我是唯一知道“root”使用者密碼的人,所以我可以使用“su”命令以root身份登錄。

好的,現在我明白這是在說什麼了

Cmnd_Alias   CMDS = /usr/sbin/userdel * sysadmin, ...
%admin ALL=(ALL) ALL, !SHELLS, !SU, !CMDS, !PASS, !EDIT

不幸的是,這是一個糟糕的主意。

在安全方面,一般原則是您應該能夠描述您所允許的內容。能夠列出不允許的內容並確保您沒有遺漏任何內容是非常罕見

具體來說

$ cp /usr/sbin/userdel ./letsbefriends
$ sudo ./letsbefriends sysadmin

(同樣的原則適用於專門阻止sudo su/的配置sudo sudo)。

作為一個積極的例子,請考慮您的“管理員”使用者的允許任務列表

$$ * $$:

# admin can run `reboot`.  (They can't run e.g. `reboot --force`).
admin ALL=(ALL) reboot ""

為什麼

$$ is $$/etc/sudoers 中缺少“user-3121”?

好問題!user-3121 是 sudo的成員。在/etc/sudoers,這個組是由行匹配的%sudo


你可能會想“這是你給我看的一個可愛的黑客。當然我也可以想辦法阻止它”。您可以採取一些方法。但是你會為此而爭論,並試圖不接受一般原則。

另一個人來了,有不同的想法。這是做什麼的?

$$ ** $$

$ sudo /proc/self/exe sh

這是您必須將系統配置為阻止的兩個不同範例。你可以相信我知道的更多。 最終會編寫這個複雜的自定義配置。複雜的系統不可避免地包含錯誤。您是否想創建自定義系統、對其進行故障排除和維護?通常您想嘗試使用您安裝的作業系統,這樣您就可以從開發、記錄和支持它的所有工作中受益。


$$ * $$在實踐中,將 sudo 限制為特定目的確實比人們可能想要的要困難得多。我希望依靠 sudo 規則來提供真正的安全屏障並不常見。相反,它用於委派特定任務的權限,同時保護使用者免受他們自己的傷害。它減少了在其寶貴的硬碟驅動器或網卡上的韌體上出錯和寫入零的機會。 $$ ** $$劇透: sudo /proc/self/exe sh將以 root 使用者身份執行 shell。

它繞過定義為的阻止列表SU,使用與使用不在阻止列表中的替代文件名執行命令 (sudo) 相同的技術。因此,第二個實例sudo以使用者身份成功執行root。發布的配置允許root使用者通過sudo. 因此,允許第二個sudo實例以 root 使用者身份執行 shell。

生成的 shell 可用於將任何命令作為root. shell 不使用 sudo,因此它不會查看sudoers. 例如,shell 可以執行su以登錄到以任何給定使用者身份執行的 shell,而無需知道他們的密碼。

引用自:https://unix.stackexchange.com/questions/322783