gedit를 사용하여 'sudo -H gedit'로 시스템 파일을 편집 할 때 문제가 있습니까?


10

나는 우분투를 처음 접했을 때, 사람들이 시스템 파일 편집을 제안 할 때이 사이트의 답변에서 항상 sudo nano또는 명령 sudo vi입니다. 터미널 기반 텍스트 편집기를 사용하는 것을 싫어하기 때문에 보통

sudo -H gedit

대신 지금까지 완벽하게 작동했습니다.

gedit시스템 파일 편집에 문제가 있거나 텍스트 편집기를 선택하는 것이 전적으로 개인의 취향에 달려 있습니까? 이러한 파일을 편집 할 때 염두에 두어야 할 사항이 있습니까?


3
-H부분은 중요sudo 합니다. GUI 응용 프로그램이 없으면 GUI 응용 프로그램을 시작 하는 데 사용하지 마십시오 .
pomsky

답변:


10

올바르게 실행하는 한 선호도의 문제입니다.

기능의 차이점 외에도 사용하는 텍스트 편집기는 실제로 선호 사항입니다. 텍스트 편집기가 Gedit 와 같은 그래픽 프로그램 인 경우에도 마찬가지 입니다. 이가 좋은 이유가 없다 말할 수 없습니다 nanovim자주하는 것이 좋습니다. 터미널 기반 텍스트 편집기 vim(또는 적어도 vi명령) nano는 GUI가없고 심지어 가장 작고 손상된 시스템에서도 사용할 수 있습니다 . 그들은 그들 뒤에 어떤 전통이 있습니다 (당신이 그런 종류의 것에 부분적이라면); 그것들은 다른 작업이 수행되는 동일한 터미널에서 실행될 수 있습니다. 터미널 멀티플렉서 사용자의 워크 플로에 자동 통합됩니다 . 그리고 그것들은 어느 것보다 사용 가능할 가능성이 높습니다Ubuntu에서도 여러 그래픽을 가진 특정 그래픽 텍스트 편집기, 심지어 Gedit도 있습니다 .

그게 다가 아닙니다. 시스템 파일을 편집하려는 경우 한 가지 방법은 편집기를 루트로 실행하는 것입니다. 이것이 유일한 접근 방법 은 아니며 이에 대한 몇 가지 주장이 있지만 (아래 참조), 일반적인 접근 방식입니다. 당신이 접근을하는 경우 편집기와 같은 그래픽 프로그램을 사용하여, 당신은 필요 돌봐 하는 방식으로 실행 $HOME자신보다는 루트의 홈 디렉토리이며 , 이것은 번거 로움과 복잡성의 또 다른 레이어를 추가합니다. 그러나 이미 그렇게하고 있습니다. 당신은 달리고 있는데 sudo -H gedit, 이것은 합리적인 방법 중 하나입니다 . 그럼에도 불구하고 이러한 복잡성은 사람들이 비 그래픽 편집자를 제안하는 또 다른 이유입니다.

그래픽 프로그램은 종종 비 그래픽 프로그램보다 더 복잡합니다. 더 많은 것을 루트로 실행하는 것은 일반적으로 나쁘다 . 사고를 포함하여 가능한 버그로 인해 문제 가 더 많이 발생할 수 있기 때문이다. (하지만 그래픽이 아닌 텍스트 편집기 vim도 매우 정교하며 다양한 작업을 수행하기 위해 수많은 외부 프로그램을 실행하도록 구성되어 있습니다.)

편집기를 루트로 실행하는 것 외에도, 루트 가 아닌 사용자로 실행할 때도 편집기가 수정할 수있는 파일을 편집하여 파일 변경 사항이 원하는 루트 소유 파일로 전파되도록하는 방법이 있습니다. 바꾸다. 세부 사항이 상당히 다양하기 때문에 추상적입니다. 다음 두 가지 주요 구체적인 접근 방식이 있습니다.

sudoedit

이를 수행하는 상당히 오랜 방법 중 하나 는 sudoedit( 와 동일한 매뉴얼 페이지에sudo 문서화되어 있음 )입니다. 기본적으로 기본 텍스트 편집기를sudoedit 사용 합니다.이 편집기 는 일반적으로 그래픽 프로그램이 아니어야합니다. 하지만 당신은을 통해 어떤 편집기를 사용하도록 말할 수있는 SUDO_EDITOR, VISUAL또는 EDITOR 환경 변수 가 순서대로 참조합니다. 따라서 다음을 실행할 수 있습니다.

VISUAL=gedit sudoedit filename

교체 filename파일의 상대 또는 절대 경로로.

편집하려는 파일의 임시 사본이 작성됩니다. 사본은 루트 (또는 원래 소유자가 아닌)가 아닌 귀하가 소유합니다. 텍스트 편집기가 열리고 임시 사본을 편집 할 수 있습니다. 텍스트 편집기 를 닫을sudoedit실제로 변경했는지 확인합니다. 그럴 경우 수정 된 임시 사본 을 원본으로 다시 복사 합니다.

sudoedit그래픽 편집기와 함께 작동 하지만 터미널 기반 편집기에도 유용합니다. 두 경우 모두 같은 텍스트 편집기 실행은, 그래서 당신이 그것에 수행 구성하고, 다른 작업이 다른 준다 그 파일에 대한 수정 사항이 사용자에 의해 수행되는 것보다, 조금 실수의 일부 종류에 대한 보호를.

원하는 경우 이러한 환경 변수 중 하나를 지속적으로 설정할 수 있습니다 . SUDO_EDITOR다른 것들보다 적게 사용되기 때문에 아마도 가장 좋습니다. 당신이 그것을 설정하는 경우에는합니다 gedit, 같은 명령 것을 명심 에는 GUI가 아니라, 사용할 수 없습니다하지 않습니다 작업 (임에도 불구하고 종종 항상 A의) 경우를 가상 콘솔 또는를 통해 SSH .sudoedit filename

GVFS 관리자 백엔드

이 작업을 수행하는 또 다른 새로운 방법 admin://은 기존 Unix 스타일 경로가 아닌 GVFS 경로를 통해 파일을 여는 것입니다. 이것에 대해 가르쳐 주신 pomsky에게 감사드립니다. SSH를 통해 연결된 원격 시스템에 있기 때문에 파일을 편집하기에 편리한 위치에 있지 않은 파일을 편집하기위한 GVFS 경로가있는 것처럼 GVFS는 admin://파일 편집 경로를 지원 합니다. 당신은 소유하지 않습니다.

이것은 sudoedit편집기를 사용자 자신으로 실행하고 편집기가 보는 파일이 편집 할 수있는 파일이라는 점 과 개념적으로 유사합니다 . 파일을 열려고하면 인증이 필요합니다. 일반적인 보안 제한을 우회하는 마법의 방법은 아닙니다.

gedit admin:///path/to/filename

/path/to/filename시작하는 파일의 절대 경로가 있어야합니다 /. 따라서 /뒤에 3 개의 문자가 admin:있습니다.

에디터 구성에 의해 이론적으로 영향을받는 인코딩 및 기타 사항

파일 인코딩은 실제로 사용하는 편집기가 그래픽인지 여부에 영향을받지 않습니다. 와 같은 일부 편집기 vim는 그래픽으로 ( gvim명령) 또는 비 그래픽으로 (명령) 작동 할 수도 있습니다 vim. 인코딩에 대한 귀하의 질문에 간단한 대답은 있다는 것입니다 하지 않는 것을 걱정해야한다. 그것은 당신이 실제로이 답변의 나머지 부분을 읽을 필요가 없다는 사실에 충분히 가깝습니다.

현재 (과거) 우분투 버전에서는 같은 명령 sudo nanosudo vim루트로 그 편집기를 실행 왔지만 $HOME여전히으로 설정 하여 홈 디렉토리. 즉, 기본적으로 편집기는 루트 구성 대신 구성을 사용 합니다 . 해당 편집기의 구성 (또는 git인코딩 또는 줄 끝에 대한 작업과 같은 일부 프로그램을 실행하는 프로그램)에 무언가 가 있으면 따라갑니다. 와 , 그런 일이되지 않습니다.sudo -H editor

어떤 사람들 은 편집자 에게 베어 sudo(즉, -i또는 없이 -H)를 사용하기 때문에 편집자를 사용합니다. 그러나 실제로 이것에 대해 두 번 생각해야합니다. 뿐만 아니라 당신은 같은 방법으로 더 명확하게 목표를 달성 할 수있는 sudoedit, 같은 명령의 다른 단점이 있습니다 sudo nanosudo vim:

  • 편집기 구성으로 인해 무언가가 실행되면 루트로 실행됩니다. 와 같은 정교한 편집기의 vim경우 이로 인해 약간의 사소한 코드가 루트로 실행될 수 있습니다. 위에서 언급했듯이 루트로 실행되는 코드가 적을수록 일반적으로 좋으며 그래픽 편집기를 루트로 실행하는 것에 대한 논쟁 중 하나입니다.

    귀하의 경우 vim구성이 다양한 플러그인을 가지고 - 당신이 그것을 입력 예를 들어, 소스 코드 정적 분석을 수행하기 - 루트의 함께 루트로하지, 적은 물건 실행을 수행 보다 . (로 루트로 실행하는 횟수는 적지 만 플러그인은 여전히 ​​작동합니다!) 편집기가 그래픽인지 여부와는 별개입니다.sudo -H vim filenamesudo vim filenameVISUAL=vim sudoedit filename

  • 편집기 구성이 손상되어 파일을 쉽게 편집하지 못하게하는 경우 루트에 적용되므로 수정이 훨씬 더 어려울 수 있습니다. 이것은 단지 번거롭고 해결하기 어려운 문제가 아닙니다.

  • 명령 좋아 sudo vim조금 (경솔한!) 명령과 같은 문제를 sudo gedit. 당신은 같은 편집기를 실행하면 vim루트로하지만 재설정없이을 $HOME(로 sudo -Hsudo -i할 것이다), 그리고 그 자체에 대한 구성 파일을 만들고 , 그 구성 파일은 홈 디렉토리에 상주하지만 그들은 루트가 소유하며, 구성이 다소 파괴 할 수있다 나중에 에디터를 직접 실행할 때

    글쎄, 이것은 확실히 그 문제 처럼 들린다 ! 그래픽 응용 프로그램보다 덜 중요한 이유는 편집기가 여전히 시작되고 오류 메시지를 이해하기 쉽고 일반적으로 특정 파일이 훨씬 쉽게 영향을받는 부분을 파악할 수 있고 손상은 일반적으로 그 하나의 프로그램. (그래픽 프로그램은 더 많은 장소에서 구성 파일을 사용합니다.) 또한, 그래픽 편집기와 달리 사용자 만 부담 텍스트 편집기를 사용하여 의도적으로 구성을 변경하지 않는이 문제가 발생하는 것이 매우 어렵다.

다시 말하지만, sudoedit데스크탑 을 사용 하거나 데스크탑에서 편집기를 정상적으로 시작하지만 admin://경로를 통해 파일에 액세스 하여 권한 문제를 피하면서 자체 사용자 계정의 편집기 구성을 사용할 수 있습니다 .

마지막으로, 위에서 언급 된 sudo-H또는 -i전달 된 동작 은 실제로 Ubuntu의 향후 릴리스 (몇 년 전 이미을 사용하는 대부분의 Unix와 유사한 운영 체제 sudo) 에서 변경 될 예정입니다 . 이 글을 쓰는 시점에 개발 릴리스 인 Ubuntu 19.10에서 동작이 이미 변경되었습니다 .


2
다른 문제 sudo -H는 100 또는 1000 중 1 번 잊어 버릴 것입니다 -H. 파일의 소유권 $HOME 어딘가 에서 사용자에서 루트로 이전 될 수 있습니다 .
WinEunuuchs2Unix

3

귀하의 질문에 대답하려면 : 일반적으로 GUI 편집기를 사용하는 것이 gedit큰 파일의 경우 속도가 느려지 는 문제가되지 않습니다 .

그러나 GUI 프로그램의 경우 pkexec또는 gksu대신 사용 sudo합니다. 작동하기 전에 구성pkexec 해야 할 수도 있습니다.

pkexec gedit

또는 이전 Ubuntu 버전 (예 : 16.04)의 경우 다음을 사용할 수 있습니다.

gksu gedit

(예 : geany;-) 더 나은 GUI 편집기를 사용해 볼 수도 있지만 )


gksu거의 버려졌습니다.
pomsky

pkexec......
Rinzwind

true true true ....
pLumo

3
이것은 (@eliah) 도움이 될 것입니다
pomsky

1
pomsky의 의견에 대해 자세히 설명합니다. 연결이 거부되고 오류가 표시되면 별명을 다음과 같이 설정해야합니다.pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY
mchid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.