리눅스 파일 권한을 사용하여“이름”예약 시스템을 구현할 수 있습니까?


10

/ 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 기술은 녹슨되었다 ...


나는이 법에서 벗어난 것을 본 것이 없습니다. "coolsite"를 "700"(그룹 및 다른 사람에 대한 권한 없음)으로 작성하고 자신의 사용자 + 관리자 만 무언가를 수행 할 수 있습니다. 다른 모든 사람들은 허가가 거부됩니다.
Rinzwind

따라서 수동으로 사용자에게 chmod 700 후에 touch?
미국 닌자 전사

1
joshsverns 당신이 그렇게 할 수 있다고 생각합니까? (와 umask). 오 좋은 하나 @ perlduck
Rinzwind

루비로 프로그래밍 할 수없는 이유는 무엇입니까?
파이프

답변:


31

디렉토리를 요청 /reservations하는 것은 표준 /tmp디렉토리의 작동 방식입니다.

모든 사용자는 거기에 파일을 만들 수 있으며 파일 만 삭제하거나 수정할 수 있습니다. 이것은 권한 의 t비트 (일명 sticky bit )에 의해 달성됩니다 . 특별한 권한이나 umask가 필요한 사용자는 없습니다.

그러므로:

chown root /reservations
chmod 1777 /reservations

당신이 필요한 전부입니다. 이는 chown root다른 (일반) 사용자가 해당 디렉토리를 다루지 못하도록하기위한 것입니다. 실제로 필요 하지 않습니다 . 스티커 비트에 대한 자세한 내용은 여기를 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.