gksudo와 gksu의 차이점은 무엇입니까?


58

gksu foo과 의 동작에 차이가 gksudo foo있습니까?
그것들을 서로 바꿔서 사용할 수 있습니까?

답변:


39

두 파일 모두 같은 위치를 가리 킵니다.

$ 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모드로 설정됩니다.


1
Oli의 의견을 추가하려면; gksudo는 gksu에 심볼릭 링크되어 있지만 Ubuntu에서는 기본적으로 / apps / gksu / sudo-mode가 활성화되어 있기 때문에 gksudo 사용합니다. 따라서 누군가 강제로 --su-mode 옵션을 사용하지 않으면 gksu가 사용되지 않습니다.
Vish

5
@Oli : symlink이기 때문에 아무런 차이가 없다고 즉시 결론을 내릴 수는 없습니다. 심볼릭 링크의 이름에 따라 busybox를 보면 다른 동작이 수행됩니다. 이 경우, 그것이 사실인지 아닌지는 모르겠지만 실제로 AFAIK입니다.
Lekensteyn

1
-1, 매우 오해의 소지가 있음 : 소프트웨어는 이름을 불러오는 데 사용 된 이름에 따라 다르게 동작 할 수 있습니다. 예를 들어 bash로 호출 될 때 POSIX 엄격 모드 를 켭니다 sh. 그리고 gksu 이다 또한 호출 이름을 알고 있습니다.
MestreLion

휴대 전화에서 화면이 너무 작고 손가락이 너무 커서 인터넷을 사용하면 실수로 다운 보트가 발생해야합니다. 나는 보상하기로
찬성했다

37

우분투 (!)에는 차이가 없습니다.

  • 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을 통한 커뮤니티 문서 에서 )


14

나는이 오래된 스레드 것을 알고,하지만 난 봤는데 당신에게 요구 사이에 미묘하지만 중요한 차이에 대해 gksu하고 gksudo.

길고 열심히 보았지만 어디에나 문서화 된 차이점을 찾을 수 없지만 여전히 존재합니다. 또한 왜 차이가 있는지 알지 못했습니다. 실수로 정확하게 때문에 (A에서 논의 된 이러한 차이의 일부 시스템 파일을 삭제했을 때이 어려운 방법을 발견 우분투 포럼에 스레드를 내가 사용했던 -) gksu,하지만 그 이후로 내가 사용하는 것이 있는지 항상 만들었습니다 gksudo.

요약하면 다음을 시도하십시오.

  1. 일부 폴더에 3 개의 파일을 만듭니다.
    touch abc
    touch abc.tmp
    touch abctmp
  2. 다음 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-deletefind명령 (일부 시스템 파일이 삭제되는 원인이 나에게 정확히 무슨 일이 있었는지입니다).

따라서 gksudo대신에 사용하십시오 gksu.


12.04LTS에서 이것을 시도했습니다. 이유를 아직 완전히 이해하지 못하지만 차이점이 있습니다. gksu의 소스 코드 gksudo는 다음과 같이 입력하는 것과 같습니다.gksu --sudo-mode
Warren Hill

@WarrenHill — 이론 상으로는! 그러나 실제로는 아닙니다. 이유를 모르겠습니다.
Paddy Landau

2
흥미롭고 13.04에 확인되었습니다. 따옴표 처리 버그처럼 보입니다.
l0b0

4
버그를 신고했습니다 .
l0b0

1
@ l0b0-감사합니다. 버그에 투표를 추가했습니다.
Paddy Landau 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.