질문의 첫 번째 부분은 변경 사항을 되돌릴 수 없으며 ⌘
Z명령이 없거나 실행 취소 명령이 없지만 이전의 내용을 잘 추측하도록 권한을 설정할 수 있습니다. 아래 첫 번째 글 머리 기호에 대한 자세한 내용.
소프트웨어를 설치하려면 디렉토리 (및 해당 서브 디렉토리)에 쓰기 권한/usr/local 이 있어야합니다 . 이를 달성하는 몇 가지 방법이 있습니다.
- 소유자를 자신에게 설정하십시오 . 그게 당신이 한 일입니다
sudo chown -R $USER /usr/local. 내 리눅스 sysadmin 배경은 이것이 표준 방법이 아니라고 말해줍니다. 왜냐하면 /usr/local홈 디렉토리 외부에 있고 당신이 소유해서는 안되기 때문 입니다. 그러나 나는 당신이 돌이킬 수없는 것을 손상 시켰다고 말하지 않을 것입니다.
를 사용 sudo 하지만 사용 하지 않아도됩니다.
(내 관점에서 가장 좋은 해결책 . 왜? sudo는 자신을 보호합니다. 입력해야 할 경우 두 번 생각합니다 sudo( http://howtonode.org 의 자습서를 따르지 않는 한 :-)).
- ACL을 설정하십시오 . 원래 권한을 추가 된 권한과 분리하는 좋은 방법입니다. ACL에 대한 자세한 내용은 http://en.wikipedia.org/wiki/Access_control_list 를 참조하십시오 .
- 그룹을 구성합니다 . 소유 한 그룹에 자신을 추가
/usr/local 하고 권한을 g+rwx/로 변경하십시오 g+rw. 번거로운. 하지마
1. 변경 사항을 되돌리려 고합니다. 2. 원하지 않습니다. 4. 권장하지 않으므로 3을 설명하겠습니다. :
먼저 변경 사항을 "되 돌리십시오". /usr/local아마 user root그룹이 소유했을 것입니다 wheel. 다음과 같이 설정할 수 있습니다.
$ cd /usr/local
$ sudo chown -R root:wheel .
모든 권한을 갖도록 ACL을 설정하십시오.
$ cd /usr/local
$ sudo chmod -R +a "$USER allow delete,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,list,search,add_file,add_subdirectory,delete_child,file_inherit,directory_inherit" .
(자세한 내용 man chmod은 섹션 ACL MANIPULATION OPTIONS을 참조하십시오.)
모든 파일에 +추가 된 ls -eACL이 표시됩니다.
$ cd /usr/local
$ ls -la .
total 0
drwxr-xr-x+ 11 root wheel 374 Oct 10 21:57 .
drwxr-xr-x+ 12 root wheel 442 Sep 22 13:44 ..
drwxr-xr-x+ 3 root wheel 3774 Oct 10 21:57 bin
-rw-r--r--+ 1 jaume wheel 0 Oct 25 14:53 myACLtestfile
drwxr-xr-x+ 3 root wheel 136 Jul 26 18:55 include
drwxr-xr-x+ 4 root wheel 442 Jul 26 18:55 lib
(...)
$ ls -led bin
drwxr-xr-x+ 3 root wheel 3774 Oct 10 21:57 bin
0: user:jaume allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit
$ ls -le myACLtestfile
-rw-r--r--+ 1 jaume wheel 0 Oct 25 14:53 myACLtestfile
0: user:jaume inherited allow read,write,execute,delete,append,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown
(I 위의 명령을 테스트했지만, 나는 오타가있을 수 있습니다. 마찬가지로 가장 좋은 방법은 당신이 테스트 디렉토리에 위의 명령을 실행하는 것이 좋습니다 . 당신은 할 수있는 mkdir ~/tmpacl그런. cd ~/tmpacl그리고 sudo rsync -av /usr/local/ .의 내용을 복사 할 /usr/local대상을 ~/tmpacl건너 다음. cd /usr/local모든에 에 명령을 적용하는 위의 섹션 ~/tmpacl. 작업이 완료되면, rm -rf ~/tmpacl.)
지금 당신은 소프트웨어를 설치 (또는 그 문제에 대해 아무것도 할)에서 할 수 /usr/local없이 sudo.
당신이 만드는 모든 파일을 알 수 있습니다 /usr/local(당신에 속하는 것입니다 myACLtestfile일부 파일을 소유하는 것을 볼 수 있으므로, 위의 목록에서) root당신에 의해 다른 사람.
(마음이 바뀌고 멋진 세계로 돌아가려면 sudo다음과 같이 ACL을 삭제하십시오.
sudo chmod -R -N /usr/local
권한을 root:wheel다음으로 설정하십시오 .
sudo chown -R root:wheel /usr/local
)
** 편집하다 **
설치하려는 소프트웨어의 설정 루틴을 사용/usr/bin/install 하는 경우 훨씬 간단한 솔루션 일 수 있습니다. 더하다:
alias install="sudo /usr/bin/install"
에 ~/.bashrc. 그런 다음 . ~/.bashrc변경 사항을 적용하십시오.
그런 다음 /etc/sudoerscommand로 편집 하고 다음을 sudo visudo추가하십시오.
<your username> ALL=(ALL) NOPASSWD:/usr/bin/install
로 파일을 저장하고 닫습니다 :x.
( installGNU 설치와 같이 파일 시스템의 다른 곳에서 다른 명령 을 사용하는 경우 위의 경로를 적절하게 변경하십시오.)
이것이 작동하려면 소프트웨어를 사용해야합니다 /usr/bin/install. 일반적으로의 경우입니다 make install.
** /편집하다 **