gksudo는 sudo와 다릅니다

gksudo는 sudo와 다릅니다

배경:

나는 루트만 액세스할 수 있는 마운트된 폴더가 있는 VM 환경에서 Linux Mint를 실행하고 있으며 Deluge 클라이언트가 내 토렌트를 해당 폴더에 다운로드하도록 하고 싶습니다.

터미널에 가서 다음을 실행하면 sudo deluge 내 비밀번호를 묻고 권한이 있는 my_user로 실행됩니다. 글쎄요, 아주 멀리까지는 아닙니다.

이제 프롬프트에서 화면에 비밀번호를 묻는 bash 스크립트를 만들고 싶습니다.

질문:

bash 파일을 다음과 같이 작성하면:

/usr/bin/gksudo deluge

또는

/usr/bin/gksudo -u root deluge

나는 똑같은 결과를 얻었고, 루트로 deluge를 실행하고, 모든 환경을 루트로 실행하고, 내 홈 폴더가 루트 폴더에 있으므로 my_user 기본 설정/구성을 가져오거나 내 대기열 토렌트를 가져오지 않습니다.

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를 사용하여 그래픽 응용 프로그램을 실행하는 경우 "사용자" 홈 디렉터리의 구성 파일은 루트 계정에 의해 생성됩니다(또는 존재하는 경우 덮어쓸 수 있습니다).
sudo에서 돌아오면 일반 사용자가 루트에서 만든 구성 파일에 액세스할 수 없기 때문에 애플리케이션이 손상되는 것을 발견할 수 있습니다. 귀하의 경우 올바른 접근 방식은 애플리케이션을 "사용자"로 계속 사용하고 "사용자"가 액세스할 수 있는 위치에 파일을 저장하는 것입니다.

그런데 gksudo -k데비안 테스트에서는 사용자 설정이 보존된 것 같습니다.

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

관련 정보