/ etc / passwd에 100 명 이상의 사용자가있는 Linux 다중 사용자 서버가 있습니다.
사용자가 원하는 이름을 “예약”/ “예약”하도록 허용하고 싶습니다 (이 경우 하위 도메인이지만 세부 사항은 중요하지 않음).
/reservations
chmod 777 이라는 디렉토리를 만들었습니다 .
johndoe 사용자가 touch /reservations/coolsite
“coolsite”라는 이름을 “소유”하고 싶다고 표시합니다.
“메커니즘”은 다음과 같이 설정되어야합니다.
-
johndoe는 나중에 마음이 바뀌어
rm /reservations/coolsite
그 이름을 예약 해제 할 수 있습니다 -
touch /reservations/coolsite
johndoe가 먼저 요청했기 때문에 다른 사용자는을 (를) 허용하지 않습니다 . -
johndoe가
rm
자신의 파일 인 경우 다른 사용자가 파일을 예약 할 수 있습니다. -
사용자는
rm / rename / mv / etc
다른 사람 파일을 할 수 없습니다 -
사용자 johndoe는 다음을 수행하여 여러 예약을 할 수 있습니다
touch /reservations/coolsite && touch /reservations/coolsite2
일종의 표준 리눅스 권한 메커니즘을 사용하여 가능합니까?
나는 이것을 위해 perl에 의지하는 것을 싫어한다. 루비가 물결 모양의 금발 머리와 함께 왔을 때부터 내 perl 기술은 녹슨되었다 …
답변
디렉토리를 요청 /reservations
하는 것은 표준 /tmp
디렉토리의 작동 방식입니다.
모든 사용자는 거기에 파일을 만들 수 있으며 파일 만 삭제하거나 수정할 수 있습니다. 이것은 권한 의 t
비트 (일명 sticky bit )에 의해 달성됩니다 . 특별한 권한이나 umask가 필요한 사용자는 없습니다.
그러므로:
chown root /reservations
chmod 1777 /reservations
당신이 필요한 전부입니다. 이는 chown root
다른 (일반) 사용자가 해당 디렉토리를 다루지 못하도록하기위한 것입니다. 실제로 필요 하지 않습니다 . 스티커 비트에 대한 자세한 내용은 여기를 참조하십시오.