特定のユーザーが自分のディレクトリでコンパイルされたプログラムを実行できるようにしたい。私は彼のユーザー名をcat/etc/passwdから取得しました。実行可能ファイルはファイルを書き込みませんが、いくつかを読み取り、コマンドラインに出力を提供します。どうすればこれを達成できますか?
ファイルが秘密でない場合は、そのフォルダーをすべてのユーザー、または自分自身と他のユーザーを配置するグループで読み取り可能にすることができます。
これらのデータの読み取りへのアクセスを許可してはならないユーザーがいるシナリオの場合は、Sudo
ベースの戦略を使用する必要があります。これにより、特権ユーザーは次の方法でプログラムを実行できます。
Sudo ~user19448/myprogram/runme
まず、Sudoを(visudo
を使用して)次のように構成する必要があります。
particular-user ALL=(ALL) NOPASSWD: /home/user19448/myprogram/runme
[〜#〜] nopasswd [〜#〜]は、おそらく必要な独自のパスワードを入力する必要をなくします。
そのユーザーを含む新しいグループを追加し、ファイルと実行可能ファイルをそのグループに変更します。
グループを作るgroupadd Group_name
ファイルのグループを変更します(実行可能ファイルと読み取られるファイル)chgrp Group_name file
グループメンバーが実行可能ファイルを利用できるようにするchmod g+x executable_file
読む必要のあるすべてのファイルをグループで読み取り可能にするchmod g+r file
ユーザーと自分をグループに追加しますuseradd -G Group_name username
最良のオプションは、両方が同じグループに属している必要があることです。 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
がプログラムを実行できるようになります。
この方法はより安全であり、他の人がそれを悪用するのを防ぎます。