폴더 삭제 및 폴더 이름 변경을 방지하는 방법입니다. 하지만 여전히 파일을 추가할 수 있나요?

폴더 삭제 및 폴더 이름 변경을 방지하는 방법입니다. 하지만 여전히 파일을 추가할 수 있나요?

우분투 VPS를 사용하여 온라인으로 사람들과 공유 디스크를 만들고 싶습니다. 그래서 제목처럼 폴더를 삭제할 수 없고 폴더 이름을 수정할 수 없도록 만들고 싶습니다. 그러나 여전히 파일을 추가할 수 있습니다(파일을 추가할 수만 있고 파일을 수정하거나 파일 초기화를 삭제할 수 없다면 더 좋을 것입니다).

나는 chmod 및 chattr 방법을 시도했지만 둘 다 내 요구 사항에 100% 적합한 것 같지 않습니다.

제 영어 실력이 부족하여 불편을 끼쳐 드린 점 죄송합니다.

답변1

/tmp/some/path예를 들어 보겠습니다 . 루트 /tmp/some로 생성 하고 모든 사람이 쓸 수 있도록 /tmp/some/path권한을 변경합니다 ./tmp/some/path

merlin@uc-s4m75657:~$ sudo mkdir -p /tmp/some/path
merlin@uc-s4m75657:~$ sudo chmod 0777 /tmp/some/path
merlin@uc-s4m75657:~$ ls -l /tmp/some/
итого 4
drwxrwxrwx 2 root root 4096 июл 28 11:17 path
merlin@uc-s4m75657:~$ ls -l /tmp/some/path/
итого 0
merlin@uc-s4m75657:~$ rm -rf /tmp/some/path
rm: невозможно удалить '/tmp/some/path': Отказано в доступе

(내 로케일은 러시아어입니다. "итого"는 "전체"를 의미하고 "Отказано в доступе"는 "액세스 거부"를 의미합니다)

그게 다야. 점검 해보자. 모든 것이 루트의 소유이므로 일반 사용자는 아무것도 할 수 없습니다 /tmp/some.이름 바꾸기 또는 삭제 포함/tmp/some/pathpath, 디렉토리 항목 이므로 /tmp/some이 사용자는 읽기 및 목록 이외의 액세스 권한이 없습니다.

그러나 사용자는 /tmp/some/path권한을 부여받았으므로 아래 프로젝트를 생성할 수 있습니다.

merlin@uc-s4m75657:~$ mkdir /tmp/some/path/1
merlin@uc-s4m75657:~$ touch /tmp/some/path/2
merlin@uc-s4m75657:~$ ls -la /tmp/some/path
итого 12
drwxrwxrwx 3 root   root   4096 июл 28 11:18 .
drwxr-xr-x 3 root   root   4096 июл 28 11:17 ..
drwxr-xr-x 2 merlin merlin 4096 июл 28 11:18 1
-rw-r--r-- 1 merlin merlin    0 июл 28 11:18 2
merlin@uc-s4m75657:~$ mv /tmp/some/path/1 /tmp/some/path/3
merlin@uc-s4m75657:~$ ls -la /tmp/some/path
итого 12
drwxrwxrwx 3 root   root   4096 июл 28 11:19 .
drwxr-xr-x 3 root   root   4096 июл 28 11:17 ..
-rw-r--r-- 1 merlin merlin    0 июл 28 11:18 2
drwxr-xr-x 2 merlin merlin 4096 июл 28 11:18 3

안타깝게도 Linux 파일 시스템의 개체에 대해 서로 다른 만들기, 이름 바꾸기 및 삭제 권한을 실제로 설정할 수는 없습니다. 실제로 이는 POSIX ACL을 사용하려고 하는 경우에도 모든 POSIX 호환 파일 시스템의 속성입니다. 개체를 생성한 사용자는 해당 소유자가 되며 /tmp/some/path디렉터리에 쓸 수 있는 권한이 있는 경우 모든 작업을 수행할 수 있습니다. 기존 Unix 모드 및 POSIX ACL에서는 생성, 삭제 및 이름 바꾸기가 단일 플래그로 제어됩니다.

따라서 Linux에서는 프로젝트 생성을 허용하지만 후속 삭제를 방지하는 것은 불가능합니다. 이는 POSIX 표준이 완전히 형편없는 몇 안 되는 곳 중 하나이며 Windows에는 보다 일반적인 권한 시스템이 있습니다.

답변2

이것어려운Linux의 권한은 귀하를 위한 솔루션입니다. 이렇게 하면 폴더 내용(파일, 하위 폴더)이 폴더에 고정되고 해당 소유자 또는 루트 디렉터리만 삭제하거나 이름을 바꿀 수 있습니다.

폴더에 적용하는 방법은 다음과 같습니다./tmp/some/path

$ chmod +t /tmp/some/path

이렇게 하면 다른 rwx 권한이 증가합니다.

관련 정보