파일이 소유자(400)만 읽을 수 있는 경우 읽기 및 쓰기 권한이 있는 파일보다 더 안전합니까?
기껏해야 실제 보안을 추가하는 대신 자신의 파일에 어리석은 실수를 저지르는 것을 방지하는 데 도움이 되지 않을까요? 파일을 소유한 경우 해당 권한을 변경할 수 있습니다. 따라서 누군가 악의적으로 사용자에 대한 액세스 권한을 얻는 경우 해당 사용자가 소유한 파일을 400으로 설정하면 공격자가 해당 파일에 대한 권한을 변경하고 해당 파일에 쓰는 것을 방지할 수 있지 않습니까?
쓸 수 없는 파일을 가짐으로써 보안을 얻을 수 있습니까?
답변1
위협 모델이 바이너리인 경우(사용자 계정이 손상되지 않았거나 완전히 손상됨(임의 명령 실행))에는 아무런 차이가 없습니다. 알다시피 공격자는 chmod u+w
이 파일에만 접근할 수 있습니다.
그러나 어느 정도 타협은 가능합니다. 예를 들어 공격자가 "모든 파일에 쓰기" 권한만 얻은 경우 0400 파일에 쓸 수 없습니다. 그러나 대부분의 경우 이것의 이점은 의심스럽습니다. "모든 파일 쓰기"는 ~/.bashrc
상당히 쉽게 임의의 명령(예: write )으로 승격될 수 있습니다.
또한 상위 디렉터리에 대한 쓰기 권한이 있는 모드 0400 파일을 삭제(링크 해제)할 수도 있습니다. 이는 공격자가 기존 파일을 삭제하고 동일한 이름의 새 파일을 배치할 수 있음을 의미합니다.
마음속에 떠오르는 "안전한" 용도 중 하나는 FTP 등의 보관용 계정입니다. 모드 0400을 사용하면 readme 파일을 넣을 수 있습니다. Dropbox 상위 디렉터리가 로 설정되어 있으면 a+rwxt
모든 사람이 여기에 새 파일을 추가할 수 있으며 이로 인해 +t
자신이 소유한 파일만 삭제할 수 있습니다. 따라서 귀하의 Readme는 보호됩니다.
그래서 전체적으로는 안전 기능이라기보다는 사고 예방 기능이라고 생각합니다.
답변2
어리석은 실수는 데이터를 파괴할 수 있습니다. 어리석은 실수를 방지하면 데이터를 절약할 수 있습니다. 실제로 보관하려는 파일에 대한 쓰기 권한을 설정하지 않는 것은 다음과 같습니다.아니요자동으로 -f
on 을 사용하는데 rm
, rm
실수로 시도하면 불평할 것입니다 rm -r /
.아니요root
셸을 계속 실행하세요. 자신이 하고 있는 일을 알고 있다면 그 중 어느 것도 필요하지 않지만 어떤 상황에서는 모두 유용할 수 있습니다.
그러나 보안 위반은 작은 것에서부터 시작됩니다. 사용자 입력은 액세스할 파일 이름을 결정하는 데 사용될 수 있으며, 처리되지 않은 채로 두면 프로그램이 최종 사용자가 액세스할 수 없는 콘텐츠에 액세스하도록 속일 수 있습니다. (클래식한 것 같아요 ../../../passwd
.)
쓰기 권한 없이 중요한 파일을 저장한 경우 파일 이름만 알아도 파일 쓰기가 허용되지 않습니다. 그러나 이것이 얼마나 중요한지는 그들이 다시 작성할 수 있는 다른 파일이 무엇인지에 따라 다릅니다. (실제로는 삭제되지 않은 입력의 사용을 수정하는 것이 더 나을 것입니다.)
답변3
간단히 말해서, 노력할 가치가 있는 것을 아무것도 얻지 못하고 있습니다. 올바르게 언급했듯이 파일을 읽는 사람은 누구나 해당 권한을 변경할 수 있습니다.
고려해야 할 보안과 유용성 사이에는 항상 균형이 있으며, 이 경우 이 솔루션을 유지 관리하려는 노력에 비해 이점을 측정하는 것은 말할 것도 없고 이점을 확인하는 것조차 어려울 것입니다.