ルート権限を持っていない限り、人々に開かせたくない特定のアプリケーションがありますが、プログラムにルート権限を与えたくありません。だから、rootだけが特定のアプリケーションを実行できるようにするにはどうすればよいですか?アプリケーションが実際にrootとして実行されないようにするにはどうすればよいですか? Ubuntu GNOME 15.04、GNOME Shell、およびGNOME 3.16を実行しています。
パッケージsetuid
からsuper
を使用してみてください。 Sudo apt-get install super
を実行してから、rootとしてのみ実行できるシェルスクリプトを作成します。そのシェルスクリプトに1つのコマンドのみを実行させます。
#!/bin/sh
setuid $ORIG_USER applicationcommand
exit 0
次に、applicationcommand
が各.bashrc
ファイルに追加して作成したシェルスクリプトを指すように、各ユーザーのエイリアスを設定します。
alias applicationcommand="sh /path/to/Shell/script"
または、alias
を作成するだけでなく、実行するアプリケーションの.desktop
ファイルを編集できます。アプリケーションに.desktop
ファイルがある場合(それがGUIで実行されますが、CLIでは.desktop
ファイルを持たない可能性が高いため、Exec=
行の後にsh /path/to/Shell/script
が付いているか、エイリアスの名前がそれを作成することにしました。 .desktop
および/usr/share/applications
には~/.local/share/applications
ファイルがあります。
この答えは Heather's one (これでうまくいきます)を補完します。
まず、、Unix(およびLinux)でroot権限を取得できる場合は何でもできることを考慮してください。ヘザーの回答の場合、ユーザーをSudo /usr/bin/applicationcommand
(実際のパスなどを少し検索して)だけに止めることはできません。しかし、これは大丈夫だと思います。
その場合、なぜ単純にしないのですか(1):
Sudo chgrp Sudo /usr/bin/applicationcommand
Sudo chmod 750 /usr/bin/applicationcommand
?ユーザーがSudo
を使用できる場合、それは意味します(2) それらはSudo
グループに属します。上記のコマンドは、applicationcommand
グループのメンバーに対してのみSudo
を読み取り可能/実行可能にします。ただし、他のコマンドと同様に、実際のユーザーとして実行します。
ただし、「古典的な」Unixソリューションは次のとおりです。
privileged
と呼びます。Sudo chgrp privileged /usr/bin/myapp
、次にSudo chmod 750 /usr/bin/myapp
。privileged
に対してアプリを実行できるようにしたいこれで、ユーザーはmyapp
特権を持つ必要なしに、そのユーザーとしてSudo
を実行します。
アプリケーションを別のユーザーとして実行したい場合は、 set-uidメカニズムを使用できます 上記の手法と組み合わせてください。
脚注:
(1):アプリケーションにset-gidフラグがある場合、これを実行できないことに注意してください(たとえば、一部のメーラーで発生します)。バイナリのグループを変更する前に確認してください。
(2):ほとんどの構成で。 Sudo
は無数の方法で微調整(man sudoers
を参照)できるため、この単純なハックの有効性は、カスタマイズの程度によって異なります。