chown은 심볼릭 링크를 변경하지 않습니다


312

다음 명령을 사용하여 기호 링크의 사용자 / 그룹을 변경하려고합니다.

$ chown -h myuser:mygroup mysymbolic/ 

그러나 바뀌지 않습니다. 루트로 로그인했습니다. 현재 사용자 / 그룹이 root : root로 설정되어 있습니다. 무엇이 잘못 되었나요?


manaul 페이지에 따라 -h 옵션은 심볼릭 링크의 소유권을 변경할 수있는 시스템에만 적용됩니다.
Jichao

NFS 마운트 상태입니까?
Ortomala Lokni

끝나는 /것은 디렉토리입니다. 당신은 의미 mysymbolic심볼릭 링크,하지 않은, mysymbolic/아마 가리키는 디렉토리입니다.
David Schwartz

답변:


381

나는 목표의 끝에 슬래시를 넣었습니다.

chown -h myuser:mygroup mysymbolic/ 

결국 슬래시를 제거하고 작동합니다. 올바른 방법은 다음과 같습니다.

 chown -h myuser:mygroup mysymbolic

9
우분투에서 작동하지 않습니다
Radek

2
와우, 이걸 찾기까지 몇 시간이 걸렸습니다.
정의 함

54
@Radek -h깃발을 기억하는 한 우분투에서 저에게 효과적이었습니다 .
IQAndreas 2016 년

29
우분투에 나를 위해 작동 -h않고 후행 슬래시.
friederbluemle

8
나는 4 년 후에 믿을 수 없어, 같은 문제를 겪고있는 과거의 자기 자신, 부인 '-h'에 부딪쳤다!
Antony D' Andrea

29

나는 이것을 직접 시도했고 그것은 나를 위해 일한다. -h가 있으면 기호 링크의 소유자가 변경되지만 그렇지 않으면 링크 자체가 아닌 파일 자체의 소유자가 변경됩니다.

그러나 심볼릭 링크가 디렉토리에 링크되어 작동하지 않는 것 같습니다.


2
그만한 가치가 있기 때문에, OS X의 매뉴얼 페이지는 (Arch) Linux의 매뉴얼 페이지보다 -h 옵션에서 훨씬 명확합니다. "-h 파일이 심볼릭 링크 인 경우 링크 자체의 사용자 ID 및 / 또는 그룹 ID를 변경하십시오."vs. "-h, --no-dereference는 참조 된 파일 대신 심볼릭 링크에 영향을 미칩니다 ( 심볼릭 링크의 소유권을 변경할 수있는 시스템)”
Matijs

6

나는 chown디렉토리를 가질 수 없었지만 -h전체 경로를 사용하는 것이 효과가있었습니다.

# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps/
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# pwd 
/var/www/html
# chown -h deploy:deploy /var/www/html/apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 deploy deploy   32 Dec 30 09:02 apps -> /u/apps/

5

대상이 파일입니까, 디렉토리입니까?

디렉토리 인 경우 -H (대문자 H)를 시도하십시오.


대상은 디렉토리입니다

디렉토리에 대한 편집 된 답변보기

6
스레드 괴사에 대해 죄송하지만 올바른 구문이 소문자 'h'인 것을 지적하고 싶습니다.


3

myuser의 집에서 myuser로 해당 링크를 다시 작성하고 sudo를 통해 대상 위치로이 링크를 mv하십시오.

예 : (myuser로), ln -s somedir/ linkname (somedir /이 사용자 디렉토리에 없으면 링크가 끊어짐)

그런 다음 sudo mv linkname targetlocation(제공된 유효한 링크가됩니다 targetlocation/somedir/)


귀하의 답변은 상세하지 않으며 완전히 이해하기 어렵습니다. 자세한 내용을 제공하려면 답변을 수정하십시오.
제임스 메르 츠

1

나는 비슷한 문제가 있었다. 나를 위해 chmod를 어떻게 호출했는지에 관계없이 루트로도 심볼릭 링크를 chmod 할 수 없었습니다. 이것에 혼란을 더하기 위해 노틸러스는 소유자 / 그룹을 아무것도 표시하지 않았습니다. 주인은 방금 비었다. chmod가 작동하지 않고 노틸러스가 충돌했기 때문에 루트로 실행되는 노틸러스를 사용하여 심볼릭 링크를 변경하려고했습니다!

그러나 나는 문제를 알아 냈다고 생각합니다. 심볼릭 링크가 가리키는 디렉토리는 심볼릭 링크와 다른 권한을 가졌습니다. 그래서 -h를 사용하여 대상 디렉토리를 사용자 / 그룹 이름으로 chmod했습니다. 그런 다음 동일한 기호 링크를 chmod'ed하고 작동했습니다! 그리고 노틸러스 (루트 권한이있는)에서 심볼릭 링크의 세부 정보를 볼 때 더 이상 충돌이 발생하지 않습니다.

따라서 비슷한 문제가있는 다른 사용자의 경우 대상 디렉토리 / 파일의 권한을 확인하고 심볼릭 링크를 설정하는 권한과 호환되는지 확인하십시오.


1

owner심볼릭 링크의 변경은 대상 에 할당하려는 새 사용자 가 대상에 액세스 할 수있는 경우에만 작동합니다 .

예를 들어, 대상이 할당하려는 사용자에게 충분한 권한이없는 폴더 안에있는 경우 아무런 ln -s command동작도하지 않습니다.


1

디렉토리에 대한 심볼릭 링크에 대한 Solaris (S11.3에서 확인)의 경우 다음을 실행해야합니다.

root@ac11x017:/var/tmp$ ls -lal dumpdir
lrwxrwxrwx   1 root     root          16 Jun 15 09:08 dumpdir -> /data/dumpdir/
root@ac11x017:/var/tmp$ chown -RP oracle:oinstall dumpdir
lrwxrwxrwx   1 oracle   oinstall      16 Jun 15 09:09 dumpdir -> /data/dumpdir/
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.