回答:
推論は唯一にあるsu
か、sudo
必要なとき。
ほとんどの日常的なタスクはルートシェルを必要としません。したがって、特権のないシェルをデフォルトの動作として使用し、特別なタスクを実行する必要がある場合にのみルートに昇格することをお勧めします。
そうすることで、使用するアプリケーションの危険なミス(不適切なスクリプト、誤ったワイルドカードなど)や脆弱性の範囲を減らすことができます。特にインターネットに接続するもの-古い格言「IRCをルートとしてはいけない」を参照してください。
sudo
このような特権の使用をきめ細かく監査できるため、多くの場合推奨されます。
これらのプラクティスを観察することにより、リモートルートログインを無効にすることもできます。これにより、攻撃者は「ホイール」グループのメンバーであり、理想的にはSSH公開キーのみで許可される通常のユーザーアカウントとルートアカウントの両方を侵害する必要があるため、侵入者のエントリバーが増加します。
sudo
優れている、su
また、あなたが使用することを可能にする-m
ルート端末で環境変数を同じしばらく維持するためのフラグを。ディレクトリ名でsu
何かを~
して、それが機能しないようにするためだけに、少しでもルート化するように私をもっと気にする人はいません。
主な理由は、監査証跡を作成することです。通常のユーザーとしてシステムにログインしてからsuにログインする必要がある場合は、特定のアクションの責任者を追跡できます。
また、sudoはすべてのコマンドをsyslogに自動的に記録し、各ユーザーが使用できるコマンドを定義できます。
sudo vim foo.txt
vim内からシェルにドロップすると、通常のsudoロギングなしでルートシェルが提供されます。
sudo -i
インタラクティブなセッションを取得するために...
監査証跡を作成し、ここで説明した「sudo su-」または「sudo vim foo.txt」の問題の犠牲にしたくない場合は、「sudosh」を使用できます。sudoを介してrootアクセスを配布しますが、「sudosh」を実行する唯一の許可コマンドを作成します。
sudoshはロギングシェルです。後日、ターミナルセッション全体を再生して、ユーザーがターミナルで見たものを正確に表示することができます。
セキュリティを徹底的に練習する必要があります。
リモートルートアクセス(または、少なくともパスワードによるルートアクセス)を許可しません。(キーによるルートアクセスを許可する場合、それらのキーを慎重に制御するか、キーの集中的な取り消しを許可するKerberosのようなものを使用することをお勧めします)。
suを無効にし、sudoを使用します。この方法では、ユーザーはキー(好ましくは暗号化された)を使用してシステムにアクセスし、パスワードを特権の昇格にのみ使用します。ユーザーがsudoを使用してアクセスするプログラムを制限できますが、ほとんどの場合、rootパスワードを知っているユーザーのみにアクセスを制限します。
理想的な世界では、あなたのマシンへのアクセスを他の人に許可したとしても(/ etc / sudoersファイルにそれらを入れていなくても)、ルートパスワードをインターネット上で公開できるはずです。もちろん、ルートパスワードを公開すべきではありませんが、同心の保護層でシステムを保護するという考え方です。