アカウントを無効にせずにユーザーのログインを無効にします


87

adduserコマンドを使用して「bogus」という名前のユーザーを作成するとします。アカウントを無効にせずに、このユーザーが実行可能なログインオプションにならないようにする方法を教えてください。要するに、私はアカウントにからアクセスできるようsu - bogusにしたいのですが、通常のログインプロンプトからアクセスできるようにしたくないのです。

周りを検索して、そのユーザーのパスワードを無効にする必要があるようですが、それでもpasswd -d bogus助けにはなりませんでした。実際、パスワードを入力しなくても偽物にログインできるようになったため、事態はさらに悪化しました。

特定のアカウントの通常のログインを無効にする方法はありますか?

注:明確にするために、gdmなどのグラフィカルログイン画面のメニューオプションからユーザーを削除する方法を知っていますが、これらのメソッドは実際にログインを無効にせずにアカウントを非表示にします。テキストモードを含む、通常のログインを完全に無効にする方法を探しています。


2
あなた-dがパスワードを削除するためのフラグです。これは、無効にすることとは異なります(ロックと呼ばれます。チャドの答えを参照)。
カレブ

回答:


102
passwd -l user

あなたが望むものです。

これにより、ユーザーアカウントがロックされます。しかし、あなたはまだできるでしょう

su - user

しかし、あなたはsu - userルートとしてする必要があります。

または、!ユーザーのパスワードの先頭にを追加することで同じことを実現できます/etc/shadow(これはすべてpasswd -l舞台裏で行われます)。そして、passwd -uこれを取り消します。


27
このpasswd -lオプションを使用すると、ユーザーは別の認証トークン(SSHキーなど)を使用してログインできることに注意する必要があります。
pl1nk

2
これを回避する方法に関する推奨ソリューションについては、以下の私の回答をご覧ください。
ヨルクゴットシュリッチ14年

2
これは、ubuntu 16.04では機能しません。有効期限を変更し、su-ユーザーを許可しなくなります。
マーリン

1
これは、--disabled-password与えられたオプションと同じadduserですか?そのユーザーなし--disabled-passwordでユーザーを作成しpasswd -lて実行adduserする--disabled-passwordと、最初に実行したユーザーと同じ結果が得られますか?
haridsv

39

のmanページにはpasswd(1)次のように書かれていpasswd -lます:

これによりアカウントが無効になるわけではないことに注意してください。ユーザーは、別の認証トークン(SSHキーなど)を使用してログインできます。アカウントを無効にするには、管理者はusermod --expiredate 1を使用する必要があります(これにより、アカウントの有効期限が1970年1月2日に設定されます)。

そう

usermod --expiredate 1 [LOGIN]

私は、ユーザーがもう使用できないアカウントを無効にする正しい方法を好むようです(たとえば、彼が会社を辞めたため)。


4
私のCentOs 6.3では、ユーザーの接続をpasswd -lブロックしsshますが、ブロックusermod --expiredate 1しません!
fduff

1
CentOS 7.4では、ユーザーの接続をpasswd -lブロックしなくなり、ブロックします。ユーザーごとにブロックすることもできます。適用後、または次のことができるようになりましたsshusermod --expiredate 1 userman passwdchage -E 0 userusermodchagesudo su user
user12345

usermod --expiredate 0 [LOGIN]また、それは1月2日、1970年に1セットこの一方で1970年1月1日に期限が切れる日付を設定します動作します
SLM

「値0は、有効期限のないアカウント、または1970年1月1日の有効期限として解釈されるため、使用しないでください。」
ヨハネス

28

ユーザーがログインできないようにする2つの方法があります。

  1. 編集してユーザーをロックできます /etc/passwd
  2. スイッチでpasswdコマンドを直接発行すること-lにより

2番目の場合、ユーザーは別の認証トークン(SSHキーなど)を使用してログインできます。

方法#1

  1. nologinの場所を見つける:/ bin / nologinまたは/ bin / sbin / nologin
  2. ターミナルを開き、rootとしてログインします
  3. タイプ vi /etc/passwd

これで、passwdファイルInsを編集するためにファイルを押しています。

以下の行をnologinオプションで変更します(/bin/bashユーザーがログインできることを意味します)。

root:x:0:0:root:/root:/bin/bash

これに。nologinユーザーがログインできないことを意味します。

root:x:0:0:root:/root:/bin/nologin

(または/ bin / sbin / nologinを使用)

  1. viを閉じます Esc :wq

方法#2

ユーザーをロックするには: passwd -l username

ユーザーのロックを解除するには: passwd -u username


1
Ubuntu 14.04システムでは、/usr/sbin/nologin代わりにが見つかりました/bin/nologin
デニスウィリアムソン14年

7

その非常に簡単な作業は、/etc/passwdファイルにいくつかの変更を加えるだけです。

単にデフォルトで/bin/bashシェルを変更する/bin/nologin必要があり/bin/falseます。つまり、このシェルを使用してログインするか、またはに変更できます。古くなっている/bin/nologinため、変更することをお勧めします/bin/false


4

/bin/falseシェルとして設定/etc/passwd


18
シェルを/bin/falseに設定すると、suを使用してそのユーザーとして動作することを防ぎます。さらに、使用/bin/falseしてもエラーもエラーも発生しません-そのユーザーとしてシェルを取得するためにsuを使用したくない場合は、シェルを変更し/sbin/nologinてエラーを生成する必要があります。
HedgeMage

8
いいえ、シェルsuを使用しているユーザーはまだ可能です-オプションを使用してください。/bin/falsepasswd--shellsu - --shell /bin/sh bogus
マテイコヴァツ14

1
/usr/sbin/nologinと同じ効果/bin/falseがありますが、有用な情報メッセージも表示されます。
ロールド

0

passwd -l userコマンドを使用してユーザーをロックする!!と、/etc/shadowファイルに「」が示されます。ただし、ルートアカウントからユーザーシェルに切り替えることはできますが、他の通常のユーザーログインシェルによってユーザーアカウントに切り替えることはできません。

また、ファイルを提供する/bin/nologin/bin/false/etc/passwdファイルに入れてアカウントを無効にすることもできます。そのため、ユーザーはログインできない可能性があります。


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