Gnu/Linux의 GUI(및 CLI)에서 시스템 파일을 루트로 올바르게 편집하는 방법은 무엇입니까?

Gnu/Linux의 GUI(및 CLI)에서 시스템 파일을 루트로 올바르게 편집하는 방법은 무엇입니까?

체계:리눅스 민트 18.1 64비트 시나몬.


목표: 정의불다다양한 출시를 위한 별칭명령줄 인터페이스그리고GUI파일을 열 때 텍스트 편집기를 사용하십시오.뿌리패턴의 출처gnome-terminal에뮬레이터.


진전

예를 들어 다음 별칭은 예상대로 작동하는 것으로 보입니다.

~을 위한명령줄 인터페이스, 이 예에서는 Nano(공식 웹 사이트):

alias sunano='sudo nano'

~을 위한GUI, 이 예에서는 Xed(위키피디아 기사):

alias suxed='sudo xed'

둘 다 파일을 엽니다.뿌리.


질문

질문이 있어요gksudo이것과 결합sublime-text:

alias susubl='gksudo /opt/sublime_text/sublime_text'

때때로효과가있다. 대부분의 경우 아무것도 하지 않습니다.

이 일관되지 않은 동작을 어떻게 디버깅합니까? 아무것도 출력하지 않습니다. 오류 메시지나 그런 것은 없습니다.


질문

gksudoDebian에서는 더 이상 사용되지 않으며 Ubuntu 18.04 Bionic에는 더 이상 포함되지 않으므로 이 질문을 여전히 유효한 질문으로 바꾸어 보겠습니다.

Linux의 GUI(및 CLI)에서 시스템 파일을 루트로 올바르게 편집하는 방법은 무엇입니까?

적절하게이 경우에는 다음과 같이 정의합니다.안전하게예를 들어, 파일 편집 중에 정전이 발생하면 SSH 연결이 끊기는 등의 또 다른 예가 있을 수 있습니다.

답변1

sudoedit꼭 필요한 경우 가 아니면 루트로 편집기를 실행해서는 안 됩니다.sudo -e또는 sudo --edit데스크탑 환경의 관리 기능입니다.

sudoedit

sudoedit올바르게 설정 되면 다음을 수행할 수 있습니다.

SUDO_EDITOR="/opt/sublime_text/sublime_text -w" sudoedit yourfile

sudoedit이 작업이 허용되는지 확인하고 소유권을 수동으로 변경하지 않고도 편집할 수 있는 파일의 복사본을 만들고 편집기를 시작한 다음 편집기가 종료되면 파일이 변경된 경우 다시 복사합니다.

별칭 대신 함수를 사용하는 것이 좋습니다.

function susubl {
    export SUDO_EDITOR="/opt/sublime_text/sublime_text -w"
    sudoedit "$@"
}

비록제프 샬러env이것을 별칭에 넣고 쉘 환경을 변경하지 않아도 된다고 지적했습니다 .

alias susubl='env SUDO_EDITOR="/opt/sublime_text/sublime_text -w" sudoedit'

$SUDO_EDITOR$VISUALor가 충분 하다면 $EDITOR환경 변수를 사용할 필요가 없습니다.

이것-w옵션sudoedit파일을 반환하고 다시 복사 하기 전에 파일이 닫힐 때까지 Sublime Text 호출이 대기하는지 확인하세요 .

데스크탑 환경(GNOME)

GNOME(및 기타 데스크탑 환경)에서는 다음 중 하나를 사용할 수 있습니다.GIO/GVFSadmin://- 계획이 있는 유능한 편집자

gedit admin:///etc/shells

그러면 PolKit을 사용하여 적절한 인증을 요청한 다음 인증에 성공하면 편집할 파일을 엽니다.

답변2

다른 해결책: 저는 시스템 파일을 직접 편집하지 않고, 어딘가에 복사본을 만들고(*), 복사본을 편집하고(보통 편집기를 사용하여) 작업을 sudo cp완료합니다.

(*) 모든 파일이 한 곳에 보관되는 디렉토리가 있습니다.

  • 내가 변경한 모든 파일의 목록을 자연스럽게 유지합니다.
  • 쉬운 버전
  • 백업이 용이함
  • 다른 기계로의 전송이 용이함

관련 정보