나는 (다른 사용자의 홈 디렉토리에 있는) 파일을 가리키는 사용자를 위한 새로운 심볼릭 링크를 만들었습니다. 하지만 동일한 그룹의 사용자이고 파일 권한이 755인 경우에도 읽을 수 없습니다.
[lmurugan@localhost ~]$ ls -lrt
total 0
lrwxrwxrwx. 1 root root 34 Feb 16 16:36 3000.log -> /home/dkanagaraj/.forever/f3-w.log
lrwxrwxrwx. 1 dkanagaraj dkanagaraj 34 Feb 16 16:38 3030.log -> /home/dkanagaraj/.forever/z_lZ.log
[lmurugan@localhost ~]$ less 3030.log
3030.log: Permission denied
[lmurugan@localhost ~]$ ls -lrt
total 0
lrwxrwxrwx. 1 root root 34 Feb 16 16:36 3000.log -> /home/dkanagaraj/.forever/f3-w.log
lrwxrwxrwx. 1 dkanagaraj dkanagaraj 34 Feb 16 16:38 3030.log -> /home/dkanagaraj/.forever/z_lZ.log
[lmurugan@localhost ~]$ id
uid=1006(lmurugan) gid=1000(dkanagaraj) groups=1000(dkanagaraj)
[lmurugan@localhost ~]$ id dkanagaraj
uid=1000(dkanagaraj) gid=1000(dkanagaraj) groups=1000(dkanagaraj),10(wheel)
[dkanagaraj@localhost .forever]$ ls -lrt /home/dkanagaraj/.forever/f3-w.log
-rwxr-xr-x. 1 dkanagaraj dkanagaraj 425361 Feb 16 16:46 /home/dkanagaraj/.forever/f3-w.log
[dkanagaraj@localhost .forever]$ ls -lrt /home/dkanagaraj/.forever/z_lZ.log
-rwxr-xr-x. 1 dkanagaraj dkanagaraj 570027 Feb 16 16:46 /home/dkanagaraj/.forever/z_lZ.log
답변1
명령 출력이 혼동되고 있습니다.
먼저 "3030.log"는 링크입니다
[lmurugan@localhost ~]$ ls -lrt
total 0
lrwxrwxrwx. 1 root root 34 Feb 16 16:36 3000.log -> /home/dkanagaraj/.forever/f3-w.log
lrwxrwxrwx. 1 dkanagaraj dkanagaraj 34 Feb 16 16:38 3030.log -> /home/dkanagaraj/.forever/z_lZ.log
첫 번째 위치의 "l"은 "-> /home/dkanagaraj/.forever/z_lZ.log"와 마찬가지로 이를 나타냅니다.
따라서 링크한 파일의 권한과 상위 디렉토리 dkanagaraj 및 .forever의 권한이 표시됩니다.
ls -l /home/dkanagaraj/.forever/z_lZ.log
바라보다http://linuxcommand.org/lts0070.php파일 및 디렉토리 권한에 대한 토론.
답변2
bodhi.zazen의 답변은 정확하지만 조금 다르게 답변하고 싶습니다. 권한은 inode에 연결되고 심볼릭 링크와 해당 대상에는 자체 inode가 있습니다. 고려하다부자그리고질문, 다음과 같은:
$ ls -l foo issues
lrwxrwxrwx 1 jklowden jklowden 6 Feb 18 16:46 foo -> issues
-rw-rw-r-- 1 jklowden jklowden 2380 Jan 29 14:02 issues
$ stat foo
File: ‘foo’ -> ‘issues’
Size: 6 Blocks: 0 IO Block: 4096 symbolic link
Device: 811h/2065d Inode: 11406493 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 1000/jklowden) Gid: ( 1000/jklowden)
Access: 2016-02-18 16:46:52.224805576 -0500
Modify: 2016-02-18 16:46:40.905398163 -0500
Change: 2016-02-18 16:46:40.905398163 -0500
Birth: -
$ stat issues
File: ‘issues’
Size: 2380 Blocks: 8 IO Block: 4096 regular file
Device: 811h/2065d Inode: 11405468 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/jklowden) Gid: ( 1000/jklowden)
Access: 2016-01-29 14:05:26.122808636 -0500
Modify: 2016-01-29 14:02:52.106866058 -0500
Change: 2016-01-29 14:02:52.106866058 -0500
Birth: -
일반적으로 파일의 권한은 파일로 수행할 수 있는 작업을 제어하지만 대부분의 시스템에서 발생하는 것처럼 심볼릭 링크 파일의 권한은 아무 것도 제어하지 않습니다. (당신은 할 수chmod 0 foo, 아직ln -sf foo 바효율적인. ) 여기서는 inode 11405468에 대한 권한이 가장 중요합니다.
[다음 내용이 수정되었습니다. 명확한 의견을 주신 dave_thompson_085에게 감사드립니다. ]
귀하의 예에서 실제 파일(symlink가 아님)은 물론 입니다 f3-w.log
. 이 파일은 dkanagaraj 그룹에 속하고 그룹 읽기 권한이 있으므로 사용하는 심볼릭 링크에 관계없이 해당 내용을 읽을 수 있기를 원합니다.
파일을 읽을 수 있는 권한은 다음과 같습니다.반품경로에 따라 제어됩니다. 파일에 액세스하려면 경로 이름에 나열된 모든 디렉터리에 대한 실행 권한이 필요합니다.(리눅스 프로그래밍 인터페이스, 섹션 15.4.3, 297페이지). 심볼릭 링크는 대상의 절대 경로 이름을 사용하기 때문에데카나가라지그룹 요구구현하다각 경로 이름 구성 요소에 대한 권한: /
, 및 . 경로 권한 제약 조건은 심볼릭 링크 자체를 포함하여 모든 파일에 적용되지만 여러분은 그 문제를 해결했다고 생각합니다. home
dkanagaraj
.forever