답변:
두 파일 모두 같은 위치를 가리 킵니다.
$ ls -l /usr/bin/gksudo
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu
... gksudo에 연결되어 gksu있습니다. 그러나 이것은 그들이 의미하지 않는다 할 그것에서 멀리, 같은 일을.
응용 프로그램은 명령을 실행하는 데 사용 된 명령을 감지 할 수 있습니다. 이것은 일반적 argv[0]으로 C 스타일 언어 또는 $0Bourne 스타일 쉘 스크립트입니다. 응용 프로그램에서이를 확인할 수 있으며이 경우 실제로 작동 방식이 변경됩니다. 이것의 첫 표시는 man gksu페이지에 있습니다 :
gksu is a frontend to su and gksudo is a frontend to sudo.
에 대한 소스 ( apt-get source gksu)를 살펴보면 run_mode이를 감지하는 방법을 확인할 수 있습니다.
{ /* support gksu_sudo_run */
gchar *myname = g_path_get_basename (argv[0]);
if (!strcmp(myname, "gksudo"))
run_mode = SUDO_MODE;
g_free (myname);
}
--su-mode/ -w및 --sudo-mode/ -S인수로 이것을 재정의 할 수 있습니다 (따라서 gksudo심볼릭 링크 없이 동등한 명령을 실행할 수 있습니다 ... 그러나 그것은 당신에게 달려 있습니다.
이 "모드"가 실제로 어떻게 다른지 알고 싶다면에 약간의 탈출구가 gksu있습니다. 에 따라야합니다 libgksu. 시스템으로 전달하기 전에 실제로 권한을 확인하는 라이브러리입니다.
에 gksu도달 할 때까지 모드를 지정하지 않으면 (예 : 인수없이 호출) libgksu, 스테파노가 지적한대로 Gconf를 확인 하고 여전히 결정할 수없는 경우 기본 su모드로 설정됩니다.
bash로 호출 될 때 POSIX 엄격 모드 를 켭니다 sh. 그리고 gksu 이다 또한 호출 이름을 알고 있습니다.
우분투 (!)에는 차이가 없습니다.
gksu일반적으로 루트 사용자로 로그인 하고이 세션에서 앱을 실행합니다. 그러나 우분투에서는 기본적으로 "스도 모드"를 사용합니다 gksudo. 이는 running과 같습니다 . 우분투에서는 기본적 으로 루트 로 로그인 할 수 없기 때문입니다 .
gksudo의 그래픽 것과 동일합니다 sudo(그리고 OLI가 지적한대로, 단지 기호 링크 gksu하는)
gksu의 gconf 항목에서 :

또한 sudo와 gksudo의 차이점에 대해 :
그래픽 응용 프로그램을 루트로 시작하기 위해 일반 sudo를 사용해서는 안됩니다. 그러한 프로그램을 실행하려면 gksudo (Kubuntu의 kdesudo)를 사용해야합니다. gksudo는 HOME = ~ root를 설정하고 .Xauthority를 tmp 디렉토리에 복사합니다. 이렇게하면 홈 디렉토리의 파일이 루트에 의해 소유되지 않습니다. (AFAICT, 이것은 gksudo와 sudo로 시작된 프로세스의 환경에 특별한 모든 것입니다).
— ( Chris Wilson을 통한 커뮤니티 문서 에서 )
나는이 오래된 스레드 것을 알고,하지만 난 봤는데 당신에게 요구 사이에 미묘하지만 중요한 차이에 대해 gksu하고 gksudo.
길고 열심히 보았지만 어디에나 문서화 된 차이점을 찾을 수 없지만 여전히 존재합니다. 또한 왜 차이가 있는지 알지 못했습니다. 실수로 정확하게 때문에 (A에서 논의 된 이러한 차이의 일부 시스템 파일을 삭제했을 때이 어려운 방법을 발견 우분투 포럼에 스레드를 내가 사용했던 -) gksu,하지만 그 이후로 내가 사용하는 것이 있는지 항상 만들었습니다 gksudo.
요약하면 다음을 시도하십시오.
touch abctouch abc.tmptouch abctmp다음 6 가지 명령을 실행하십시오. 처음 5 개는 동일한 (예상 한) 결과 (예 abc.tmp:)를 제공하는 반면 6 번째는 abctmp하지 말아야 할 추가 파일 ( )을 포함합니다 .
find . -regextype posix-egrep -regex '.*\.tmp' -print
sudo find . -regextype posix-egrep -regex '.*\.tmp' -print
gksudo -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksudo --su-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksu --sudo-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksu -- find . -regextype posix-egrep -regex '.*\.tmp' -print
당신이 교체 할 때 문제를 상상해 -print와 -delete에 find명령 (일부 시스템 파일이 삭제되는 원인이 나에게 정확히 무슨 일이 있었는지입니다).
따라서 gksudo대신에 사용하십시오 gksu.
gksudo는 다음과 같이 입력하는 것과 같습니다.gksu --sudo-mode