Ubuntu 20.04でdockerを設定するときsudo usermod -G docker $USER
。ここに関連する質問で述べたように、フラグを見逃してすべての-a
補助グループを交換しました。しかし、私はマシンを再起動するまでこれを実現できませんでした。これはシングルユーザーワークステーションです。でこの問題を解決できますが、root
パスワードはありません。ルートアクセスなしで正しいグループを復元するにはどうすればよいですか?今問題を引き起こす唯一の事はですsudo
。しかし、他の問題が発生すると確信しています。 Ubuntuを最初から再インストールせずにできることはありますか?
ベストアンサー1
1セット残った: docker
。これはまだdockerデーモンを制御できることを意味します。このデーモンは、ホストのルートファイルシステムを使用してコンテナを実行できます。インストール済みその後、コンテナはファイルを編集できますvi
(忙しい箱)またはより簡単:chroot
ホストのファイルシステムに接続できます。
最小画像ダウンロードbusybox
:
myuser@myhost:~$ docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
b71f96345d44: Pull complete
Digest: sha256:930490f97e5b921535c153e0e7110d251134cc4b72bbb8133c6a5065cc68580d
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest
chroot
このイメージを含むコンテナをインタラクティブで特権モードで実行します(AppArmorが後でこのイメージなしでコマンドをブロックする場合)。
$ docker run -it --mount type=bind,source=/,target=/host --privileged busybox
コンテナ内で対話型コマンドを引き続き使用します。単にマウントポイントにchrootしてルートファイルシステムに「入力」し、すべてのUbuntuコマンドを取得できます。
/ # chroot /host
adduser
より簡単なラッパーを使用してくださいuseradd
。
root@74fc1b7903e5:/# adduser myuser sudo
Adding user `myuser' to group `sudo' ...
Adding user myuser to group sudo
Done.
root@74fc1b7903e5:/# exit
exit
/ # exit
ログアウトして再度ログインするか、グループを手動で変更します。
myuser@myhost$ sg sudo
ルートアクセスが復元されました:
myuser@myhost$ sudo -i
[sudo] password for myuser:
root@myhost#
結論は非常にDockerへのリモートアクセスを許可するときは注意してください(ポート2375 / TCP経由)。デフォルトでは、これはルートアクセスを意味します。