注:私は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
しかし、何も動作しないようです。私はユーザーに永続的な管理者/root権限や他の同様の「怠惰な」オプションを与えることなく、できるだけ責任を持ってこれを行いたいと思います。
答え1
root権限を必要とするコマンドの前には、次のものを付けることができます。
wsl.exe -u root <command>
または、コマンドを引用符で囲む必要がある場合:
wsl.exe -u root /bin/sh -c "<command>" \
&& <another command>
その後、別々のWSLプロセスが開始され、rootとしてコマンドが実行されます。すべてのコマンドを 1 行に入力したり、プレフィックスを使用して複数のコマンドを実行したり、スクリプトを別々のファイルに配置したりできます。
この方法でrootとして実行すると、~
明らかにユーザーのホームディレクトリとして解決されます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には、これらの昇格の使用を防ぐための保護装置があります。