사용자가 그룹을 통해 파일에 대한 읽기 액세스 권한만 갖고 있는 경우에도 그룹의 사용자는 파일을 삭제할 수 있습니다.

사용자가 그룹을 통해 파일에 대한 읽기 액세스 권한만 갖고 있는 경우에도 그룹의 사용자는 파일을 삭제할 수 있습니다.

다음 권한을 가진 디렉터리가 있습니다.

drwxrwsr-x 3 john ro 20K Jun 20 14:48 logs

나는 john으로 로그인하고 로그에서 새 파일을 터치했습니다.

-rw-r--r-- 1 john ro 0 Jun 20 14:48 d

제가 이해한 바에 따르면 이 경우에는 John만이 파일 d를 삭제할 수 있어야 합니다. ro 그룹이 있는 다른 사용자는 그룹 읽기 권한만 갖고 있으므로 파일을 삭제할 수 없습니다. 그런데 그룹 ro의 다른 계정을 사용하여 삭제하려고 하면 파일이 삭제됩니다!

mathew@ip-10-0-0-148:/mnt/custom/ops/logs$ ls -lrth d
-rw-r--r-- 1 john ro 0 Jun 20 14:48 d
mathew@ip-10-0-0-148:/mnt/custom/ops/logs$ rm d
rm: remove write-protected regular empty file 'd'? yes
mathew@ip-10-0-0-148:/mnt/custom/ops/logs$ ls -lrth d
ls: cannot access 'd': No such file or directory

이거 이상해 보여요! 그룹 구성원이 파일을 읽을 수는 있지만 삭제할 수는 없도록 하고 싶습니다. 내가 무엇을 놓치고 있나요?

답변1

파일을 삭제하는 것이 아니라 디렉터리에서 해당 항목을 삭제하는 것입니다. 이 작업을 수행하려면 디렉터리 쓰기 권한이 필요합니다. (이 권한은 귀하의 예에 존재합니다).

끈끈한 부분을보고 싶을 수도 있습니다. 이를 디렉토리에 적용하십시오 chmod +t …/logs/d. 이렇게 하면 소유자(및 CAP_DAC_OVERRIDE권한이 있는 사용자 root)만 디렉터리에서 파일을 삭제할 수 있습니다.

파일에 디렉토리 항목이 없고 어떤 프로세스에서도 더 이상 열리지 않으면 삭제됩니다.

답변2

ro그룹은 디렉터리에 대한 모든 권한을 가집니다. 즉, 해당 구성원은 소유 여부 및 파일 권한에 관계없이 그 안에 있는 파일이나 디렉터리를 삭제하거나 수정할 수 있습니다.

그룹 구성원만 해당 파일을 읽을 수 있도록 하려면 그룹을 변경 john하거나 그룹의 쓰기 권한을 제거하십시오. 이 디렉토리가 포함된 디렉토리에서 작업 중 하나를 수행합니다 logs.

chown :john logs

chmod 755 logs

쓰기 권한을 제거하려면 두 번째 명령을 사용하는 것이 좋습니다.

관련 정보