gksudoはsudoとは異なります

gksudoはsudoとは異なります

背景:

私はルートのみにアクセスできるマウントされたフォルダを持つ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 -kDebianテストではユーザー設定が保存されているようです。

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

おすすめ記事