
コマンドを使用して、スーパーユーザーまたは別のユーザーとしてコマンド/スクリプトを実行できることは知っていますsudo
。しかし、ユーティリティ自体がユーザーによって使用不可/削除される可能性はありますか。もしそうなら、以外sudo
の代替手段は何でしょうか。また、と は同じ目的を果たしますか?sudo
su
sudo
su
答え1
'sudo' を使用すると、任意のユーザーとして任意のプログラムを起動できます。プログラム自体にこれを行うためのルート権限が必要なため、これは 'setuid root' です。sudo の強みは、誰が何を実行できるかを簡単に設定できることです。sudo を使用して、ユーザーに nmap (nmap のみ) の実行を許可できます。
'su' を使用すると、任意のユーザーとしてシェルを起動できます。シェルを起動すると、当然他のプログラムも起動できます。したがって、これはより危険です。適切に管理されたシステムでは、su
アクセスは一般に無効になっていますが、sudo
特定のプログラムではアクセスが可能である場合があります。
上記の 2 つのプログラムが使用される理由は、説明責任のためです。Sudo は、行われたすべての要求をログに記録します。そのため、管理者は、ユーザーがルート権限を使用して行った操作を簡単に追跡できます。シェルへのアクセスを許可すると、ユーザーは好きなことを何でも実行できます (これは「ブラック ホール」です)。(もちろん、カーネル レベルの高度なログ記録によって、この操作は阻止されます)。
もちろん、これらのプログラムに をマークすることもできますsetuid
。これにより、実行時にバイナリの所有者の権限が変更されます。たとえば、setuid
の ビットを有効にして/bin/bash
の所有者を/bin/bash
に設定するとroot
、 を実行するたびに root になります/bin/bash
。
最後に、マシンへの物理的なアクセスにより、好きなことを何でもできるようになります。フラッシュ ドライブから起動して、ローカル ファイル システムにアクセスできます。ブートローダーを設定して、別のinit
プロセスを使用して、シングル ユーザー モードでシェルをすぐに起動することもできます (パスワードを要求せずに)。
答え2
su 以外に sudo の代替手段が存在するかどうかという質問には誰も答えていないようですが、sudo の Web サイトで実際に sudo の代替手段のリストが維持されていることを知って興味を持つかもしれません。
リストにはオープンソース ソフトウェアと商用ソフトウェアの両方が含まれています。現在リストされているオープンソースの sudo の代替品は次のとおりです。
-
- 現在は廃止されていますか? 参照:SUS: Unix スーパーユーザー権限を配布するためのオブジェクト参照モデル
とはいえ、私はこれらの代替手段を一度も使ったことはありませんし、他の状況で見たり聞いたりしたこともありません。また、これらのうち少なくともいくつかは実験的なもの、廃止されたもの、またはサポートされていないもののようです。私の印象では、sudo
と がsu
唯一の現実的な選択肢です。
答え3
必要な機能を復元するには、root としてログインするか (tty で許可されている場合)、コンピューターを再起動してコマンド ラインで init=/bin/bash を使用してログインします。
sudo を削除できるのは root のみであることに注意してください。
sudo と su は似ていますが、目的は異なります。「sudo」を使用すると、他のユーザーの権限で何かを実行できますが、「su」を使用すると、そのユーザーになり、そのユーザーと同じように動作できます。
答え4
マシンにopenssh-server
インストールされている場合は、代わりに次の方法をsudo
使用できます。
ssh root@localhost ..command.. ..goes.. ..here..
su
無効になっていない場合は、おっしゃるとおりです:
su - root -c "..command.. ..goes.. ..here.."