web-dev-qa-db-ja.com

対話型シェルを取得できないユーザーの作成

対話型シェルと非対話型シェルとは何ですか?

質問:インタラクティブシェルを取得しないユーザーjohnを作成します。

どうすればよいですか?

18
user2914

/etc/passwdファイルには、ユーザーの行の最後の項目として、ログイン時に実行されるプログラムがあります。通常のユーザーの場合、これは通常/bin/shまたは他のシェル(bash、zshなど)に設定されます。

従来、プロセスやファイル、またはその他のリソースを所有するために使用されるIDは、「シェル」が/bin/falseに設定されています。

syslog:x:101:102::/home/syslog:/bin/false

疑似ユーザーsyslogは/var/log/syslogを所有し、そのファイルへの書き込み権限を持つ唯一のUIDですが、実行するコマンドインタープリターがないため、ユーザーsyslogとしてログインできません。

9
msw

あなたが答えようとしている質問に関して:

対話型シェルを取得しないユーザーjohnを作成します。

質問は、「ログインしてシェルからコマンドを実行できないjohnという名前のユーザーを作成する」という意味です。インタラクティブは、シェルの動作方法を説明します。ユーザーが何かを入力すると、シェルがそれに応じて何かを実行します(ユーザーとシェルの間に一種の通信があります)。ユーザーがコマンドを入力している限り、シェルセッションは対話型であるため、「対話型」という単語は実際には質問に情報を追加しません。

非対話型モードもあります。ユーザーは、実行する一連のコマンドをファイル(シェルスクリプトと呼ばれます)に保存し、後でファイルを実行します。シェルがインタラクティブに実行されるか非インタラクティブに実行されるかによって、一部のコマンドの動作は異なります。詳細は here を参照してください(このドキュメントはbashを対象としていますが、同じ概念が他のシェルにも適用されます)。

このようなユーザーを作成する方法について、man useraddをざっと見れば、ログインシェル-sまたは--Shellを設定するオプションがあります。また、通常どおりユーザーを作成し、必要に応じて(既に知っていると思いますが)、次に/etc/passwdmsw's answer のように編集します。

9
phunehehe

はい、パスワードファイル(/ etc/passwd)のシェルを、シェルエスケープをできないプログラムに変更します。

bofh /bin/falseになりたい場合は、まさにあなたが望むことをします。

3
David Harris
adduser username -s /sbin/nologin
0
H2 Mac