sudo [duplicate] 사용을 잊어버린 경우 파일 변경 사항을 저장하세요.

sudo [duplicate] 사용을 잊어버린 경우 파일 변경 사항을 저장하세요.

나노를 사용하고 있습니다.

때로는 파일을 변경한 후 저장을 시도한 후 sudo 권한이 필요하다는 것을 깨닫게 됩니다. 그런 다음 파일을 닫고 sudo로 다시 열고 다시 변경해야 합니다.

저장할 수 있는 방법이 있나요? 동료가 저장하지 않고 파일을 닫은 다음 "sudo!!" 같은 작업을 수행하고 변경 사항을 저장한 것을 기억합니다.

어떻게 작동하나요?

답변1

sudo !!zshcsh 스타일 기록 확장을 구현하는 또는 와 같은 셸의 명령은 bash가장 최근 명령을 다시 실행하지만 그 앞에 sudo. 그런 다음 계속해서 다시 변경하고 저장할 수 있습니다. 그러나 처음 도입한 변경 사항은 손실됩니다.

nano루트가 아닌 사용자로 편집기를 사용하고 있으며 현재 파일을 루트로 저장해야 한다고 가정합니다. 그런 다음 현재 버퍼의 내용을 필터링하여 이를 수행할 수 있습니다 sudo tee some/file/path. 이 명령은 tee루트로 실행되며 에 있는 파일을 덮어쓰거나 생성합니다 some/file/path.

nano편집기 에서 + ^R^X를 누른 다음 다음을 입력 하여 Ctrl+R이 필터를 호출 할 수 있습니다.Ctrl+X

|sudo tee some/file/path

(초기 신호는 현재 문서를 명령에 전달하려는 |것입니다 .)nano

비밀번호를 묻는 메시지가 표시되어야 하는 경우 sudo그렇게 됩니다. 이로 인해 디스플레이가 약간 복잡해 지지만 ^L( )를 눌러 Ctrl+L화면을 다시 그릴 수 있습니다.

알아채다조심해야 해다음과 같이 쓸 파일의 올바른 경로 이름을 지정하십시오.파일을 되돌릴 수 없게 덮어쓰게 됩니다.편집기 버퍼의 내용으로. 루트로 작성하고 있으므로,허가가 당신을 막을 수는 없습니다데이터 손상을 방지하기 위해. 따라서 이는 알아둘 가치가 있는 "해킹"이지만 이에 의존하고 싶지는 않습니다.

nano버전 2.9.8(2018)에는 외부 명령에서 텍스트를 필터링하는 기능이 추가되었습니다.

답변2

이 시도...

:w !sudo tee %

설명하다...

  • :w– 버퍼의 내용을 씁니다.
  • !sudo– sudo의 표준 입력으로 파이프합니다.
  • tee %– "%" 파일을 쓰기 위한 sudo 실행 티
  • %– Vim은 "%"를 현재 파일 이름으로 확장합니다.

답변3

sudo !!마지막 명령( !!) 이 호출됩니다 sudo. 그럼에도 불구하고 다시 변경해야 합니다(마지막 명령이 편집이라고 가정).

파일의 크기와 민감도(기밀 정보, 일반 텍스트 비밀번호 등)에 따라 파일을 임시 위치에 저장한 다음 에서 검색할 수 있습니다 sudo.

세션의 샘플 코드 vi:

:w /tmp/file.txt 
sudo vi /some/path/file.txt
:%d (this will delete all content of file.txt under sudo)
:r /tmp/file.txt (this will include from /tmp/file.txt )
:x (exit vi)
rm -f /tmp/file.txt (delete file)

주의 /tmp/file.txt가 노출됩니다.

답변4

일반적인 해결책은 "수정된 파일을 허용된 위치에 쓰고, 편집기를 종료하고, 파일을 올바른 위치로 복사/이동"하는 것입니다.

VISUAL이 명령은 및 환경 변수를 EDITOR즐겨 사용하는 편집기의 전체 경로로 설정한 경우 사용할 수 있습니다(예: . 읽다 .type -p nanosudoeditman sudoedit

sudoedit해당 root기능을 사용하여 편집 중인 파일의 임시 복사본을 만들어 $USER복사본을 편집할 수 있습니다( ). 편집을 마치고 임시 파일이 변경되면 sudoedit편집하려는 파일에 임시 파일을 복사하세요.

관련 정보