Por que não consigo ler um arquivo como outro usuário com sudo

2

Eu escrevi um script de shell .scripter.sh e queria simular a execução do script como outro usuário não raiz. Eu usei sudo -u daemon bash .scripter.sh para fazer isso, mas diz "sem permissão". Vi então que não consigo ler nenhum arquivo como daemon do usuário e, de fato,

stefan@stefan-HP-Laptop:~$ touch file
stefan@stefan-HP-Laptop:~$ ll file 
-rw-r--r-- 1 stefan stefan 0 Dez  4 19:01 file
stefan@stefan-HP-Laptop:~$ sudo -u daemon [ -r file ]; echo $?
1
stefan@stefan-HP-Laptop:~$

que mostra que o usuário não tem permissão de leitura, embora a permissão -rw-r--r-- indique que o arquivo é legível por qualquer pessoa. Espero que alguém possa esclarecer esse mistério. Obrigado

Editar: Na verdade, os seguintes trabalhos

stefan@stefan-HP-Laptop:~$ cd test/
stefan@stefan-HP-Laptop:~/test$ ll -d .
drwxr-xr-x 2 stefan stefan 4096 Dez  4 19:40 ./
stefan@stefan-HP-Laptop:~/test$ touch file
stefan@stefan-HP-Laptop:~/test$ sudo -u daemon [ -r file ]; echo $?
[sudo] Passwort für stefan: 
0

Como o steeldriver escreveu, tem a ver com permissão de execução no diretório pai do arquivo. De fato, meu diretório pessoal não concedeu a nenhum usuário além de mim quaisquer direitos.

Edit2: Parece que você precisa de permissão de execução em todos os diretórios entre você e o arquivo que deseja ler, incluindo seu diretório de trabalho atual. Não consigo acessar ~/test/file como outro usuário da minha pasta pessoal, mas posso fazê-lo como outro usuário quando estou no diretório ~/test . Isso coincide com esta resposta

    
por Stefan Hamcke 04.12.2017 / 19:08

1 resposta

3

Esse comportamento pode resultar da falta de permissão de execução no diretório pai do arquivo

dado

$ ls -ld tests/{,file}
drwxrwxr-x 2 steeldriver steeldriver 4096 Dec  4 13:46 tests/
-rw-rw-r-- 1 steeldriver steeldriver  322 Dec  4 13:33 tests/file

então

$ sudo -u daemon [ -r tests/file ]; echo $?
0

mas

$ chmod o-x tests
$ sudo -u daemon [ -r tests/file ]; echo $?
1

Você pode pensar em permissão de execução para um diretório como permissão para abrir e percorrer o conteúdo do diretório.

    
por steeldriver 04.12.2017 / 20:26