
Criei um novo link simbólico para um arquivo (localizado em outro diretório inicial do usuário) para o usuário. Mas não é possível ler, mesmo que o usuário no mesmo grupo e as permissões de arquivo sejam 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
Responder1
Você está confundindo a saída dos comandos.
Primeiro, "3030.log" é um link
[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
o "l" na primeira posição mostra isso, assim como "-> /home/dkanagaraj/.forever/z_lZ.log"
então mostre as permissões do arquivo ao qual você está vinculado, bem como as permissões dos diretórios pai, dkanagaraj e .forever
ls -l /home/dkanagaraj/.forever/z_lZ.log
Verhttp://linuxcommand.org/lts0070.phppara uma discussão sobre permissões de arquivos e diretórios.
Responder2
A resposta de bodhi.zazen está certa, mas eu gostaria de responder de forma um pouco diferente: as permissões são anexadas ao inode, e o link simbólico e seu destino têm cada um seu próprio inode. Considerarfooeproblemas, abaixo:
$ 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: -
Normalmente, as permissões em um arquivo controlam o que você pode fazer com ele, mas como acontece na maioria dos sistemas, as permissões em um arquivo de link simbólico não controlam nada. (Você podechmod 0 foo, e aindaln -sf foo barrafunciona.) Aqui, as permissões no inode 11405468 são as que contam.
[O que se segue está corrigido. Obrigado a dave_thompson_085 por seu comentário esclarecedor.]
No seu exemplo, o arquivo real (não o link simbólico) é, obviamente f3-w.log
, . Como ele pertence ao seu grupo, dkanagaraj, e tem privilégios de leitura de grupo, você espera poder ler seu conteúdo, independentemente de qual link simbólico você usou.
Os direitos para ler o arquivo sãotambémcontrolado pelo caminho até ele. Ao acessar um arquivo, é necessária permissão de execução em todos os diretórios listados no nome do caminho.(Interface de programação Linux, seção 15.4.3, página 297). Como o link simbólico usa um nome de caminho absoluto para seu destino, odkanagarajnecessidades do grupoexecutarpermissão em cada componente do nome do caminho: /
, home
, dkanagaraj
e .forever
. A restrição de permissão de caminho se aplica a qualquer arquivo, incluindo o próprio link simbólico, mas acho que você já cobriu isso.