Diretório que um usuário pode ler, mas o root não pode?

9

Há um diretório abaixo da minha propriedade chamado ".gvfs". Como minha conta de usuário comum, eu posso lê-la muito bem:

~ $ ls -lart ~raldi/.gvfs
total 4
dr-x------  2 raldi raldi    0 2009-05-25 22:17 .
drwxr-xr-x 60 raldi raldi 4096 2009-05-25 23:08 ..
~ $ ls -d ~raldi/.gvfs
dr-x------ 2 raldi raldi 0 2009-05-25 22:17 /home/raldi/.gvfs

No entanto, como root, não posso "ls" ou mesmo "ls -d":

# ls ~raldi/.gvfs
ls: cannot access /home/raldi/.gvfs: Permission denied
# ls -d ~raldi/.gvfs
ls: cannot access /home/raldi/.gvfs: Permission denied

E, apenas para ter certeza:

# echo $UID $EUID
0 0

Esta é apenas uma instalação doméstica simples do Ubuntu 8.10, sem NFS ou qualquer coisa estranha assim. Vejo que o diretório está marcado como não-legível por mundo (e não-mundo-x-capaz), mas achei que nada disso se aplicava quando você é root. Por exemplo, eu posso criar um diretório mode-000 em / tmp e entregá-lo a um usuário não root, e o root não tem problemas para lê-lo, escrevê-lo, o que for.

Alguma idéia do que está acontecendo?

raldi
fonte
Curiosamente, você obtém os mesmos sintomas ao usar o sshfs como um usuário comum e, em seguida, tenta qualquer tipo de operação no ponto de montagem como raiz. O usuário root não tem permissão para visualizar o ponto de montagem. Você nem consegue ver as permissões, ls -l retorna todos os pontos de interrogação para todos os bits de permissão.
264 GodEater
1
"Esta é apenas uma instalação doméstica simples do Ubuntu 8.10, sem NFS ou qualquer coisa estranha assim". Uhm, fusível é "algo estranho assim"
Thomas

Respostas:

21

De: http://bugzilla.gnome.org/show_bug.cgi?id=534284

Tudo isso é lamentável, mas é uma decisão que foi tomada pelo pessoal do fusível no nível do kernel (o usuário que não é aquele que montou o fs não pode acessá-lo, incluindo o root) e não há nada que possamos fazer sobre isso.

Consulte também: https://bugs.launchpad.net/gvfs/+bug/225361

A solução parece ser atualizar o seu /etc/fuse.conf e ativar a opção user_allow_other . Talvez você também precise fazer com que o gvfs passe o allow_root ou allow_other, mas não tenho certeza de como fazer isso.

É claro que pode ser muito mais fácil simplesmente desistir de todas as ferramentas da GUI, como gvfs, e montar seus sistemas de arquivos a partir da linha de comando, onde você tem controle total de exatamente como algo é montado.

Zoredache
fonte
5

O .gvfsdiretório é o sistema de arquivos do espaço de usuário do Gnome VFS que fornece um caminho direto ao sistema de arquivos para sistemas de arquivos virtuais (por exemplo, montagens samba remotas, montagens webdav) para que o Gnome possa passar caminhos para programas que não são compatíveis com VFS ao operar em arquivos remotos.

Como é uma montagem e aplicativo do FUSE, ele pode negar permissões de root - o agente que executa as verificações de acesso nesse caso é o aplicativo FUSE, não o kernel.

Por padrão, o gvfsdaemon permite apenas que o proprietário percorra o diretório.

MikeyB
fonte
0

Pode haver algumas coisas, em ordem de probabilidade

  • verifique / var / log / messages (ou / var / log / syslog) para possíveis danos no sistema de arquivos
  • você está usando o SELinux?
  • o google sugere que lsattr ~ raldi / .gvfs pode indicar recursos especiais sendo aplicados a esse arquivo.
Dave Cheney
fonte
Corri o fsck no disco e ele não encontrou nenhum problema. Não estou usando o SELinux. Se eu executar o lsattr como minha conta de usuário, não haverá saída. Se eu executá-lo como root, recebo um erro de "permissão negada".
Raldi 26/05/09
Looks como Zoredache tem a resposta
Dave Cheney