Linux で特定のコマンドのルート要件を削除する方法はありますか? ある場合、どのようにすればよいですか?

Linux で特定のコマンドのルート要件を削除する方法はありますか? ある場合、どのようにすればよいですか?

私はUbuntu 12.04 LTSを使用していますが、特定のコマンドを実行できるようにしようとしています

dhclient

ルート権限は必要ありません。調査した結果、「su」ユーザーのロックを解除できるのではないかと思うようになりました。この方法ではルート権限は必要ありませんが、何かが壊れてしまうのではないかと心配です。

おそらく私は2つの別々の質問をしているのでしょう:

  1. ルート権限を必要としないすべてのコマンドは OS のどこにありますか?

  2. このコマンドをそこに移動できますか?

私の場合はどの方法でも機能しますが、正直なところ、それが通常のユーザーのコマンドを他のものと区別する方法であるかどうかさえわかりません。

答え1

これを行う最良の方法は、どのユーザーがどのコマンドを実行できるかに関して非常に柔軟に設定できる sudo を使用することです。 を使用しvisudoて編集します/etc/sudoers(このファイルを直接編集しないでください。間違えると、完全にロックアウトされてしまいます)。次のエントリにより、ユーザーはパスワードを要求せずにbob実行できるようになります。dhclient

bob ALL = (root) NOPASSWD: /sbin/dhclient

sudo dhclientボブはそれを実行するために when を実行します。

答え2

特定のユーザーがプログラム (バイナリまたはスクリプト) を正常に実行できるかどうかは、次の 2 つの要素によって決まります。

  • ユーザーにはファイルに対する実行権限が必要です。

    これは問題ではありません。ls -lすべてのユーザーが を実行できることがわかります/sbin/dhclient

  • ユーザーには、プログラムがアクセスするファイルに対する読み取り、書き込み、および/または実行権限が必要です。

    この部分は、多くのファイルの権限を変更する必要がある可能性があるため、はるかに複雑で危険です。

詳細については、Chmod - Wikipedia

ルート権限でコマンドを実行する通常の方法はsudoマニュアルページ:

須藤許可されたユーザーが実行できるようにする指示スーパーユーザーまたは別のユーザーとして、sudo ユーザ実際のuidとgidおよび実効uidとgidはpasswdファイルに指定されているターゲットユーザーのものと一致するように設定され、グループベクトルはグループファイルに基づいて初期化されます(-Pオプションが指定された場合)。起動ユーザーがrootの場合、またはターゲットユーザーが起動ユーザーと同じ場合は、パスワードは必要ありません。それ以外の場合は、須藤デフォルトでは、ユーザーはパスワードで認証する必要があります(注:デフォルト設定では、これはユーザーのパスワードであり、ルートパスワードではありません)。ユーザーが認証されると、タイムスタンプが更新され、ユーザーは短期間(5分間、上書きされない限り)パスワードなしでsudoを使用できるようになります。sudo ユーザ)。

特定のケースにおける基本的な構文は次のとおりです。

sudo dhclient

その他のご質問に関しては:

1.​ ルート権限を必要としないコマンドは OS のどこにありますか?

すべてのユーザーのバイナリのほとんどは/bin/usr/binおよび内に存在します/usr/local/bin

ほとんどのシステム バイナリ (ルート権限が必要) は に存在します/sbin

これは単なる経験則です。バイナリはどこにでも配置できます。

参照:ファイルシステム階層標準

2.​ このコマンドをそこに移動できますか?

何かを壊す可能性がある以外、これはまったく影響がありません。

関連情報