루트가 아닌 사람은 폴더를 삭제할 수 없지만 쓰기는 가능해야 합니다.

루트가 아닌 사람은 폴더를 삭제할 수 없지만 쓰기는 가능해야 합니다.

내 Ubuntu 시스템의 ext4 파일 시스템에는 루트가 아닌 사용자로서 일반 작업 중에 실수로 삭제하고 싶지 않은 일부 폴더가 있습니다. 폴더 내의 폴더/파일을 이동, 생성 또는 삭제할 수 있어야 합니다.

(물론 루트는 원하는 것은 무엇이든 할 수 있어야 하므로 이는 루트가 아닌 사용자에게만 적용됩니다)

이 작업을 수행해야 하는 경우 루트로 수행할 수 있습니다.

답변1

일반 사용자에게 삭제하지 않으려는 디렉터리의 상위 디렉터리에 대한 쓰기 액세스 권한이 없는지, 그리고 사용자에게 디렉터리 자체에 대한 쓰기 액세스 권한이 있는지 확인하면 됩니다. 이와 같이:

$ tree -pu
.
└── [drwxr-xr-x root    ]  testDir
    └── [drwxrwxrwx user    ]  subDir

위에서 볼 수 있듯이 디렉터리 testDir는 해당 디렉터리에 속하며 쓰기 권한 root만 갖습니다. root디렉토리 testDir/subDir는 내 사용자의 것이며 모든 사람이 디렉토리에 대한 전체 액세스 권한을 갖습니다. 즉, 여기에서 자유롭게 파일을 생성하고 삭제할 수 있습니다.

$ touch testDir/subDir/file
$ echo "hello World" > testDir/subDir/file2
$ ls -l testDir/subDir/
total 4
-rw-r--r-- 1 terdon terdon  0 May  1 17:56 file
-rw-r--r-- 1 terdon terdon 12 May  1 17:57 file2
$ rm testDir/subDir/file
$ ls -l testDir/subDir/
total 4
-rw-r--r-- 1 terdon terdon 12 May  1 17:57 file2

그러나 디렉터리 자체를 삭제할 수는 없습니다.

$ rm -r testDir/subDir
rm: cannot remove 'testDir/subDir': Permission denied

비어 있어도 작동하지 않습니다.

$ rm testDir/subDir/*
$ rmdir testDir/subDir/
rmdir: failed to remove 'testDir/subDir/': Permission denied

답변2

디렉터리를 추가 전용으로 표시할 수 있습니다. chattr +a <dir>즉, 해당 디렉터리에 새 파일을 만들 수는 있지만 삭제할 수는 없습니다.

관련 정보