심볼릭 링크에 대한 권한 변경(학교 연습) [중복]

심볼릭 링크에 대한 권한 변경(학교 연습) [중복]

우리 학교에서는 ls -l 출력이 다음과 같도록 파일과 디렉터리를 생성하도록 요구합니다(XX에 관계없이).

여기에 이미지 설명을 입력하세요.

마지막에 있는 심볼릭 링크를 제외하고 모든 작업을 올바르게 수행했습니다. 항상 777이어야 하는 심볼릭 링크의 권한을 변경할 수는 없을 것 같지만, 보시다시피 우리 학교에서는 명시적으로 755로 구성을 요구합니다.

"chmod go -w test6"이 확실히 작동하지 않는데 어떻게 해야 합니까?

내 운영 체제는 Ubuntu 20.04입니다.

답변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(삭제 제한) 비트가 디렉토리에 설정되어 있고 해당 디렉토리를 소유하지 않은 경우 해당 디렉토리를 소유하지 않은 경우 심볼릭 링크를 삭제할 수 있으므로 심볼릭 링크가 중요할 수 있습니다 .

관련 정보