ユーザーのログインを防ぎ、Linuxで「su-user」を許可する方法は?


93

ユーザーに「su - user」を使用してログインさせ、SSHを使用してログインさせないようにするにはどうすればよいですか?

シェルをに設定しようとしました/bin/falseが、試みたときにsu動作しません。

ログインのみを許可する方法はいくつかありますsuか?

SSHを使用AllowUserする方法はありますか?(それが行く方法であれば、どのように私はこれをしますか)

回答:


113

あなたは使用することができますAllowUsersという / にAllowGroupsを使用すると、sshまたは経由でログインすることを許可されている唯一の少数のユーザー/グループがある場合DenyUsers / のDenyGroupsあなたがいるだけ少数のユーザー/グループ持っている場合ではないログインを許可します。これはsshを介したログインのみを制限することに注意してください。他のログイン方法(コンソール、ftpなど)がまだ可能です。ほとんどのsshインストールでは、これらのオプションを/ etc / ssh / sshd_configファイルに追加する必要があります。

ログインシェルを/ bin / falseに設定している場合は、使用できますsu -s /bin/bash user/ bin / bashを選択したシェルに置き換えます)


すべてに感謝します。私は私の質問に対して2つ以上の賛成票を獲得することを期待していませんでした:)私は「su -s ...」コンストラクトが好きで、コンソール/ ftpは良い点です。私は本当に「su -s」のようなものを求めていました。
NoozNooz42

3
su -sトリックは金です。たとえば、apache、nobodyなどのアクセス許可をテストする必要があるシステムアカウントに常に使用します。通常、su-user -s / bin / bashを実行します。オプションの引数-は、ユーザーが直接ログインした場合にユーザーが期待する環境と同様の環境を提供するために使用できます。
dmourati

2
あなたは、余分なダッシュはそれを行うだろう渡して、(たとえば、/ etc / profileをからの)環境変数をロードする必要がある場合:su - -s /bin/bash user
Leonsの

13

それでもsuを動作させたい場合は、一時シェルとしてsuを使用するsudo -u [username]-s /bin/bash、suに渡すことができます。それらは両方ともシェルがない場合に同じことをします/etc/passwd


7

アカウントにパスワードがない場合(passwd -d username)、それらは対話的にログインできません(コンソール、SSHなど)。有効なシェルがある場合、suは引き続き機能します。ただし、「インタラクティブ」に注意してください。誰かがアカウントのSSHキーペアをセットアップすることに決めた場合、それは機能します!


ユーザーはsuに有効なシェルが必要ですか?別のユーザーにsuした後も、元のシェルにいると確信しています。実際に他のユーザーとしてログインすることはありません。同じように。
ブライアンポストウ

はい、まだ有効なシェルが必要です:[root @ localhost〜]#su daemonこのアカウントは現在利用できません。[root @ localhost〜]#su-daemonこのアカウントは現在利用できません。(RHELシステム、デーモンのシェルは/ sbin / nologinです)
astrostl

3

sshd_configに行を追加します DenyUser [username]

これは、そのユーザーがコンソール経由でログインするのを妨げないことに注意してください。


1
それはDenyUsers、「s」である必要があります。
デビッドG

2

上記の内容(ユーザーパスワードの無効化および/または設定なし)に加えて、pam_accessモジュール(pam_accessおよびaccess.confのmanページを参照)を使用してログインアクセスを制御できます。


1

他の人が言ったように。

DenyUser usernameまたはDenyGroup groupnamesshd_configssh経由で鍵ペア/パスワードログインを防止するであろう。

私は通常AllowGroup ssh、これらの行に沿って何かのようなことをし、sshアクセスが必要な人をそのグループに明示的に追加します。

その後、他の人が言ったpasswd -d usernameように、ユーザーのパスワードを空白にして、コンソールや他の方法でログインできないようにすることができます。またはpasswd -l usernameアカウントを「ロック」することをお勧めします。sshはロックされたアカウントへのアクセスを、キーがあっても拒否する可能性がありますが、私は肯定的ではありません。


1
実際、sshでは、アカウントパスワードがロックされている場合でも、キー認証を使用してログインできます。
リチャードホロウェイ

1

コメントで述べたように、無効なシェルを使用してアカウントにsuすることはできます。そのため、ユーザーのシェルを/ dev / nullまたはbinのシェルに設定すると、そのユーザーにsuを実行できるはずです...


1

!を追加して/ etc / shadowを編集します パスワードハッシュの先頭まで。

username:!<hash>:#####:#:#####:#:::

新規インストールを保護するとき、これはsudoをインストールした後に最初に行うことであるため、rootユーザーを使用してシステムにログインまたはsshすることはできません。sudoユーザーは引き続きrootユーザーとして実行できます。



0

rootのアカウントのユーザーのみをsuし、他のすべてのアクセスを無効にすると仮定します。

これを使用します(rootとして実行):

usermod -e 1 -L user

これは、(他の多くの答えが助言してきたように)パスワードログインを無効にし、それはまた、アカウントが期限切れになります。SSHキーなどを使用して、期限切れのアカウントにログインすることはできません。su userアカウントの有効期限が切れたという通知が表示されますが、引き続きできます。


0

どのメカニズムが最適であるかは、要件によって異なります。要件がわかっている場合は、適切なメカニズムを選択できます。上記の回答はすべて、いくつかの要件のセットに対して有効です。

SSHアクセスのみを制限しますか?メールまたはsshメソッドにアクセスする必要がありますか?アクセスはルートからのみですか?

su - userroot以外のユーザーで実行される場合、ユーザーのパスワードが必要になります。ただし、sudo -u user -iユーザーのパスワードは必要ありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.