심볼릭 링크에 대한 권한 변경

심볼릭 링크에 대한 권한 변경

다음 권한을 가진 심볼릭 링크가 있습니다.

lrwxrwxrwx 1 myuser myuser       38 Aug 18 00:36 npm -> ../lib/node_modules/npm/bin/npm-cli.js*

심볼릭 링크는 .tar.gz 아카이브에 있습니다. 이제 maven을 사용하여 tar.gz 아카이브의 압축을 풀면 심볼릭 링크가 더 이상 작동하지 않습니다. 그래서 심볼릭 링크를 다시 작성하려고합니다. 먼저 다음을 사용하여 심볼릭 링크를 만듭니다.왜냐하면하지만 원래 심볼릭 링크와 동일한 권한을 설정하는 방법은 무엇입니까?

답변1

새 심볼릭 링크를 생성하여 이전 링크 위치로 이동할 수 있습니다.

ln -s <new_location> npm2
mv -f npm2 npm

이렇게 하면 링크 소유권이 유지됩니다. 또는 chown링크의 소유권을 수동으로 설정할 수 있습니다.

chown -h myuser:myuser npm

대부분의 시스템에서 심볼릭 링크 권한은 중요하지 않습니다. 심볼릭 링크를 사용할 때 심볼릭 링크의 대상 구성 요소에 대한 권한이 확인됩니다. 그러나 일부 시스템에서는 중요합니다. MacOS는 링크에 대한 읽기 권한이 필요한 readlink반면, NetBSD의 symperm마운트 옵션은 읽기와 탐색 모두에 대해 링크 권한을 강제로 확인합니다. 이러한 시스템 (및 FreeBSD 및 OpenBSD를 포함한 관련 시스템)에는 -h.chmod

chmod -h 777 npm

답변2

링크에 대해 권한 설정을 사용하려고 하면 chmod실제로 수행하는 작업은 링크 대상에 대한 권한을 설정하는 것입니다. 연결된 권한은 의미가 없습니다.

답변3

다음과 같은 링크가 있는 경우:

link -> foo/bar

다음과 같이 변경하고 싶습니다.

link -> new/target

고려해야 할 두 가지 상황이 있습니다.

  1. foo/bar디렉토리가 없거나 존재하지 않거나 검색 권한이 없습니다 foo. 그 다음에

    ln -s new/target link
    

    이미 존재 하기 때문에 실패 link하지만 표준을 사용하여 이 문제를 극복할 수 있습니다.

    ln -fs new/target link
    
  2. foo/bar은(는) 디렉터리입니다(귀하에게는 foo이것이 foo/bar디렉터리인지 확인하는 검색 권한이 있습니다). 이 경우 다음을 수행하면 됩니다.

    ln -s new/target link
    

    또는

    ln -fs new/target link
    

    이는 디렉토리 ( 디렉토리에 대한 기호 링크이므로 디렉토리임 ) target내에 새 기호 링크를 생성하는 것으로 생각할 수 있습니다 . 따라서 실제로 다음을 생성하게 됩니다.linklinkfoo/bar

    foo/bar/target -> new/target
    

    이 문제를 극복하기 위해 GNU에는 링크가 생성된 디렉터리가 아닌 링크 이름을 항상 링크 이름으로 처리하도록 하는 옵션이 ln있습니다 . -T따라서 GNU의 경우 ln:

    ln -fsT new/target link
    

    작동합니다. 이전과 마찬가지로 원래 link심볼릭 링크를 삭제하고 new/target대상으로 다시 생성합니다(프로세스의 euid 및 egid를 소유자로 사용).

    GNU 에는 옵션 ln도 있습니다 -n. 실제로 실제 디렉터리 -T인 경우를 제외하고 는 다르게 작동합니다 link. 이 경우 오류로 인해 실패하는 대신 해당 디렉터리 내에 심볼릭 링크를 계속 생성합니다.

    이식 가능한 가장 좋은 방법은 먼저 링크를 삭제한 다음 다시 만드는 것입니다.

    rm -f link && ln -s new/target link
    

대부분의 시스템에서 심볼릭 링크에 대한 권한은 무시되며 일반적으로 rwxrwxrwx.

심볼릭 링크 권한이 중요한 시스템(예: 대상을 확인하기 위해 심볼릭 링크에 대한 읽기 권한이 필요한 OS/X)에서는 일반적으로 이를 변경하는 방법( chmod -hOS/X)이 있습니다.

소유권은 위와 같이 대부분의 시스템에서 심볼릭 링크가 가리키는 파일에 대한 액세스와는 아무런 관련이 없지만,t상위 디렉터리나 할당량 비트와 관련된 다른 종속성이 있을 수 있습니다.) 이를 변경하는 표준 명령이 있습니다.

chown -h user[:group] the-link
chgrp -h group the-link

답변4

-R실제로 심볼릭 링크 권한을 변경해야 하는 경우(다른 답변에 작성된 것처럼 일반적으로 무의미함) 다음 옵션을 성공적으로 사용했습니다 chown.

chown -R myuser:mygroup link

사용하지 않으면 -R권한이 변경되지 않습니다.

관련 정보