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 bin
와 icacls.exe sbin
within %USERPROFILE%\AppData\Local\lxss\rootfs\usr
은 정확히 동일한 대답을 제공합니다 ( bin
for bin
및 sbin
for 의 첫 번째 단어까지 sbin
). 따라서 추가 속성과 관련이없는 것 같습니다. 또한 명령 icacls.exe bin /verify
과 icacls.exe sbin /verify
오류를 나타내지 않습니다.
디렉토리 내용을 나열하지 못하게하는 우분투의 보안 관련 기능이 /usr/bin
있습니까? (이 경우의 목록을 금지하지 않으면 이상 할 것입니다 /usr/sbin
.)
답변
권한 문제와 매우 유사합니다.
Windows에 문제가 없음을 확인한 후이 문제는 WSL 내부 설정에 관한 것으로, Windows에 기본적으로 존재하지 않는 Linux 권한을 에뮬레이트합니다.
WSL이 Linux 권한을 에뮬레이션하는 방법을 정확히 모르겠습니다. ACL의 Windows 메커니즘을 사용하는 경우 다음을 통해 모두 재설정 할 수 있습니다.
icacls %localappdata%\lxss /reset /T /C
이것이 도움이되지 않고 이러한 권한이 어떻게 구현되는지에 대한 지식이 없으면 WSL을 다시 설치하는 것이 좋습니다.
-
데이터 백업
-
다음 명령을 사용하여 Ubuntu 환경을 제거하고 홈 폴더를 유지 한 다음 WSL을 다시 설치하십시오.
lxrun /uninstall lxrun /install
-
이것이 도움이되지 않으면 다음을 입력하여 홈 폴더 제거를 포함하여 Ubuntu 환경을 완전히 다시 설치하십시오.
lxrun /uninstall /full lxrun /install
위의 두 명령 사이에서 폴더 %localappdata%\lxss
가 비어 있는지 확인하십시오
. 그렇지 않은 경우 내용을 임시 저장소로 옮기고 더 이상 필요하지 않은 경우 나중에 삭제하십시오.
답변
cygwin에는 권한 문제가 없으며 cygwin에서 $HOME/AppData/Local/lxss/rootfs/usr/bin
wsl의 놀이터 폴더로 몇 가지 테스트를 수행했습니다. 그로 인해 다음과 같은 해결책이 생겼습니다.
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/bin
로 bin-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