引用:ルート/スーパーユーザーは読み取り保護されたファイルを読み取ることができますか?
私の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
て、パスワードがわからない特定のユーザーとして実行されているシェルにログインできます。