Permissão negada para ls / usr / bin no subsistema windows para linux

0

ls /usr/bin

apresenta a mensagem de erro:

ls: reading directory '/usr/bin': Permission denied

em wbash.exe . Por essa razão, o bash-completion e o eshell-completion falham ou dão resultados incompletos. Eu gostaria de começar a trabalhar.

Coisas que funcionam:

/usr/bin $ ls -l emacs
lrwxrwxrwx   1 root           root           23 2017-07-31 17:16 emacs -> /etc/alternatives/emacs
/usr/bin $ ls -l gcc-5
-rwxr-xr-x   1 root           root       915736 2017-09-14 06:01 gcc-5
/usr/bin $ ls -ld /usr/bin
drwxr-xr-x   0 root           root          512 2017-12-19 09:45 /usr/bin
/usr/bin $ ls -ld /usr/sbin
drwxr-xr-x   0 root           root          512 2017-12-19 09:45 /usr/sbin
/usr/bin $ ls -ld /
drwxr-xr-x   0 root           root          512 2017-11-17 10:23 /
/usr/bin $ ls -ld /usr
drwxr-xr-x   0 root           root          512 2017-03-30 11:55 /usr

A versão do Windows é: Windows 10 (64 bits), Versão 1703 (Build 15063.786)

O diretório sbin pode ser listado sem problemas e todas as configurações de bin em %USERPROFILE%\AppData\Local\lxss\rootfs\usr disponíveis via WindowsExplorer são iguais às de sbin .

Os comandos icacls.exe bin e icacls.exe sbin em %USERPROFILE%\AppData\Local\lxss\rootfs\usr fornecem exatamente a mesma resposta (até a primeira palavra que é bin para bin e sbin para sbin ). Portanto, não parece estar relacionado aos atributos extras. Além disso, os comandos icacls.exe bin /verify e icacls.exe sbin /verify não indicam erros.

Existe algum recurso relacionado à segurança do Ubuntu (que eu não conheço) que me proíba de listar o conteúdo do diretório /usr/bin ? (Nesse caso, seria estranho se não proibisse a listagem de /usr/sbin .)

    
por Tobias 21.12.2017 / 10:09

2 respostas

0

Parece muito com um problema de permissões.

Como você verificou que o problema não é com o Windows, então este problema é com as configurações internas do WSL, onde emula permissões do Linux que não existem nativamente no Windows.

Eu não sei exatamente como a WSL faz a emulação de permissões do Linux. Se ele usar o mecanismo do Windows da ACL, você poderá redefinir todos eles:

icacls %localappdata%\lxss /reset /T /C

Se isso não ajudar, e sem um melhor conhecimento de como essas permissões são implementadas, Eu sugeriria reinstalar o WSL:

  1. Faça backup dos seus dados

  2. Desinstale o ambiente do Ubuntu, mas mantenha sua pasta pessoal e, em seguida, reinstale o WSL, usando os comandos:

    lxrun /uninstall
    lxrun /install
    
  3. Se isso não ajudar, reinstale totalmente o ambiente do Ubuntu incluindo a remoção da sua pasta pessoal, digitando:

    lxrun /uninstall /full
    lxrun /install
    

Entre os dois comandos acima, verifique se a pasta %localappdata%\lxss está vazio. Caso contrário, mova seu conteúdo para armazenamento temporário e exclua mais tarde quando não é mais necessário.

    
por 22.12.2017 / 11:25
0

Não há problemas de permissão com o cygwin em $HOME/AppData/Local/lxss/rootfs/usr/bin e fiz alguns testes com pastas de wsl sob o cygwin. Isso me levou à seguinte solução.

No bash do cygwin, fui para $HOME/AppData/Local/lxss/rootfs/usr e executei o seguinte comando:

find bin -mindepth 1 -maxdepth 1 -printf "cp -a %p fix/%p\n" > /temp/fix.sh

Isso criou um script /temp/fix.sh em uma pasta /temp que é compartilhada entre cygwin e wsl por meio de links simbólicos.

Em wbash , fui para /usr/ , criei as pastas fix e fix/bin , executei o script e movi o diretório fix/bin para bin-fix .

cd /usr
mkdir -p fix/bin
. /temp/fix.sh
mv fix/bin bin-fix

Desse modo, wbash me disse que tinha problemas de permissão para bin/head . Ok, eu aceitei isso e reinstalei o coreutils como último passo deste procedimento (veja abaixo). Em seguida, fechei todos os aplicativos wbash e wbash e voltei para o cygwin, onde a pasta usr ainda estava aberta.

Lá, movi bin para fora e renomeio bin-fix para bin .

mv bin bin.old
mv bin-fix bin

Eu reiniciei wbash e voilá tudo corre bem e ls /usr/bin funciona.

Como já mencionei acima, re-instalei o coreutils como último passo:

sudo aptitude reinstall coreutils
    
por 22.12.2017 / 14:02