답변1
어려운 질문인 것 같습니다. 여러 시스템에서는 fchmodat(2)
플래그가 포함된 시스템 호출을 사용하거나 시스템 호출 및 옵션이 포함된 명령을 AT_SYMLINK_NOFOLLOW
사용하여 심볼릭 링크의 권한을 변경할 수 있지만 Ubuntu와 같은 Linux 기반 운영 체제에서는 변경할 수 없습니다.lchmod(2)
chmod
-h
이러한 권한 변경을 허용하는 많은 시스템에서는 어쨌든 무시됩니다(macos는 IIRC 예외임). 따라서 권한을 변경할 필요가 거의 없습니다. 어쨌든 w
심볼릭 링크는 수정할 수 없기 때문에 시스템 권한이 중요하지 않을 것으로 예상합니다. 심볼릭 링크의 대상을 변경하려면 상위 디렉토리에 대한 쓰기+ 검색 권한이 필요한 새 대상으로 심볼릭 링크를 다시 만들어야 합니다1.
여기서 다음과 같이 속이고 재정의할 수 있습니다 ls
.
ls() (
set -o pipefail
command ls "$@" | sed 's/^lrwxrwxrwx/lrwxr-xr-x/'
)
ls
( stdout은 파이프이므로 대부분의 ls
구현이 터미널 장치에 도달할 때 다른(보다 인간 친화적인) 출력을 제공하는 경우 가 많기 때문에 형식에 영향을 미칠 수 있다는 점을 명심하십시오 .)
¹ 다음과 같은 경우입니다.소유권t
(삭제 제한) 비트가 디렉토리에 설정되어 있고 해당 디렉토리를 소유하지 않은 경우 해당 디렉토리를 소유하지 않은 경우 심볼릭 링크를 삭제할 수 있으므로 심볼릭 링크가 중요할 수 있습니다 .