ユーザーおよびJavaアプリケーションに対する異なる権限の設定

ユーザーおよびJavaアプリケーションに対する異なる権限の設定

私はオペレーティングシステムの一種のシェルであるグラフィカルJava(javaFX)アプリケーションを作成しています。私は現在Java 8(JDK corretto 8.402)、Debian 12、およびXfceを使用しています。問題は私のJavaアプリケーションですsudosudoersNOPASSWDsudo

簡単に言えば、コンピュータの電源を入れるとユーザーが自動的にログインし、アプリケーションが自動的に実行されるようにする必要があります。すべてが安全であり、ユーザーは非常に制限された権限を持っている必要があり、Javaアプリケーションが実行できるコマンドを実行することはできません。

私はLinuxを扱うことができないので、あなたの提案を聞きたいです。

  • 別のユーザーを作成してみました。したがってrootuser1とがありますguest。セッションはゲストとして実行され、アプリケーションはuser1として実行されるようにすることです。
  • 自動ログインとアプリケーションを/etc/lightdm/lightdm.conf設定したら、他のユーザーとしてアプリケーションを実行するように自動実行スクリプトを設定しました。guestxfce4-session-settingsjava
    sudo -S -u user1 java -jar /path/to/my.jar
    

パスワードなしで実行したいが、/usr/bin/javasudoersに追加する必要がありますNOPASSWD。これにより、ユーザーはguestどんなJavaアプリケーションでも実行できsudo、それで何をすることができることがわかりました。

答え1

私が理解したのは2人のユーザーがいるので、すべてのコマンドに対してuser1にNOPASSWDを与えることができます(たとえば、user1 ALL=(ALL) NOPASSWD: ALL必要なコマンドであっても、ゲストはsudoers権限を持つ必要がない場合、またはゲストにsudoアクセス権を付与したい場合など)。 、OKを追加すると、guest ALL=(ALL) ALLゲストはパスワードを入力する必要があります。

答え2

これは実際にはコメントですが、箱に入れるには長すぎます。

このコマンドは sudoer で NOPASSWD として作成されます。ユーザーは、パスワードなしでsudoを使用してこれらのすべてのコマンドを実行できることがわかりました。これは安全ではありません。 ...おおよそ言えば、コンピュータの電源を入れると、ユーザーが自動的にログインできるようにする必要があります。

したがって、ユーザーがパスワードを入力せずにコマンドを実行できるようにしたいのですが、パスワードを入力せずにコマンドを実行できることも望ましくありません。

あなたの説明は矛盾しています。

アイデアは、セッションをゲストとして持ち、アプリケーションをuser1として実行することです。

これにより、状況がより複雑になる可能性があります。 「アプリケーション」は、デーモンとして実行している場合は起動が簡単ですが、ユーザー所有の画面と対話することはできません(追加の設定は必要ありません)。 OTOHユーザーセッションで「アプリケーション」を呼び出す場合は、そのuidを変更するメカニズムが必要です。

問題を解決するための最良の方法は、ユーザーがuidを切り替えることなく、期待される操作の呼び出しを実行できるようにシステムを構成することです。しかし、これについて私たちに何も教えてくれませんでした。

Sudo(および類似ツール)は、以前のアプローチでは解決できなかった問題があるために存在します。正しく使用しないと安全ではありません。以下の簡単なものでさえ:

%support ALL=(ALL) NOPASSWD: less /var/log/maillog

ルートシェルの場合、それを悪用するのは簡単ではありません。

その後、ゲストユーザーはすべてのJavaアプリケーションを実行できることがわかりました。

sudoの設定が間違っているためです。 sudo構成行で許可されているパラメーターと実行可能ファイルを指定できます。

個人的には、あいまいさを避けるために、常にsudoターゲットをシェルスクリプトにラップし、sudo設定のターゲットとしてシェルスクリプトを設定します。

関連情報