Permissões de diretório local do Linux como pontos de interrogação para não raiz

8

Ok, isso é novo. Eu já vi casos como esse com dispositivos de armazenamento com defeito, com falhas no armazenamento remoto (SAN, NAS), acho que vi algo semelhante causado por permissões de montagem. Mas é a primeira vez que vejo isso acontecendo no mesmo sistema de arquivos que meu homedir ....

Estou muito curioso sobre isso ... Que tipo de permissão está entrando aqui? Definitivamente não monta (eu estou no mesmo sistema de arquivos ext4), não SELinux, nem ACLs. Então o que???

Não me lembro de como esse diretório foi criado. É provável que tenha sido criado por algum tipo de software.

Para mim, a parte mais estranha é que o diretório nem mesmo pode ver as informações de seus pais ou de seus pais (último comando) ...

Linux Mint Sarah

user01@MyPC ~/somedirectory $ ls -l ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
ls: negaliu pasiekti './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace': Permission denied
viso 0
d????????? ? ? ? ?            ? workspace
user01@MyPC ~/somedirectory $ ls -ld ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
drw-r--r-- 3 user01 user01 4096 Rgs 27  2016 ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:
user01@MyPC ~/somedirectory $ 
user01@MyPC ~/somedirectory $ 
user01@MyPC ~/somedirectory $ ls -l ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
ls: negaliu pasiekti './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace': Permission denied
viso 0
d????????? ? ? ? ?            ? workspace
user01@MyPC ~/somedirectory $ 
user01@MyPC ~/somedirectory $ 
user01@MyPC ~/somedirectory $ sudo file ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:: directory
user01@MyPC ~/somedirectory $ sudo ls -l ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
viso 4
drwxr-xr-x 3 user01 user01 4096 Rgs 27  2016 workspace
user01@MyPC ~/somedirectory $ sudo stat ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
  File: './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:'
  Size: 4096        Blocks: 8          IO Block: 4096   aplankas
Device: 807h/2055d  Inode: 3937216     Links: 3
Access: (0644/drw-r--r--)  Uid: ( 1000/ user01)   Gid: ( 1000/ user01)
Access: 2017-09-21 12:57:33.990819052 +0300
Modify: 2016-09-27 11:18:38.309775066 +0300
Change: 2017-03-13 14:56:40.960468954 +0200
 Birth: -
user01@MyPC ~/somedirectory $ sudo getfacl ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
# file: deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:
# owner: user01
# group: user01
user::rw-
group::r--
other::r--

user01@MyPC ~/somedirectory $ stat ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
  File: './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:'
  Size: 4096        Blocks: 8          IO Block: 4096   aplankas
Device: 807h/2055d  Inode: 3937216     Links: 3
Access: (0644/drw-r--r--)  Uid: ( 1000/ user01)   Gid: ( 1000/ user01)
Access: 2017-09-21 12:57:33.990819052 +0300
Modify: 2016-09-27 11:18:38.309775066 +0300
Change: 2017-03-13 14:56:40.960468954 +0200
 Birth: -
user01@MyPC ~/somedirectory $ stat ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:/workspace
stat: nepavyksta patikrinti './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace': Permission denied
user01@MyPC ~/somedirectory $ sudo stat ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:/workspace
  File: './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace'
  Size: 4096        Blocks: 8          IO Block: 4096   aplankas
Device: 807h/2055d  Inode: 3937217     Links: 3
Access: (0755/drwxr-xr-x)  Uid: ( 1000/ user01)   Gid: ( 1000/ user01)
Access: 2017-09-21 12:58:46.845727190 +0300
Modify: 2016-09-27 11:18:38.309775066 +0300
Change: 2016-12-02 13:56:08.298109826 +0200
 Birth: -
user01@MyPC ~/somedirectory $ stat .
  File: '.'
  Size: 4096        Blocks: 8          IO Block: 4096   aplankas
Device: 807h/2055d  Inode: 3278479     Links: 23
Access: (0755/drwxr-xr-x)  Uid: ( 1000/ user01)   Gid: ( 1000/ user01)
Access: 2017-09-21 09:46:22.102269130 +0300
Modify: 2017-09-20 17:33:04.564009275 +0300
Change: 2017-09-20 17:33:04.564009275 +0300
 Birth: -
user01@MyPC ~/somedirectory $ ll ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:/
ls: negaliu pasiekti './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace': Permission denied
ls: negaliu pasiekti './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/.': Permission denied
ls: negaliu pasiekti './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/..': Permission denied
viso 0
d????????? ? ? ? ?            ? ./
d????????? ? ? ? ?            ? ../
d????????? ? ? ? ?            ? workspace/
user01@MyPC ~/somedirectory $ 

Atributos:

user01@MyPC ~/somedirectory $ sudo lsattr ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:/
-------------e-- ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace
user01@MyPC ~/somedirectory $ sudo lsattr ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:/workspace
-------------e-- ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace/directory2
user01@MyPC ~/somedirectory $ 
netikras
fonte
Como o sistema de arquivos foi montado? Que tipo de sistema de arquivos é esse?
Raman Sailopal
Tudo isso está no mesmo sistema de arquivos ext4 - meu / sistema de arquivos home. É mencionado no post
netikras
2
Por favor, não poste imagens de texto. E por favor, mostre apenas as informações relevantes. No mínimo, você pode remover os comandos errados! É muito difícil seguir o caminho que você está mostrando.
terdon
devo editar a postagem?
Netikras
2
E a possibilidade de um sistema de arquivos corrompido e a dificuldade de ler inodes? O dmesg informa alguma coisa?
Raman Sailopal

Respostas:

17

Nos arquivos, a leitura é suficiente para verificar as permissões. Você precisa ler E executar nas pastas para executá-las.

chmod -R a+X ./deploy_dir

Capital X para definir apenas a execução em pastas (e arquivos que já possuem o conjunto de bits).

HoD
fonte
5
Uma vez, passei meio dia em um problema semelhante, é fácil perder!
HoD 21/09
7

A leitura das permissões de um arquivo requer que stat(2)ele seja chamado , e isso requer a permissão de execução / acesso no diretório que contém (todos os diretórios no caminho). Na verdade, é o mesmo com todas as outras chamadas de sistema que usam um nome de arquivo. No entanto, a leitura do conteúdo de um diretório (a lista de nomes de arquivos) requer apenas acesso de leitura no diretório.

No seu snippet de amostra:

~/somedirectory $ ls -l .../bin/D\:
ls: negaliu pasiekti '.../bin/D:/workspace': Permission denied
viso 0
d????????? ? ? ? ?            ? workspace

lstentou ligar stat(".../bin/D:/workspace"), conseguiu um erro e reclamou. Em alguns sistemas, você pode obter informações parciais das chamadas readdir/ getdentsjunto com os nomes dos arquivos, sem precisar usar stat. Como aqui, workspaceé mostrado para ser um diretório.

E aqui vemos que não há x bit para nenhum usuário:

~/somedirectory $ ls -ld .../bin/D\:
drw-r--r-- 3 user01 user01 4096 Rgs 27  2016 .../bin/D:

Como root, você obtém uma lista completa, pois ser root ignora completamente os bits de permissão.

ilkkachu
fonte
Você poderia fazer o mesmo, mas LC_ALL=Cexportado para o seu ambiente?
um CVn
1

Para examinar os atributos do arquivo, é necessário o direito de ler o diretório. Se isso não for possível, pontos de interrogação serão mostrados.

Pelo motivo pelo qual esse usuário não pode ler as informações, consulte os atributos do diretório ( .../D:/.acima). Outra causa possível seria se o diretório foi removido ou está inacessível (por exemplo, sistema de arquivos de rede, identificador obsoleto) por um motivo diferente dos modos de acesso.

Ned64
fonte
Atualizado a pergunta. Os atributos são todos iguais a D: \, seus filhos, seu pai e meu ~ /. diretório.
Netikras
E esse diretório já existe há meses. Não está desaparecendo em lugar nenhum. É claramente dizendo que se eu não sou raiz Eu não posso ir para dentro: / Que não iria funcionar com agitando mídia ou filehandles eu acho
netikras
Por favor, tente verificar todos os diretórios principais também, se algum deles tiver atributos que criem problemas (veja se llfalha como user01em qualquer um dos pais até a raiz). Não há necessidade de postar a saída, diga-nos o resultado, por favor.
precisa saber é o seguinte
1
Acabei de tar'ed o diretório, scp'ed para outro servidor e fiz o mesmo lsteste. O resultado é idêntico
netikras
2
Você não xmostra a bandeira, então HoD está certo. Eu não tinha visto isso em sua saída desordenada. straceteria lhe dito isso. também.
Ned64
0

Hoje tive um problema muito parecido, com sintomas semelhantes: pontos de interrogação nos campos de permissões e propriedade e, mesmo com root / sudo, não consegui alterar nada disso. Por fim, lembrei-me de que esse diretório em particular era realmente o ponto de montagem para um diretório no compartilhamento de arquivos do Windows, que eu havia configurado algumas semanas atrás (em uma sessão de teste para ver se o Samba / CIFS é bom para o meu projeto) e aparentemente entretanto, foi desmontado. Depois de reemitir o mount.cifscomando e inserir minhas credenciais para a parte Windows da nossa rede, o 'ls' relatou informações normais de permissão e propriedade no diretório. Como os sintomas se pareciam exatamente com os seus, pergunto-me se você está em uma situação semelhante, também porque "D:" parece muito Windows-ish.

davino
fonte
Olá, o visto verde significa que o usuário que fez a pergunta marcou a resposta como "aceita". Portanto, podemos, pelo menos, assumir as permissões foram capazes de ser mudado usando chmod. Este diretório está abaixo do diretório inicial do usuário ( ~). Além disso, eles já sabem que problemas como esse podem ocorrer devido a problemas no armazenamento remoto.
sourcejedi
Observe também que o statcomando confirma isso. Compare o Devicecampo para stat .vs sudo stat ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D \: File: './deploy_dir/liferay-portal-6.1.1-ce -ga2 / tomcat-7.0.27 / bin / D: ''. É o mesmo. Esta saída é uma boa evidência de que eles estão no mesmo sistema de arquivos.
sourcejedi
Ah, certo! Desculpe pelo barulho ...
Davino