user1を使用してUNIX環境にログインし、この環境には、user1がそのパスにアクセスできないため、他のパスで他のユーザー(user2など)と一緒に実行する必要があるいくつかの操作を含むシェルスクリプトがあります。 。
タスクを実行するには、シェルスクリプトでuser1からuser2に切り替え、タスクを完了した後にuser2からuser1に戻したいと思います。
このシナリオを実装する方法を提案してください。
Javaを使用してシェルスクリプトを呼び出しているので、他の方法がある場合は提案してください。
ベストアンサー1
sudo
user2がuser1として必要なスクリプトを実行できるようにすることで、必要なものを取得できます。ただスクリプトが実行され、システムのセキュリティが保護されます(user2はuser1などのシェルを使用できません)。次の方法でこれを実行できます。
sudo visudo
(Sudo構成ファイルの編集)- ファイルの末尾に以下を追加します。
user2 ALL = (user1) NOPASSWD:/path/to/your/script.sh
- ファイルを保存して閉じます。
これで、user2でシェルを開くと、sudo -u user1 /path/to/your/script.sh
user1として実行できます。 javaでも同じコマンドを使用できます。 user1:sudo -u user1 bash
これは拒否されるため、user2はシェルを実行できないため、セキュリティが維持されます。
しかし、、user1とuser2が共有するグループを作成し、そのグループを使用してファイルの実行権限を管理すると、よりきれいな解決策が得られると思います。要件に応じて、chmod 4700 /path/to/your/script.sh
より多くのユーザーが user1 でスクリプトを実行すると予想される場合は、ACL ビットまたは setuid ビットを考慮することもできます。