~/.foo_rc
대화형 모드가 있는 프로그래밍 언어를 구현하고 있고 대화형 모드가 사용자의 홈 디렉터리에 있는 일부 파일을 읽는다고 가정해 보겠습니다 . 이 파일에는 특정 기본 설정을 사용자 정의하는 데 사용할 수 있는 언어 코드가 포함되어 있습니다. 이 파일을 읽을 때 언어는 샌드박스 처리되지 않습니다. 파일은 "무엇이든" 할 수 있습니다.
파일에 대한 권한 확인을 수행해야 합니까? 좋다:
$ foo -i
Not reading ~/.foo_rc because it is world-writable, you goof!
P.S. you don't even own it; someone else put it there.
> _
나는 Bash 소스 코드를 보고 있는데 권한 확인에 신경 쓰지 않습니다 ~/.bash_profile
(그것이 존재하고 읽을 수 있다는 것 외에는 무엇이든 하기 위한 전제 조건입니다).
[고쳐 쓰다]
thrig의 답변을 고려한 후 다음과 같이 파일을 검사했습니다.
파일이 호출자의 유효한 사용자 ID에 속하지 않는 경우 해당 파일은 안전하지 않습니다.
다른 사람이 파일에 쓸 수 있으면 안전하지 않습니다.
파일이 속한 그룹에 의해 쓰기 가능한 경우 해당 그룹에 호출자 이외의 사용자가 포함되어 있으면 파일은 안전하지 않습니다. (즉, 그룹은 비어 있거나 발신자가 유일한 구성원이어야 합니다).
그렇지 않으면 안전한 것으로 간주됩니다.
그룹 검사는 숫자로 된 사용자 ID와 그룹 ID 또는 해당 이름 사이의 일치를 가정하지 않으며 검사를 기반으로 합니다.이름사용자가 유일한 구성원으로 나열됩니다.
(이 검사를 수행하는 함수에 대한 문서에 검사 시간과 사용 시간 경쟁 조건이 적용됨을 나타내는 메모가 추가되었습니다. 검사가 적용된 후 무고한 수퍼유저는 추가 구성원으로 그룹을 확장할 수 있습니다. 악의적일 가능성이 있으므로 파일을 수정할 때 파일에 액세스하세요).
답변1
어떤 파일이 실패했는지, 왜 실패했는지에 대한 명확한 경고가 있으면 합리적이고 신중하게 행동하여 사용자가 권한 문제를 해결할 수 있도록 하세요. bash
아마도 더 믿음직하고 장난스러운 날이었을 것입니다. 사이트에 각 사용자가 해당 사용자가 속한 그룹에만 들어가도록 하는 정책이 있는 경우 사용자의 파일은 합법적으로 그룹 쓰기가 가능하지만 그렇지 않으면 그렇지 않습니다.
(오류를 잡기 위해 상위 디렉토리를 확인하는 것이 현명할 수도 있습니다 chmod 777 $HOME
.)