web-dev-qa-db-ja.com

ルート以外の誰かとしてサーバーにログインしたときに、パスまたはSSHを介したコマンド履歴がない

サーバーにSSHで接続すると、root以外の場合と同様に、$のみが表示され、パスは表示されません。また、rootとしてSSHで接続しないと、上キーを押してコマンド履歴を表示することもできません。上記のオプションを他のユーザーに提供するにはどうすればよいですか?

4
Arthur Walker

これを実現するには2つのステップがあります。

ステップ1)ユーザーがbashシェルを使用していることを確認します。/etc/passwd内の各ユーザーのエントリを調べて、/ bin/bashで終わることを確認します。たとえば、次のように表示されます。

joeuser:x:1234:1234:Joe User:/home/joeuser:/bin/sh

次に、これに変更します。

joeuser:x:1234:1234:Joe User:/home/joeuser:/bin/bash

Bashを使用すると、上矢印の問題が修正され、次のステップが有効になります。

ステップ2)それでも現在の作業ディレクトリでプロンプトが表示されない場合は、bashにそれが必要なことを伝えます。これを行うには2つの方法があります。次の行を追加します。

export PS1='\w> '

どちらかに

  1. 各ユーザーの.bash_profileファイル。 [〜#〜]または[〜#〜]
  2. システム全体の/etc/profileファイル

この行は、メインのシェルプロンプトを表すPS1変数を割り当てます。 /etc/profileに入れることをお勧めします。これは簡単で、すべてのユーザーに役立つプロンプトを提供するからです。ユーザーがプロンプトに何か他のものが必要な場合は、いつでも自分の.bash_profileファイルを編集できます。

注:システムに/etc/bash.bashrcがある場合は、/etc/profileの代わりにその行を配置してください。

6
GLRoman

私のpasswd(5)のマニュアルページには、「コマンドインタープリター」と呼ばれる/etc/passwdエントリの最後のフィールドについて書かれています。

コマンドインタープリターフィールドは、ユーザーのコマンド言語インタープリターの名前、または実行する最初のプログラムの名前を提供します。ログインプログラムは、この情報を使用して$ Shell環境変数の値を設定します。このフィールドが空の場合、デフォルトの値は/ bin/shです。

したがって、オプションは次のようになります。

  1. ユーザーを/etc/passwdファイルに入れます。
  2. NISまたはその他のネットワーク手段でユーザー情報を利用できるようにします。
  3. /bin/shを他のシェルにリンクします。プログラムは既存の/bin/shの動作に依存している可能性が高いため、これはお勧めしません。
1
glenn jackman

これは非常に奇妙に聞こえます。デフォルトでは、root以外のユーザーは、説明した基本的な機能を使用できるはずだからです。そうは言っても、この問題はおなじみのように聞こえます。 Ubuntu(Debian)でユーザーをセットアップするときはいつでも、 adduser を使用します。これは正常に機能します。しかし、私はいつも useradd で問題を抱えていました。 useradd の公式マニュアルページに記載されているとおり:

useraddは、ユーザーを追加するための低レベルのユーティリティです。 Debianでは、管理者は通常、代わりにadduser(8)を使用する必要があります。

その理由は、useraddが最終的には低レベルのシステムバイナリであり、新しいユーザーのパスとシェル情報を追加するために、ユーザー名だけでなく多くのコマンドを必要とするという事実に要約されます。対照的に、adduseruseraddのPerlスクリプトラッパーであり、あまり考えずにシステムに新しいユーザーを作成するための、より優れたユーザーフレンドリーなワークフローを提供します。 adduseruseraddの「ウィザード」セットアップと考えてください。

したがって、useraddを介してユーザーを追加した場合、コマンドラインオプションの構成設定を見逃している可能性があります。したがって、技術的には、ユーザーをシステムに追加しましたが、システム構成に関してはそれほど多くはありませんでした。対照的に、adduserは、さまざまな基本事項をすべて処理するように設計されています。

それを知って、私がお勧めするのは、このようにすでに作成したユーザーを削除することです。もちろん変更[username]実際のユーザー名へ:

Sudo deluser --remove-home [username]

次に、次のようにadduserを使用してそのユーザーを再作成します。

Sudo adduser [username]
1
JakeGould