나는 몇 가지 사용자 정의 기능을 만들기 위해 sh를 배우고 있습니다. 나는 스택 교환에서 확인했고 누군가가 아래에 내 개인 스크립트를 넣으면 실제로 그런 일을 하는 ~/bin
것과 같은 악성 코드를 탐색할 수 있다고 말했기 때문에 내 개인 스크립트를 위한 안전한 장소를 찾고 있습니다 .ls()
rm -rf
답변1
ilkkachu의 의견을 바탕으로 편집되었습니다. 파일 쓰기 금지가 삭제로부터 보호되지 않는다는 사실을 잊어버렸습니다. 따라서 파일도 쓰기 금지된 폴더에 있어야 합니다.
다음과 같은 경우 파일을 수정하려면 비밀번호가 필요합니다.
- 소유자에게만 쓰기 권한이 있습니다.
- 소유자는 루트입니다.
그렇더라도 누구나 파일을 삭제하고 자신의 콘텐츠로 다시 만들 수 있습니다. 이를 방지하려면 쓰기 권한이 없는 폴더에 파일을 넣어야 합니다. 폴더 삭제도 가능하므로반품보호된 폴더에 있어야 합니다.등까지 /
...
즉, 파일 권한이 다음과 같기를 원합니다.
.rw-r--r-- root
일반 사용자 셸에서 실행할 수 있지만 수정하려면 sudo가 필요합니다.
.rwxr-xr-x root
실행 가능해야 하는 경우에도 마찬가지입니다.
해당 파일 사이에 포함된 모든 폴더는 /
다음과 같아야 합니다.
drwxr-xr-x root
다행스럽게도 대부분의 최상위 시스템 폴더는 home
루트에서만 쓸 수 있으므로 적합합니다. 컨벤션이 무엇인지 잘 모르겠습니다. /usr/share
예를 들어 보겠습니다.
따라서 일반 파일로 시작하십시오 ~/myscripts/script.sh
.
# change file permissions to .rw-r--r--
chmod 644 myscripts/script.sh
# or to .rwxr-xr-x
chmod 755 myscripts/script.sh
# set permissions on the folder (they should be like this by default already)
chmod 755 myscripts
# make root the owner
sudo chown root:root myscripts/script.sh
sudo chown root:root myscripts
# place it in one of the root folders
sudo mv myscripts /usr/share/
이 공격 벡터가 걱정된다면 모든 자동 실행 셸 스크립트가 유사하게 보호되는지 확인해야 합니다: .bashrc, .bash_profile... (원치 않는 부작용이 있는지는 모르겠습니다. 아직 시도했습니다). 또한 새 위치를 가리키는 모든 기호 링크나 구성 파일을 잠가야 합니다.