nano로 파일을 편집하는 많은 시간을 저장하고 sudo로 실행하는 것을 잊었 기 때문에 권한 오류가 발생했습니다. 파일을 다시 열고 다시 편집하지 않고도 sudo가 될 수있는 빠른 방법이 있습니까?
nano
하지 vim
... 그리고 더 nano
유사하다 솔루션 vim
'은의 자신을 소개 없다.
nano로 파일을 편집하는 많은 시간을 저장하고 sudo로 실행하는 것을 잊었 기 때문에 권한 오류가 발생했습니다. 파일을 다시 열고 다시 편집하지 않고도 sudo가 될 수있는 빠른 방법이 있습니까?
nano
하지 vim
... 그리고 더 nano
유사하다 솔루션 vim
'은의 자신을 소개 없다.
답변:
아니요, 시작시 가지고 있지 않은 실행중인 프로그램 권한을 부여 할 수 없습니다. 'privilege escalation'¹이라는 보안 허점입니다.
당신이 할 수있는 두 가지 :
sudo cp $TMPFILE $FILE
. mv
파일 소유권 및 권한이 변경되어 파일 플레이스 홀더 자체가 아닌 파일 컨텐츠 만 바꾸고 싶으 므로이 용도로 사용 하지 않는 것이 좋습니다.fg
편집기로 돌아가서 저장하십시오. 권한을 수정하는 것을 잊지 마십시오!¹ 일부 편집자는 실제로 다른 권한으로 새 프로세스를 시작하고 저장을 위해 해당 프로세스로 데이터를 전달하여이 작업을 수행 할 수 있습니다. 예를 들어 파일 버퍼를 프로세스 파이프에 쓸 수있는 고급 편집기의 다른 솔루션에 대해서는 이 관련 질문 을 참조하십시오 . Nano는 새로운 프로세스를 시작하거나 다른 프로세스로 데이터를 전달할 수 없으므로이 파티에서 제외됩니다.
방금 시도했지만 nano
가장 놀라운 점은 파일 편집을 시작할 때 파일이 읽기 전용이라는 경고조차하지 않습니다. ( 업데이트 : 분명히 nano 2.2는 경고하지만 2.0은 그렇지 않습니다. )
이를 수행하는 기본 스크립트는 다음과 같습니다.
파일을 편집 할 수 있는지 확인하고, 파일을 편집 할 수 없으면 루트로 "nano"를 실행합니다.
/ usr / local / bin / edit (또는 ~ / bin / edit )
sudo= # empty is false, non-empty is true
editor=nano # XXX check $EDITOR and $VISUAL
if test -e "$1" && test ! -w "$1"; then
if test -t 0 && test -t 2; then
printf "%s is not writable. Edit with sudo? [y/n] " "$1" 1>&2
read -n 1
case $REPLY in
y|Y)
sudo=true
;;
n|N)
sudo=
;;
*)
printf "\nExpected y or n. Exiting.\n" 1>&2
exit 1
;;
esac
else
printf "%s is not writable. Fix the permissions or run \"view\" instead." "$1" 1>&2
exit 1
fi
fi
${sudo:+sudo} "$editor" "$1"
그리고 내가 view
변경하지 않을 것이라는 것을 알면 프롬프트를 피할 수 있도록 내가 전화 한 명령 .
/ usr / local / bin / view (또는 ~ / bin / view )
editor=nano
readonlyflag=-v
"$editor" $readonlyflag "$1"
view
Vi / Vim의 일부 라는 프로그램이 이미 있으므로 더 나은 이름을 제안하십시오.
(그러나 나는이 프로그램의 완전한 구현이 Vi의 view
중복을 만들 것이라고 생각합니다 .)
정식 버전
[ Read ... lines (Warning: No write permission) ]
바로 가기 (화면 하단)에 대한 두 줄의 도움말 바로 위에 표시됩니다. 나노 버전은 2.2.4입니다.
vim
. 나는 병합을 고려하고 있습니다 ...하지만 vim 특정 지침이 작동하지 않는다는 사실도 고려하고nano
있습니다.