나는 최근에 init 스크립트를 생성하고 외부 간섭을 방지하기 위해 잠금 파일을 불변으로 만들기로 결정했습니다. 내가 생각할 수 있는 유일한 단점은 누군가 /var/lock을 반복적으로 삭제하려는 경우 문제가 발생할 수 있다는 것입니다. 스크립트를 통해 프로세스가 중지되면 init 스크립트는 파일을 삭제하기 전에 변경할 수 없는 플래그를 제거합니다.
이것이 나쁜 생각인가요? 왜 더 자주 볼 수 없나요? 이건 너무한 걸까요? 누군가 초기화 스크립트 없이 프로세스를 중지하면 다음에 인수를 사용하여 스크립트를 호출할 때 잠금 파일이 삭제됩니다.
답변1
적어도 내 시스템에서는 /var/lock
(또는 실제로 /run/lock
전자가 후자에 대한 심볼릭 링크임) 고정 비트가 설정되어 있습니다. 즉, 잠긴 파일이나 디렉터리의 소유자만 삭제할 수 있으며 디렉터리에 쓰는 사람은 누구나 삭제할 수 없습니다(동일한 방식 /tmp
). 다른 배포판에서는 이 디렉토리에 소수의 사용자만 쓸 수 있습니다(따라서 임의의 사용자는 전혀 간섭할 수 없습니다).
따라서 데몬에 의해 잠긴 파일을 파기(삭제)할 수 있는 유일한 사용자는 다음과 같습니다.
root
(물론 루트는 무엇이든 할 수 있습니다)- 잠긴 파일을 생성한 사용자(다시 말하지만
root
시도하지 않으면 데몬 전용 사용자일 수도 있음chattr
) root
내 시스템의 잠긴 디렉토리 소유자
또는 다르게 설정된 경우 lock
일반적으로 시스템 데몬의 사용자인 "(또는 임의) 그룹의 구성원"을 추가할 수 있습니다.
잠긴 파일을 읽고 쓸 수 있는 사용자는 평소와 같이 잠긴 파일의 권한으로 제어되며, 쓰기는 루트 및 데몬 사용자로 제한될 것으로 예상됩니다.
root
"외부 간섭"이 발생 하면 rm
잠긴 파일을 사용하는 경우보다 훨씬 더 큰 문제가 발생합니다. 따라서 이 작업을 수행해서는 안 됩니다. 이는 보호 기능을 추가하지 않으며 특정 문제를 해결하려고 할 때 시스템 관리자에게 놀라움을 줄 수 있습니다.
불변 플래그는 일반적으로 시스템 관리자만 적용합니다.