通常のユーザーに特定のディレクトリへの限定された権限を与え、sudo なしでファイルを実行する方法

通常のユーザーに特定のディレクトリへの限定された権限を与え、sudo なしでファイルを実行する方法

私の表現については申し訳ありませんが、質問をできるだけ明確に説明できたことを願っています。

Red-hat システムを使用しています。現在、私はシステム内にスーパーユーザーを所有しており、sudo python cuckoo.pyこの Python プログラムを実行するために、"cuckoo" と呼ばれる特定のディレクトリで読み取りと書き込みを行う必要があります。

ここで、この「cuckoo.py」と作業ディレクトリへのアクセス権を通常のユーザーに付与したいと思います。ただし、その一方で、このユーザーにスーパーユーザー権限を付与することは、システムに損害を与える可能性があるため、望ましくありません。

では、どうすれば通常のユーザーが直接呼び出してpython cuckoo.py、「権限が拒否されました」というエラーが表示されないようにできるでしょうか?

どのような助言やコメントでも歓迎します。また、説明がわかりにくくなる不適切な表現がある場合は、ご指摘ください。より詳しく説明できるよう最善を尽くします。

ありがとう!

編集: 私の言葉があまり明確でないかもしれません... この通常ユーザーを「root」に含めたくありません。現在、グループを作成し、この通常ユーザーをグループに追加し、ディレクトリのアクセス許可を 755 に設定しています。ただし、cuckoo.pyスムーズに実行するために、グループに書き込みアクセス許可を持たせたいです。それでは、root とこのグループの両方に読み取り、書き込み、および実行のアクセス許可を持たせるにはどうしたらよいのでしょうか?

答え1

スクリプトを root として実行する必要がある唯一の理由が、特定のディレクトリの読み取り/書き込みである場合、これを解決するには 2 つの方法があります (通常のユーザーがスクリプトを正常に実行できるようにするため)。

  1. グループを作成し、作業しているフォルダーをそのグループの所有にし、ユーザーをそのグループに追加します。
sudo groupadd <groupname>
sudo usermod -a -G <groupname> <username>
sudo chgrp -R <groupname> <folder>
  1. フォルダーのワールド権限を変更するだけです (コンピューター上のどのユーザーにもフォルダーにアクセスできないようにしたい場合はお勧めしませんcuckoo)。
sudo chmod -R 664 ./cuckoo

この権限は、所有者、グループ、および世界に対して読み取りと書き込みを許可します。

答え2

どうやら私は質問を誤解していたようです。スクリプトをrootとして実行する必要があり、一般ユーザーでも実行できるようにしたい場合は、上の指示に従ってください。この AskUbuntu の質問。

安全を確保するには、このファイルの権限を厳重にロックダウンする必要があることに注意してください。

ファイルの所有者を root にし、グループを root にします。

sudo chown root.root <my script>

次に、スティッキーを設定します。すべてのユーザーが実行でき、root のみが書き込み可能になるようにします。

sudo chmod 4755 <my script>

このスクリプトでファイルの入力や編集を許可する場合、これも root として実行されることに注意してください。

SetUID ビットにより、スクリプトまたはバイナリは常にファイル/バイナリの所有者として実行されます。このようなバイナリの例としては、「passwd」があります。

関連情報