web-dev-qa-db-ja.com

別のユーザーにプログラムの実行を許可しますか?

特定のユーザーが自分のディレクトリでコンパイルされたプログラムを実行できるようにしたい。私は彼のユーザー名をcat/etc/passwdから取得しました。実行可能ファイルはファイルを書き込みませんが、いくつかを読み取り、コマンドラインに出力を提供します。どうすればこれを達成できますか?

1
aatish

ファイルが秘密でない場合は、そのフォルダーをすべてのユーザー、または自分自身と他のユーザーを配置するグループで読み取り可能にすることができます。

これらのデータの読み取りへのアクセスを許可してはならないユーザーがいるシナリオの場合は、Sudoベースの戦略を使用する必要があります。これにより、特権ユーザーは次の方法でプログラムを実行できます。

Sudo ~user19448/myprogram/runme

まず、Sudoを(visudoを使用して)次のように構成する必要があります。

particular-user ALL=(ALL) NOPASSWD: /home/user19448/myprogram/runme

[〜#〜] nopasswd [〜#〜]は、おそらく必要な独自のパスワードを入力する必要をなくします。

そのユーザーを含む新しいグループを追加し、ファイルと実行可能ファイルをそのグループに変更します。

  1. グループを作るgroupadd Group_name

  2. ファイルのグループを変更します(実行可能ファイルと読み取られるファイル)chgrp Group_name file

  3. グループメンバーが実行可能ファイルを利用できるようにするchmod g+x executable_file

  4. 読む必要のあるすべてのファイルをグループで読み取り可能にするchmod g+r file

  5. ユーザーと自分をグループに追加しますuseradd -G Group_name username

4
sgp667

最良のオプションは、両方が同じグループに属している必要があることです。 teamというグループを作成し、両方がそのグループのメンバーであるとします。次に、そのプログラムの実行権限をグループに与えることで、彼に実行を許可できます。

Testとtest1という名前の2人のユーザーがいるとします。

# groupadd team

# usermod -G team test

# usermod -G team test1

プログラムが置かれているディレクトリを/home/test/programs/program1としましょう。

次に、ディレクトリとプログラムのグループ所有権を変更します。

# chown test:test1 /home/test/programs/program1

# chown test:test1 /home/test/programs/

# chmod g+x /home/test/programs/program1

# chmod g+x /home/test/programs/

これで、ユーザーtest1がプログラムを実行できるようになります。

この方法はより安全であり、他の人がそれを悪用するのを防ぎます。

2
Kannan Mohan