他のユーザーが自分のファイルを表示できないようにする[閉じる]

他のユーザーが自分のファイルを表示できないようにする[閉じる]

引用:ルート/スーパーユーザーは読み取り保護されたファイルを読み取ることができますか?

私のUbuntuユーザーアカウント名は「user-3121」、タイプは「Administrator」です。タイプが「admin」の「admin」というアカウントもあります。 「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としてログインできます。

ベストアンサー1

さて、今これが何を意味するのか理解できます。

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 ""

/etc/sudoersに "user-3121"がないのはなぜですか?

良い質問です! user-3121はsudoのメンバーですグループ/etc/sudoers、グループはlineと一致します%sudo


「あなたが私に見せてくれたそのトリックはかわいいですね。あなたができることはいくつかあります。しかし、あなたはそれについて議論し、一般的な原則を受け入れないようにします。

他の人は別のアイデアを思いついた。何が役に立ちますか? [**]

$ sudo /proc/self/exe sh

以下は、ブロックするようにシステムを構成する必要がある項目の2つの異なる例です。あなたは私がよりよく知っていると信じることができます。 あなたこの複雑なカスタム構成を作成しました。複雑なシステムには必然的にエラーが含まれます。カスタムシステムを作成し、問題を解決し、メンテナンスしたいですか?通常、あなたは仕事をしたいです。そしてオペレーティングシステムをインストールすると、開発、文書化、およびサポートに入るすべてのタスクの利点を享受できます。


[*] 実際に sudo を特定の目的に限定することは思ったよりも難しいです。実際のセキュリティバリアを提供するためにsudoルールに頼ることは一般的ではないと思います。代わりに、ユーザー自身を保護しながら、特定のタスクに対する権限を委任するために使用されます。誤って大切なハードドライブやネットワークカードのファームウェアにゼロを書き込む可能性が少なくなります。

[**]スポイラー:

sudo /proc/self/exe shシェルは root ユーザーとして実行されます。

SUブロックリストにない代替ファイル名を使用してコマンド(sudo)を実行するのと同じ手法を使用して、定義されたブロックリストをバイパスします。したがって、2番目のインスタンスはsudoユーザーとして正常に実行されていますroot。公開された設定により、rootユーザーはすべてのコマンドを実行できますsudo。したがって、2番目のsudoインスタンスはrootユーザーとしてシェルを実行できます。

結果シェルはすべてのコマンドを実行するために使用できますroot。シェルはsudoを使用しないため、検索しませんsudoers。たとえば、シェルを実行しsuて、パスワードがわからない特定のユーザーとして実行されているシェルにログインできます。

おすすめ記事