私のパブリックIPなどを使用して、家に非常に小さなWireguardサーバーを設定しました。私はできるだけ自分自身を保護し、強力なパスワードを設定するためにNATを使用します。
友達がSSHを介してこのサーバーにアクセスしようとしています。彼はフレンドリーですが、彼を完全に信頼したくなく、彼にアクセス権を与えたいだけです。彼がホームフォルダをめちゃくちゃにしないようにし、「sudo」または「su」を実行しないようにしたいと思います。
どうすればいいですか?
ChatGPTの提案を試してvisudoを変更しました。たとえば、次のようになります。
user ALL=(ALL) ALL, !DISABLE_SU, !DISABLE_SUDO, !/usr/bin/su *,!/usr/bin/sudo *, !/usr/sbin/visudo, !/usr/bin/* *sudoers
ただし、sudo su user
セッションでこれを行うと、期待した「このコマンドを実行する権限がありません」というメッセージの代わりに「...を受け取りました」というメッセージが表示されます。
どんなアイデアがありますか?
ありがとう
答え1
そのsudoers
行を削除してください!
これがデフォルトなので、誰かにアクセスできないと言う必要はありません。さらに、攻撃面がわずかな主要なセキュリティホールが開いています。次のコマンドは友達アカウントで実行できますuser
。
sudo -s
これでさえ、
cp /bin/sh mysh
chmod a+x mysh
sudo ./mysh
どちらの場合も、ルートシェルがあります。
また、無制限の実行権限を持つグループに友達のアカウントを追加しないでください。 (通常はこれまたはグループsudo
です。)sudo
wheel
ちなみに、visudo
過去に期待通りに編集した場合は、おそらく次のような警告が表示されたでしょう。/etc/sudoers
Warning: /etc/sudoers:37:122: Cmnd_Alias "DISABLE_SU" referenced but not defined
Warning: /etc/sudoers:37:122: Cmnd_Alias "DISABLE_SUDO" referenced but not defined
たぶんあなたはそれを定義しましたが、あなたの質問に言及されていません。これを修正しても、ここで説明されている問題は回避されません。
「と言及もありました。sudo su user
会議でこのようなことをするとき...sudo
オプションがないコマンドは権限root
を与えます。ルートになると、このコマンドを実行して友達のアカウントにアクセスできます。アカウントでコマンドを実行すると、友達のアカウントにアクセスするにはパスワードが必要です。アカウントであり、アカウントはファイルの権限を確認することです。su user
user
/etc/sudoers
sudo
sudo -s
答え2
何もする必要はありません。デフォルトでは、ユーザーにはsudo
アクセス権がなく、su
このユーザーを使用するにはrootパスワードが必要です。
sudo
ユーザーを追加したり、すでにsudoers
アクセス権を持つグループに追加したりしてユーザーが明示的に使用できるようにしない限り、ユーザーsudo
はそれを使用できません。