답변1
대부분의 Unix 계열 시스템(Apple OS/X는 몇 가지 예외 중 하나)과 마찬가지로 Linux는 대상을 확인할 때 심볼릭 링크의 권한을 무시합니다.
그러나 다른 파일과 마찬가지로 심볼릭 링크의 소유권은 비트가 설정된 디렉터리와 동일합니다( t
예: /tmp
.
파일을 삭제하거나 이름을 바꾸려면(심볼릭 링크 유무에 관계없이) /tmp
파일의 소유자여야 합니다. 이것이 심볼릭 링크의 소유권을 변경하려는 이유 중 하나입니다(링크를 해제하거나 이름을 바꿀 수 있는 권한을 부여하거나 제거하기 위해).
$ ln -s / /tmp/x
$ rm /tmp/x
# OK removed
$ ln -s / /tmp/x
$ sudo chown -h nobody /tmp/x
$ rm /tmp/x
rm: cannot remove ‘/tmp/x’: Operation not permitted
또한 Mark Plotnick이 그의 책에서 언급했듯이답변은 현재 삭제되었습니다lchown()
, 백업 및 보관 애플리케이션은 원래 소유자에 대한 기호 링크를 복원 해야 합니다 . 또 다른 옵션은 심볼릭 링크를 생성하기 전에 euid와 egid를 전환하는 것입니다. 그러나 이 방법은 작동하지 않으며 심볼릭 링크가 추출되는 디렉터리의 권한 관리를 복잡하게 만듭니다.
답변2
posix에는 lchmod()가 없지만 기호 링크에 대한 권한 설정을 허용하는 fchmodat()가 있습니다. 여전히 평가할 심볼릭 링크의 권한이 필요하지 않습니다.