sudo를 사용하여 몇 가지 명령을 실행해야 합니다. 이러한 명령은 git 저장소(예: 도트파일)에 있거나 저장되어 있습니다 .bashrc
.~/bin
~root
내 사용자를 가리키는 심볼릭 링크를 넣었 $HOME
지만 보안 측면에서 그다지 좋지 않다고 판단하여 제거했습니다.
제가 걱정되는 것은 만약에루트가 아닌사용자에게 이러한 파일에 대한 쓰기 권한이 있으면 악성 프로그램이 권한 상승을 수행할 수 있습니다. 그러나 나는 내 책에서 많은 도트 파일 저장소가 안전하지 않다는 것을 발견했습니다.
에서 .bashrc
sudo 명령할 수 있는NOPASSWD를 활성화합니다 /etc/sudoers
. 스크립트 에서는 bin/*.sh
명령에서 sudo를 생략하고 루트에 권한을 부여하는 것을 고려하고 있지만 git이 소유권을 저장하지 않기 때문에 문제가 될 수 있습니다. (거의) 모든 개별 명령에는 sudo가 필요하므로 루트에 스크립트를 할당하는 것이 더 안전하다는 점을 제외하면 기술적으로는 동일하다고 생각합니다. Git이 문제를 일으킬 것 같아요.
한 가지 생각: NOPASSWD를 사용하여 모든 명령을 승인하고 /etc/sudoers
루트 비밀번호를 요청하면 뭔가 잘못된 냄새가 날 것입니다.
추가 정보:
- 이는 여러 로컬 단일 사용자 컴퓨터에서 작동합니다.
- 내 데스크톱 컴퓨터에 대한 무단 액세스는 문제가 되지 않으므로 자동 로그인을 설정했습니다.
- 내 노트북에서 세션을 시작하려면 비밀번호가 필요합니다.
지금쯤 질문이 명확하지 않다면 어떻게 하면 이러한 스크립트/명령을 안전한 방법으로 배열할 수 있습니까? 권한 상승을 위해 루트를 사용하는 것이 악성 프로그램보다 내 사용자 데이터에 더 해롭습니까? 어쩌면 내가 너무 많은 생각을 하고 있는 건 아닐까?
답변1
쓰기 가능한 스크립트는 사용자가 보지 않을 때 사악한 것으로 대체될 수 있으며 루트가 이를 실행하면 게임이 끝납니다.
실제로 귀하가 기계의 유일한 사용자라면 위험은 낮습니다. 그러나 일반적으로 일반 사용자의 계정을 해킹하는 것이 더 쉽습니다(맬웨어가 포함된 이메일 읽기, 악성 웹사이트에 연결, 무작위 소스를 무작위로 컴파일하고 실행하여 "무엇을 하는지 확인" 등...). 그러면 루트 권한으로 업그레이드할 수 있습니다.
답변2
내가 알고 있는 모든 옵션( /usr/local/bin
, 소유자 루트, 쓰기 권한 제거)을 고려하여 각 버전 파일에 불변 플래그를 사용했습니다.
sudo chattr +i filename
소유자는 물론 루트가 아닌 사용자도 이 플래그를 재설정할 수 있습니다. 파일이나 상위 디렉터리도 삭제하거나 교체할 수 없습니다.
파일을 편집하기 위해 다음 기능을 추가했습니다 .bashrc
.
editrc () {
sudo chattr -i $1
nano $1
sudo chattr +i $1
}
다른 컴퓨터에서는 도트 파일을 추출해야 했고, 이를 위해서는 플래그를 제거한 다음 git pull
다시 적용해야 했습니다. 플래그를 매개변수로 사용하는 도우미 함수를 만들었습니다.
protect-config () {
FLAG=$1
FILES=$(git ls-files | xargs -I @ -- find @ -type f | xargs echo)
lsattr $FILES
if [ "$FLAG" ]; then
sudo chattr $FLAG $FILES
fi
}
그렇긴 하지만, 나는 그것을 지나치게 생각하고 있다. 하지만 이제는 제자리에 있습니다. 주로 좋은 습관에서 벗어났습니다.
편집: 추가된 보안보다 더 불편하기 때문에 더 이상 사용하지 않습니다.