
対話型シェルと非対話型シェルとは何ですか?
問題:対話型シェルをインポートしないでくださいユーザーjohnを作成します。
私たちは何をすべきですか?
答え1
この/etc/passwd
ファイルには、ログイン時にユーザー行の最後の項目として実行されるプログラムが含まれています。一般ユーザーの場合は、通常または/bin/sh
他のシェル(bash、zshなど)に設定されます。
従来、プロセス、ファイル、またはその他のリソースを所有するために使用されるIDには、「シェル」が次のよう/bin/false
に設定されていました。
syslog:x:101:102::/home/syslog:/bin/false
擬似ユーザーsyslogは、/var/log/syslog
ファイルを所有し、ファイルへの書き込み権限を持つ唯一のUIDですが、実行するコマンドソルバーがないため、ユーザーsyslogとしてログインできません。
答え2
答えたい質問について:
インタラクティブシェルをインポートしないでくださいユーザーjohnを作成します。
質問は、「john
シェルからログインしてコマンドを実行できないこのユーザーと呼ばれるユーザーを作成してください」という意味です。 Interactive では、シェルの動作方法を説明します。つまり、ユーザーが何かを入力すると、シェルはそれに応答して何かを行います(ユーザーとシェルの間には一種の通信があります)。ユーザーがコマンドを入力する限り、シェルセッションはインタラクティブなので、「インタラクティブ」という単語は実際に質問に何も追加しません。
ユーザーが実行したい一連のコマンドをファイル(シェルスクリプトと呼ばれる)に保存し、ファイルを実行する非対話モードもあります。一部のコマンドは、シェルが対話的に実行されるのか、非対話式で実行されているのかによって異なります。もっと読むことができますここ(この文書はに適用されますが、bash
他のシェルにも同じ概念が適用されます。)
このようなユーザーを作成する方法については、ナビゲーションにman useradd
ログインシェルを設定するオプションがあります。-s
または、--shell
必要な方法で一般にユーザーを作成することもできます(既に知っていると仮定しますか?)/etc/passwd
。この編集mswの答え。
答え3
はい、パスワードファイル(/etc/passwd)のシェルを次のプログラムに変更します。いいえシェルは脱出できません。
なりたいならボヴェ/bin/falseはあなたが要求したことを正確に行います。
答え4
adduser john -s /sbin/nologin
このコマンドは、対話型シェルを取得できないユーザーを作成するために使用されます。
対話型および非対話型シェル
対話型シェルはユーザーと対話します。ログインシェルの場合、〜/ .loginのすべてのコマンドが実行され、ログインシェル(対話型サブシェルを作成できます)以外の場合、.loginは評価されません。
非対話型シェルはユーザーと対話しませんが、シェルスクリプトを実行します。シェルスクリプトを呼び出すたびに、最初の行( "shebang"#!/ bin / bash)は非対話型サブシェルを生成します。すべての非対話型シェルはログインシェルではないため、.loginを評価しません。
定義によると、ユーザーがログインできるすべてのシェルは対話型シェルです。そうでない場合(例:/bin/falseまたは/bin/nologon)、ユーザーはログインできません。