web-dev-qa-db-ja.com

ルートのシェルをデフォルト以外に設定するのは悪い習慣ですか?

私の友人(経験豊富なUnix/Linuxユーザー)が、rootのシェルをsh以外(つまりbashまたはzsh)に設定すると問題が発生する可能性があると言ったことがあります。これは、一部のスクリプトがシェルがshであると想定し、奇妙なことを行う可能性があるためです。 。

ただし、Ubuntuではデフォルトのルートシェルがbashに設定されており、Gentooもbashを使用していると思います。誰かが神話を破ることができますか?

16
phunehehe

はい。起動中にシステムに障害が発生した場合は、ルートシェルにログインできます。別の/ usrがある場合、一部のシェルが正常に起動しないことがあります。

ルートをデフォルトのシェルのままにしながら、標準のシェルでアカウントtoor(uid 0、gid 0)を作成することをお勧めします。

12

問題にはならないはずです。

シェルスクリプトファイルは、実行されるシェルを明示的にエンコードします。最初の行にエンコードされているか、他のプログラムまたはスクリプトが特定のシェルを実行し、引数としてシェルスクリプトを指定します。

ユーザーアカウントのシェル情報(ログインプロセス以外)を使用する、私が考えることができる唯一のプログラムはprocmailです。ユーザーがメールサーバーでシェル/ bin/falseを設定している場合は本当におもしろいですが、通常、rootとしてprocmailを実行しません。

別の候補は、rootのcrontabの行です。 crondのポリシーがどのシェルを使用するのかわかりません。

7
maxschlepzig

Bourne Shell用に作成されたスクリプトは、ほとんどの場合、BASH、ZSH、または$ fooに対して問題なく実行されます。

多くのLinuxシステムでは、元のshがインストールされていません。代わりに、/ bin/bashに対するシンボリックリンクであることがよくあります。

一部のスクリプトがシェルが明示的にshであると単に「想定」している場合は、それらを書き直す必要があります。スクリプトに必要なインタープリターを選択するためのShebangメカニズムがあります。そのshの場合、スクリプトの最初の行に#!/bin/shを含める必要があります。

デフォルトのシェル設定は、このコンテキストには関係ありません。

3
echox

ルートのシェルを変更しても問題はないと思います。ルートのデフォルトシェルとしてtcshを持っているいくつかのユニス(おそらくいくつかのBSDバリアント?)を覚えているようです。

とにかくルートログインはまれです。通常、自分のアカウントにログインしてから、suまたはSudoでrootになります。

重要なことは、システムの修復コンテキストで使用できるように、ルートのシェルは依存関係をできるだけ少なくする必要があるということです。たとえば、静的にリンクされたルートシェルを用意することをお勧めします。一部のディストリビューションは、静的にリンクされたバージョンのbashまたはzshまたは sash (多くの標準ユーティリティが組み込まれたシェル)を出荷しています。ただし、システムがレスキューCDまたはUSBドライブから簡単に起動できる場合、これはそれほど重要ではありません。

ユーザーのログインシェルは、ブートプロセスに影響を与えません。このシェルは好きなように設定できます。すべてのシステムにbashがあるわけではなく、正常に動作します。また、/usr/bin/zshが間違ってインストールされている場合は、すべてのシステムシェルが/binにある必要があります。ただし、多くのスクリプトには/bin/shがあり、これは通常bashを指しますが、bashismやその他の動作を使用するため、#!/bin/shが必要な場合は、デフォルト以外のものを指すように#!/bin/bashを変更しないでください。 zshまたはdashでは機能しません。

1
xenoterracide

Solaris/illumosに関して Solaris Root Shell Mini-FAQ 言及

一部のシステム管理者は、ルートシェルを変更しないことを推奨しています
Solarisシステム。理由を尋ねると、rootには
動的に依存しない静的にリンクされたシェル
/usr/libの下のライブラリ。これは過去に真実でしたが、そうではありません
今日は必然的にそうです。 Solarisは、適切に構成された場合、他のバージョンのUnixと同様に、ルートまたはその他のアカウントに対して定義したシェルをサポートできます。

したがって、はい、Solarisまたはillumosを使用している場合は、sh以外のシェルを使用しても問題ありません。

0
gsl

ルートのデフォルトのシェルとしてbashがあります。しばらくzshを使用しましたが、その後bashに戻りました。使用するシェルは何でも構いません。

複数のユーザーがrootアクセス権を持っている場合、これは問題です。その場合、これが最も広く使用されているシェルであるため、通常はbashである「共通分母」を選択できます。

0
polemon