
나는 읽었다커뮤니티 "RootSudo" 문서그리고 나는 이 라인에 관심이 있습니다:
당신은해야절대루트로 그래픽 응용 프로그램을 시작하려면 일반 sudo를 사용하십시오.
왜? 차이점은 무엇입니까? 저는 일반 데스크톱 사용자이므로 간단한 설명을 부탁드립니다.
답변1
Ubuntu 19.10 이상에서는그 기사(그리고 이 답변에서는) 더 이상 적용되지 않습니다. 보다WinEunuuchs2Unix의 답변게다가이 질문.
그래픽 응용프로그램은 종종 사용자 내부에 작성된 구성 파일에 설정 및 기타 사용자별 데이터를 저장합니다.홈 폴더. 응용 프로그램이 사용자의 홈 폴더로 무엇을 사용해야 하는지 결정하는 데 사용하는 주요 메커니즘은HOME
환경 변수. ( 를 사용하여 직접 검사할 수 있습니다 echo $HOME
.)
당신이 달리고 있다고 가정하자gedit
(그래픽 텍스트 편집기)root
. 을 실행하면 은( 는 sudo gedit
) HOME
계속해서 다음을 가리킵니다.당신의프로그램이 실행 중이더라도 홈 디렉토리~처럼root
. 결과적으로 gedit
구성 파일을 작성합니다.~처럼root
홈 디렉토리에 넣습니다. 이것때로는 결과가 나올 것입니다구성 파일에서소유~에 의해root
따라서당신은 접근할 수 없습니다(나중에 가 아닌 자신으로 프로그램을 실행할 때 root
) 이는 주로 애플리케이션이 새 구성 파일을 생성해야 할 때 발생합니다. 새로 생성된 파일은 기본적으로 해당 파일을 생성한 사용자(이 경우 root
귀하가 아닌 )가 소유합니다.
sudo
이것이 직선이 아닌 그래픽 프런트엔드로 그래픽 애플리케이션을 실행해야 하는 주된 이유입니다 sudo
. Ubuntu 및 대부분의 파생 제품(Xubuntu 및 Lubuntu 포함)에서 표준 그래픽 프런트엔드는 다음과 같습니다.gksu
/gksudo
. 쿠분투에서는kdesudo
. (상황에 따라 다릅니다.데스크탑 환경사용되고 있습니다.)
만약 너라면원하다sudo
와 같은 그래픽 애플리케이션을 실행하기 위해 직접 사용하려면 gedit
다음을 실행할 수 있습니다.
sudo -H gedit
플래그 -H
는 sudo
의 HOME
홈 root
폴더(/root
).
그래도 소유권이 자동으로 처리되지는 않습니다..Xauthority
이를 임시 폴더에 복사합니다(이것은 그래픽 sudo
프런트엔드가 처리하는 또 다른 작업입니다). 하지만 간헐적으로 접근할 수 없는 이벤트의 경우 .Xauthority
오류가 발생하며, sudo rm ~/.Xauthority
자동으로 다시 생성되므로 삭제( )하여 문제를 해결할 수 있습니다. 따라서 .Xauthority
의 소유권과 권한을 보호하는 것은 구성 파일의 소유권과 권한을 보호하는 것보다 덜 중요합니다.
root
-owned 와 달리 .Xauthority
구성 파일이 로 소유되면 root
문제가 무엇인지 항상 명확하지 않습니다(그래픽 프로그램이 종종 실행되지만 잘 작동하지 않고 유용한 오류를 콘솔에 출력하기 때문입니다). 그리고 때로는 고치는 것이 더 큰 번거로움을 안겨주기도 합니다. 특히홈 디렉토리에 있는 하나 이상의 파일을 자신이 아닌 다른 사람이 소유하게 하려는 상황에 있는 경우chown
(왜냐하면 모든 파일을 자신에게 재귀적으로 다시 보내는 것만으로는 문제를 해결할 수 없기 때문입니다 .)
따라서 sudo
(적어도 없이 -H
) 그래픽 응용프로그램을 실행하는 데 사용해서는 안 됩니다.~하지 않는 한당신은 앱의 내부 작동 방식에 대해 매우 잘 알고 있으며 앱이 구성 파일을 작성하려고 시도하지 않는다는 것을 확실히 알고 있습니다.
답변2
간단히 말해서:
이렇게 하면 홈 디렉토리의 파일이 루트의 소유가 되는 것을 방지할 수 있습니다.
읽어여기. 또한, 아마도"gksudo nautilus"와 "sudo nautilus"의 차이점은 무엇입니까?
답변3
우분투 19.10 업데이트
현재우분투 19.10, sudo some_command
이제 입력은 입력과 동일한 효과를 가집니다 sudo -H some_command
. 이는 터치된 모든 구성 파일의 디렉터리가 디렉터리 (일명 ) /root
가 아닌 디렉터리 아래에 있음을 의미합니다 ./home/regular_userID
$HOME
이로 인해 이 전체 Q&A는 Ubuntu 19.10 이상의 사용자에게 상당한 논란의 여지가 있습니다.
배포판에서처럼 sudo
작동하는지 확인하려면 다음 짧은 테스트를 시도해 보세요.sudo -H
$ sudo printenv | grep HOME
HOME=/home/rick
$ sudo -H printenv | grep HOME
HOME=/root
보시다시피, sudo
위와 같이 수행되지 않으므로 sudo -H
일반을 사용하면 sudo
사용자 구성 파일이 손상될 수 있습니다.
또는 gksu nautilus
에 대한 대안 은 추가 기능을 사용하는 것입니다 . 이를 통해 파일과 디렉토리를 탐색할 수 있습니다.gksu gedit
sudo -H gedit
nautilus-admin
노틸러스그런 다음 루트(관리자)로 엽니다.
설치는 간단합니다.
sudo apt install nautilus-admin
이제 노틸러스에 있으면 관리자로 편집할 수 있는 추가 옵션이 제공됩니다.
gedit
루트는 환경 설정을 허용하지 않기 때문에
루트로 실행하면 gedit
탭 정지, 탭을 공백으로 변환, 글꼴 이름, 글꼴 크기, 줄 바꿈 등에 대해 일반 사용자로 설정한 기본 설정을 사용할 수 없습니다.
sgedit
이 문제를 해결하기 위해 사용자 기본 설정을 상속하고 이를 루트에 적용하는 스크립트를 작성했습니다 .내 루트 gedit를 내 사용자 gedit의 기본 설정과 어떻게 동기화할 수 있나요?
- 다음을 사용하여 전화
sgedit filename1 filename2 ...
- 탭 정지, 글꼴, 줄 바꿈 등에 대한 사용자의 gedit 설정을 가져옵니다.
sudo -H
루트 권한을 얻으면서 파일 소유권을 보존하려면 다음으로 승격합니다 .- 마지막 시간이 초과된 경우 비밀번호를 요청합니다
sudo
. - sudo의 gedit 설정을 가져옵니다.
- 사용자와 sudo gedit 설정의 차이점을 비교합니다.
- 차이점에 대해서만 gsettings 세트를 실행합니다(174개의 set 명령을 12개 이하로 줄입니다. 다음 번에는 한두 개의 변경만 실행되지만 변경되지 않는 경우가 많습니다.
gedit
터미널 프롬프트가 즉시 다시 나타나도록 백그라운드 작업으로 호출합니다 .