해당 디렉터리의 파일에 데이터를 추가할 수 있지만 파일을 삭제할 수는 없도록 디렉터리에 어떤 권한을 설정해야 합니까?

해당 디렉터리의 파일에 데이터를 추가할 수 있지만 파일을 삭제할 수는 없도록 디렉터리에 어떤 권한을 설정해야 합니까?

"해당 디렉터리의 파일에 데이터를 추가할 수 있지만 파일을 삭제할 수는 없도록 하려면 해당 디렉터리에 어떤 권한을 설정해야 합니까?"

내 이해에 따르면 파일에 데이터를 추가하려면 "w" 쓰기 권한이 필요하지만 이를 통해 파일을 삭제할 수도 있지만 문제는 파일에 데이터를 추가하지만 삭제하지 않기 위해 설정해야 하는 권한이 필요하다는 것입니다.

답변1

파일에 데이터를 추가하려면 파일 자체에 대한 쓰기 권한이 필요합니다. 파일을 삭제하려면 파일이 포함된 디렉터리에 대한 쓰기 권한이 필요합니다.

예를 들어, testdir이라는 디렉터리가 있고 해당 디렉터리에 대한 쓰기 권한을 제거했습니다.

[haxiel@testvm1 ~]$ ls -ld testdir/
dr-xr-xr-x. 2 haxiel haxiel 26 Nov 23 10:09 testdir/

해당 디렉터리에 testfile.txt라는 파일을 만들었습니다(이 작업은 디렉터리에 대한 쓰기 권한을 제거하기 전에 수행되었습니다).

[haxiel@testvm1 testdir]$ ls -l testfile.txt
-rw-rw-r--. 1 haxiel haxiel 12 Nov 23 10:11 testfile.txt

이제 쓰기 권한이 있으므로 파일에 데이터를 추가할 수 있습니다.

[haxiel@testvm1 testdir]$ echo "Line1" >> testfile.txt
[haxiel@testvm1 testdir]$ echo "Line2" >> testfile.txt
[haxiel@testvm1 testdir]$ cat testfile.txt
Line1
Line2

하지만 상위 디렉터리에 대한 쓰기 권한이 없기 때문에 파일을 삭제할 수 없습니다.

[haxiel@testvm1 testdir]$ rm testfile.txt
rm: cannot remove ‘testfile.txt’: Permission denied

디렉터리 권한에 대한 자세한 내용은 이 질문을 확인하세요.비트를 실행하고 읽습니다. Linux에서 디렉토리 권한은 어떻게 작동합니까?

답변2

디렉토리는 파일 권한과 아무 관련이 없습니다. 파일에 쓰기가 가능한 경우 삭제도 가능합니다. 다음과 같이 ACL을 시도해 볼 수 있습니다.파일에 대한 읽기 및 쓰기 권한을 부여하지만 삭제하지는 않는 방법, 그러나 이는 구현하기 쉽습니다.

파일 권한에 대한 설명은 다음과 같습니다.

(rwx------)  This area is for owner.
(---rwx---)  This area is for group owner.
(------rwx)  This area is for others.
(-rwx------) The preceding - indicates a directory.

       Value       | Meaning
                   |
==========================================================================================================================================================================================================
                   |
777    (rwxrwxrwx) | No restrictions on permissions. Anybody may do anything. Generally not a desirable setting.

755    (rwxr-xr-x) | The file's owner may read, write, and execute the file. All others may read and execute the file. This setting is common for programs that are used by all users.

700    (rwx------) | The file's owner may read, write, and execute the file. Nobody else has any rights. This setting is useful for programs that only the owner may use and must be kept private from others.

666    (rw-rw-rw-) | All users may read and write the file.

644    (rw-r--r--) | The owner may read and write a file, while all others may only read the file. A common setting for data files that everybody may read, but only the owner may change.

600    (rw-------) | The owner may read and write a file. All others have no rights. A common setting for data files that the owner wants to keep private.

관련 정보