Sudo & gksudo

우리는 root 권한으로 무었인가를 하고자 할 때, sudo를 사용합니다. 그런데, gedit 등 GUI program을 사용할 때에는 gksudo를 사용하라는 권고를 받습니다.

그런데, 실제로 gedit를 사용해 보면, "sudo gedit"할 경우와 "gksudo gedit"를 할 경우에 모두 목적을 달성할 수 있습니다. 그 차이는 "sudo gedit"으로 사용하면 password를 terminal에서 물어보고 "gksudo gedit"을 사용하면 password를 묻는 창이 나타난다는 점, 그리고 "sudo gedit"을 사용하면 다음의 WARNING이 뜨고, "gksudo gedit"을 사용하면 WARNING이 없습니다. 따라서 "gksudo gedit"으로 사용하는 것이 맞기는 맞는 것 같습니다.

(gedit:5509): IBUS-WARNING **: The owner of /home/username/.config/ibus/bus is not root!

[url:1iiwfqn7]https://help.ubuntu.com/community/RootSudo[/url:1iiwfqn7]
gksudo가 뭐가 다르고, 왜 sudo 대신 gksudo를 사용해야 하는지 알아보려고 글을 검색해 보았더니 위의 글이 나왔고, 다음과 같이 설명하고 있습니다.

You should never use normal sudo to start graphical applications as Root. You should use gksudo (kdesudo on Kubuntu) to run such programs. gksudo sets HOME=~root, and copies .Xauthority to a tmp directory. This prevents files in your home directory becoming owned by Root. (AFAICT, this is all that’s special about the environment of the started process with gksudo vs. sudo).

위 문장을 직역하는 것이야 가능하지만, 그것이 실질적으로 무슨 의미를 가지는 것인지 모르겠습니다. 위 문장이 가진 의미에 대한 배경 설명을 해 주시면 감사하겠습니다. 혹은 sudo는 왜 GUI program에 적절하지 않고, gksudo를 사용하는 것이 적절한지 풀어서 설명해 주시면 감사하겠습니다.

sudo는 root 권한을 빌려오지만 사용자 계정으로 프로그램 실행하는 것이고, gksudo는 $HOME을 root의 홈으로 지정함으로써 root 권한 + root 계정으로 실행하는 차이 아닐까요? sudo gedit 실행후 gedit 설정을 바꿔 보세요. 그리고 빠져나와서 gedit 사용자 계정으로 다시 실행하면 권한 문제가 생깁니다. X Window 프로그램 실행하려면 .Xauthority 파일이 필요한데 root 계정엔 이게 없으니까 사용자 계정 파일을 복사해서 gksudo에서 사용하는 것 같은데요.

GUI 프로그램을 sudo로 실행하면 사용자 폴더 설정 파일들이 root 권한으로 바뀌어 버릴 수가 있는 것이죠. 이 때문에 gksudo를 쓰라는 것이죠.

아직 시원하고 정확하게 아는 것은 아니지만, 이제 대략 짐작이 갑니다.

두 분 모두 친절한 답변에 감사드립니다.

원래는 GUI와 콘솔의 차이점이지만 그 어느거를 써도 사실상 동작은 하는…
다만 gksu 를 안 쓸 경우에는 콘솔에서 프로그램이 떨어지지 않고 같이 동작…