참고: 저는 WSL2에서 작업하고 있지만 제 문제는 엄밀히 말하면 Linux에 있습니다. 이곳이 올바른 장소가 아니라면 알려주세요.
.bashrc를 소스로 만들 때마다 mount --bind
다음을 사용하여 디렉터리가 필요합니다.
if ! mountpoint -q -- "/mnt/wsl/$WSL_DISTRO_NAME"; then
mount --bind --make-private / "/mnt/wsl/$WSL_DISTRO_NAME"
fi
[예상] 오류가 발생합니다: only root can use "--bind" option
.
다음을 통해 사용자 권한을 높이려고 했습니다 /etc/sudoers
.
[myusername] ALL=(ALL) NOPASSWD: /bin/mount
또한 다음을 추가해 보았습니다 /etc/fstab
.
/ /mnt/wsl/Ubuntu-18.04 none bind,user 0 0
하지만 아무것도 작동하지 않는 것 같습니다. 나는 사용자에게 영구 관리자/루트 권한이나 기타 유사한 "게으른" 옵션을 부여하지 않고 가능한 한 책임감 있게 이 작업을 수행하고 싶습니다.
답변1
루트 권한이 필요한 명령 앞에는 다음을 붙일 수 있습니다.
wsl.exe -u root <command>
또는 명령을 따옴표로 묶어야 하는 경우:
wsl.exe -u root /bin/sh -c "<command>" \
&& <another command>
그러면 별도의 WSL 프로세스가 시작되고 루트로 명령이 실행됩니다. 명령을 모두 한 줄에 입력하거나 접두사를 사용하여 여러 명령을 실행하거나 스크립트를 별도의 파일에 넣을 수 있습니다.
이 방법으로 루트로 실행하면 ~
분명히 사용자의 홈 디렉터리로 확인됩니다 root
. 이 명령을 실행하는 사용자의 홈 디렉터리에 액세스해야 하는 경우 먼저 변수에 저장하세요.
예
wsl.exe -u root service docker status >/dev/null || wsl.exe -u root service docker start >/dev/null
[boot]
대신 항목을 추가할 수 있으므로 위 명령은 서비스를 시작하는 가장 좋은 방법이 아닙니다 wsl.config
. 따라서 명령에 대해서도 이 작업을 수행할 수 있습니다.
선택하다
/etc/wsl.conf
[boot]
systemd = true
/etc/wsl.config
[boot]
command="service docker start"
지침
wsl.exe -u root
.bashrc 파일에 이러한 사용법을 넣으면 WSL 연결을 통해 Visual Studio Code에서 터미널을 열 때 중단됩니다. VSCode에는 이러한 권한 상승의 사용을 방지하기 위한 보호 장치가 있습니다.