背景:
私はルートのみにアクセスできるマウントされたフォルダを持つVM環境でLinux Mintを実行しています。
ターミナルに行き、次を実行すると、sudo deluge
私のパスワードを尋ねられ、権限を持つmy_userとして実行されます。まあ、それほど遠くはありません。
ここで、プロンプトで画面にパスワードを要求するbashスクリプトを作成したいと思います。
質問:
bashファイルを次のように書くと:
/usr/bin/gksudo deluge
または
/usr/bin/gksudo -u root deluge
私はまったく同じ結果を得て、rootとしてdelugeを実行し、すべての環境をrootとして実行します。
bashファイルを次のように書くと:
/usr/bin/gksudo -u my_user deluge
my_userとして実行され、高い権限がない場合は、共有フォルダに書き込む権限がありません。
実際の質問:
昇格された権限を使用してmy_user(同じ環境)でDelugeを実行し、パスワードを要求するbashスクリプトを作成するにはどうすればよいですか?
添付:
argを使って多くの方法を試しましたが、-k
成功しませんでした。
答え1
Sudoは、ルート設定ではなく、$ HOMEと$ PATHを「ユーザー」ホームディレクトリとパスとして保持しているようです。これは「ユーザー」に問題を引き起こし、ほとんどの専門家はグラフィックXアプリケーションを実行するためにsudoを使用せず、gksudoを使用する必要があると主張します。
グラフィックアプリケーションは、$ HOMEに.configファイルを保存する傾向があります。 sudoを使用してグラフィカルアプリケーションを実行すると、「ユーザー」ホームディレクトリの設定ファイルはrootアカウントによって作成されます(存在する場合は上書きできます)。
sudoから戻ると、一般ユーザーがrootで作成した構成ファイルにアクセスできないため、アプリケーションが破損していることがわかります。あなたの場合の正しいアプローチは、アプリケーションを「ユーザー」として引き続き使用し、「ユーザー」がアクセスできる場所にファイルを保存することです。
しかし、gksudo -k
Debianテストではユーザー設定が保存されているようです。
gv@debian:~/Desktop/PythonTests$ echo $USER-$HOME-$PATH
gv-/home/gv-/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
gv@debian:~/Desktop/PythonTests$ ./oneshot.sh
You run this script as USER=gv
Your HOME dir is /home/gv
Your PATH is /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
gv@debian:~/Desktop/PythonTests$ gksudo ./oneshot.sh
You run this script as USER=root
Your HOME dir is /root
Your PATH is /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
gv@debian:~/Desktop/PythonTests$ gksudo -k ./oneshot.sh
You run this script as USER=root
Your HOME dir is /home/gv
Your PATH is /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
gv@debian:~/Desktop/PythonTests$ cat oneshot.sh
#!/bin/bash
echo "You run this script as USER=$USER"
echo "Your HOME dir is $HOME"
echo "Your PATH is $PATH"
exit 0