리눅스 파일 권한을 사용하여“이름”예약 시스템을 구현할 수 있습니까? “예약”/ “예약”하도록 허용하고 싶습니다 (이 경우 하위

/ etc / passwd에 100 명 이상의 사용자가있는 Linux 다중 사용자 서버가 있습니다.

사용자가 원하는 이름을 “예약”/ “예약”하도록 허용하고 싶습니다 (이 경우 하위 도메인이지만 세부 사항은 중요하지 않음).

/reservationschmod 777 이라는 디렉토리를 만들었습니다 .

johndoe 사용자가 touch /reservations/coolsite“coolsite”라는 이름을 “소유”하고 싶다고 표시합니다.

“메커니즘”은 다음과 같이 설정되어야합니다.

  • johndoe는 나중에 마음이 바뀌어 rm /reservations/coolsite그 이름을 예약 해제 할 수 있습니다

  • touch /reservations/coolsitejohndoe가 먼저 요청했기 때문에 다른 사용자는을 (를) 허용하지 않습니다 .

  • 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다른 (일반) 사용자가 해당 디렉토리를 다루지 못하도록하기위한 것입니다. 실제로 필요 하지 않습니다 . 스티커 비트에 대한 자세한 내용은 여기를 참조하십시오.