OSX`chmod -h` 플래그와 동등한 Ubuntu는 무엇입니까?


13

OSX에서는 -h를 사용하는 것이 아니라 symlink 자체의 권한을 설정할 수 있습니다. 매뉴얼 페이지에서 :

 -h      If the file is a symbolic link, change the mode of the link itself rather than the file that the link points to.

우분투 14.04에서는 심볼릭 링크의 권한을 설정하려고 시도했지만 심볼릭 링크 대상에서만 설정되었습니다.

그것은에서 심볼릭 링크에 관한 것 /home/nagios/.ssh/someprivatekey까지를 /somewhere/else/privatekey, 그래서 권한은 ssh를 위해 중요하다. 어떻게하면 되나요?


그렇다면 왜이 심볼릭 링크가 필요합니까?
muru

1
ssh가 / somewhere / else / privatekey의 권한이 아닌 기호 링크의 권한에 관심이 있습니까?
Random832

@ Random832 예, 잘못된 결론을 도출했을 수도 있습니다. 또한 ls -l출력 에 권한이 표시되는 방식에 대해 약간 혼란 스러웠습니다 ( lrwxrwxrwx).
Ray Burgemeestre

@muru 나는 ​​ssh 키를 사용하여 모든 종류의 서버에 액세스하는 (buildserver) Docker 이미지를 만들고있었습니다. 다른 이유로 인해 개인 키를 넣고 싶지 않습니다 (즉, 도커 허브에 호스트하려는 경우). 그래서 나는 그것을 심볼릭 링크하고 이미지가 실행되면 마운트 된 볼륨을 가리 키도록했습니다. 그것을 생각 올 있지만, 나는 또한 사용하여 키 위치 변경 할 수 .ssh/config:)
레이 Burgemeestre

답변:


18

불가능합니다. 심볼릭 링크에 대한 권한이 의미가 없기 때문에 방법이 없습니다 (심볼릭 링크는 파일이 아니라 파일 만 가리킴). Linux 에서이 작업을 수행하는 방법은 ACL을 사용하는 것입니다.

symlink 는 다음과 같이 설명됩니다 ...

작성된 기호 링크의 파일 모드 비트 값이 지정되지 않았습니다. POSIX.1-2008에 의해 지정된 모든 인터페이스는 stat 구조의 st_mode 필드에 리턴 된 파일 모드 비트의 값이 지정되지 않은 것을 제외하고는 심볼릭 링크의 내용을 항상 읽을 수있는 것처럼 작동합니다.


차이점은 여기에 있습니다 : chmodchmod ... BSD와 Linux입니다.


중요한지 확실하지 않지만 SSH와 관련 하여 권한을 얻으려면 lstat (2)가 아닌 stat (2)를 사용하십시오.

  • stat ()는 경로로 가리키는 파일을 통계하고 buf를 채 웁니다.
  • lstat ()는 path가 심볼릭 링크 인 경우 링크 자체가 참조하는 파일이 아니라 링크되어 있다는 점을 제외하면 stat ()와 동일합니다.

2
심볼릭 링크에 대한 권한을 설정하는 기능은 최신 버전에서도 지정되지 않으며 BSD 확장입니다.
Random832

1
@ Random832 흠 그것은 더 정확할 수 있습니다. 나는 오늘 SO에서 그 비트를 읽었지만 이것에 대해 점검하지 않았다 : D
Rinzwind

4
또한 POSIX는 fchmodat기호 링크 모드 (옵션 기능-Linux를 포함하여이를 지원하지 않는 시스템, 오류 EOPNOTSUPP를 리턴하는 시스템)를 변경하는 데 사용할 수있는 기능을 지정 하지만 chmod이를 사용 하는 명령 에는 아무것도 없습니다 . -RPOSIX 에서만 정의됩니다.
Random832

2
리눅스에서 심볼릭 링크 권한 은 의미가 없습니다 . ( lchmod(2)또는 fchmodat(2)...로) 변경할 수있는 시스템에서는 의미 (허용 / 거부 readlink()(읽기) 또는 경로 확인 (실행))가 있습니다. 일반적으로 쓰기 권한은 심볼릭 링크의 대상을 변경할 수 없으므로 그렇지 않습니다.
Stéphane Chazelas

유닉스는 "심볼릭 링크는 파일이 아니다"라는 의견에 동의하지 않을 것입니다. 심볼릭 링크는 특수 파일입니다.
홉스

9

당신은 할 수 없습니다. 기본 chmod시스템 호출은 Linux에서이를 지원하지 않으며, Linux는 링크의 권한에 대해서도 신경 쓰지 않습니다. 보낸 사람 man chmod:

chmod never changes the permissions of symbolic links; the chmod system
call cannot change their permissions.  This is not a problem since  the
permissions  of  symbolic  links  are  never  used.   However, for each
symbolic link listed on the command line, chmod changes the permissions
of  the  pointed-to  file.   In  contrast, chmod ignores symbolic links
encountered during recursive directory traversals.

하드 링크 또는 바인드 마운트의 경우 소스 권한이 사용되므로 파일 내용을 다른 곳에 반영하는 세 가지 표준 방법 중 어느 것도 도움이 될 수 없습니다.


이 답변은 나에게 매우 분명했습니다. 죄송합니다. 답변으로 하나만 수락 할 수 있습니다!
Ray Burgemeestre
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.