Linux 용 Windows 서브 시스템에서 ls / usr / bin에 대한 권한이 거부되었습니다.


1

ls /usr/bin

오류 메시지를 제공합니다.

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

wbash.exe. 따라서 bash-completion 및 eshell-completion은 실패하거나 불완전한 결과를 제공합니다. 작동시키고 싶습니다.

작동하는 것들 :

/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

Windows 버전 : Windows 10 (64 비트), 버전 1703 (빌드 15063.786)

sbin디렉토리는 문제의 모든 창 설정없이 나열 할 수 있습니다 bin%USERPROFILE%\AppData\Local\lxss\rootfs\usr대한 그 사람과 동일 WindowsExplorer를 통해 가능합니다 sbin.

명령어 icacls.exe binicacls.exe sbinwithin %USERPROFILE%\AppData\Local\lxss\rootfs\usr은 정확히 동일한 대답을 제공합니다 ( binfor binsbinfor 의 첫 번째 단어까지 sbin). 따라서 추가 속성과 관련이없는 것 같습니다. 또한 명령 icacls.exe bin /verifyicacls.exe sbin /verify오류를 나타내지 않습니다.

디렉토리 내용을 나열하지 못하게하는 우분투의 보안 관련 기능이 /usr/bin있습니까? (이 경우의 목록을 금지하지 않으면 이상 할 것입니다 /usr/sbin.)


어떤이의 출력 ls -ld /ls -ld /usr?
Giacomo Catenazzi

@GiacomoCatenazzi 나는 그 두 가지를 목록에 추가했습니다. 놀라운 것은 없습니다.
Tobias

그래서, 때문에 추가 속성이 될 보는 것 같다 예를 들어 technet.microsoft.com/en-us/library/cc753525(v=ws.11).aspx
자코모 Catenazzi

명령을 @GiacomoCatenazzi icacls.exe bin하고 icacls.exe sbin(첫 번째 단어까지 정확히 같은 대답을 bin위해 binsbin위해 sbin). 따라서 추가 속성과 관련이없는 것 같습니다. 맞습니까? 아니면 더 많은 정보를 얻는 멋진 트릭이 있습니까? icacls.exe bin /verifyicacls.exe sbin /verify출력하지 오류를한다.
Tobias

@GiacomoCatenazzi 창문 아래에서 문제없이 bin(및 sbin) 의 내용을 나열 할 수 있습니다 (예 : WindowsExplorer 또는 PowerShell dir bin또는 ls bin)
Tobias

답변:


0

권한 문제와 매우 유사합니다.

Windows에 문제가 없음을 확인한 후이 문제는 WSL 내부 설정에 관한 것으로, Windows에 기본적으로 존재하지 않는 Linux 권한을 에뮬레이트합니다.

WSL이 Linux 권한을 에뮬레이션하는 방법을 정확히 모르겠습니다. ACL의 Windows 메커니즘을 사용하는 경우 다음을 통해 모두 재설정 할 수 있습니다.

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

이것이 도움이되지 않고 이러한 권한이 어떻게 구현되는지에 대한 지식이 없으면 WSL을 다시 설치하는 것이 좋습니다.

  1. 데이터 백업

  2. 다음 명령을 사용하여 Ubuntu 환경을 제거하고 홈 폴더를 유지 한 다음 WSL을 다시 설치하십시오.

    lxrun /uninstall
    lxrun /install
    
  3. 이것이 도움이되지 않으면 다음을 입력하여 홈 폴더 제거를 포함하여 Ubuntu 환경을 완전히 다시 설치하십시오.

    lxrun /uninstall /full
    lxrun /install
    

위의 두 명령 사이에서 폴더 %localappdata%\lxss가 비어 있는지 확인하십시오 . 그렇지 않은 경우 내용을 임시 저장소로 옮기고 더 이상 필요하지 않은 경우 나중에 삭제하십시오.


Lxrun은 더 이상 사용되지 않습니다.
Biswapriyo

@Biswa : 이것은 곧 출시 될 Windows 빌드 16215를위한 것입니다. lxrun은 현재 방법이며, 대부분 계속 사용할 수있을 것입니다.
harrymc

0

cygwin에는 권한 문제가 없으며 cygwin에서 $HOME/AppData/Local/lxss/rootfs/usr/binwsl의 놀이터 폴더로 몇 가지 테스트를 수행했습니다. 그로 인해 다음과 같은 해결책이 생겼습니다.

cygwin의 bash에서 나는 $HOME/AppData/Local/lxss/rootfs/usr다음 명령을 실행했다.

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

이는 기호 링크를 통해 cygwin과 wsl간에 공유 /temp/fix.sh되는 폴더에 스크립트 를 작성했습니다 /temp.

wbash내가 갔던 /usr/, 폴더를 생성 fix하고 fix/bin, 스크립트를 실행하고 디렉토리를 이동 fix/binbin-fix.

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

이에 따라에 wbash대한 권한 문제가 있다고 말했습니다 bin/head. 그래, 나는 그것을 받아들이고이 coreutils절차의 마지막 단계로 다시 설치 했다 (아래 참조). 다음으로 모든 wbash응용 프로그램과 wbash자체를 닫고 usr폴더가 여전히 열려 있는 cygwin으로 돌아갔습니다 .

그곳에서 bin나가서 이름 bin-fix을 바꿨 습니다 bin.

mv bin bin.old
mv bin-fix bin

나는 다시 시작 wbash하고 모든 것이 잘 ls /usr/bin작동 하고 작동합니다.

위에서 이미 언급했듯이 coreutils마지막 단계로 다시 설치 했습니다.

sudo aptitude reinstall coreutils
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.