Toolbox: sudo(8) di dalam wadah kotak peralatan meminta kata sandi dengan Podman 2.0.5

Dibuat pada 4 Agu 2020  ·  26Komentar  ·  Sumber: containers/toolbox

Saat menggunakan kotak alat pada kulit mentah F33 Silverblue, memasukkan kotak alat yang baru dibuat akan menghasilkan kesalahan sebagai berikut ...

/usr/bin/id: cannot find name for group ID 1000

Di dalam kotak alat, ketika mengeluarkan perintah, hak istimewa sudoer diperlukan, seperti dnf seperti itu ...
Sudo dnf install terminator yang ditingkatkan vim menghasilkan prompt berikut kepada pengguna ...

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

lalu, jika saya memasukkan kata sandi pengguna, hasilnya adalah kegagalan upaya kata sandi ...

[sudo] password for ssnow:
Sorry, try again.
[sudo] password for ssnow:
Sorry, try again.

Masalah ini awalnya dilaporkan di https://discussion.fedoraproject.org/t/toolbox-and-root/22123/29 dan saya awalnya berpikir sistem pengguna harus rusak dalam beberapa cara. Itu sampai saya menginstal versi Silverblue kulit mentah yang baru.
IMO, ini mungkin terkait dengan pesan pertama yang saya dapatkan saat memasuki wadah kotak peralatan. Mungkin tidak memetakan pengguna sebagai root dari container.

Komentar yang paling membantu

Apakah ini harus dibuka kembali? Secara definitif masih terjadi dengan 0.0.95. toolbox create tampaknya menempatkan pengguna ke /etc/passwd tamu baik-baik saja, tetapi lupa menyalin entri /etc/group . Sesuatu seperti echo 'martin:x:1000' | sudo tee -a /etc/group dalam wadah memperbaikinya.

Semua 26 komentar

Saya melakukan beberapa pengujian pada Fedora Workstation 32 dan Fedora Workstation 33 (pada mesin virtual) dan saya dapat mengonfirmasi bahwa pada F32 berfungsi dengan baik, tetapi pada F33 saya mendapatkan masalah yang sama.
Jadi, ini adalah masalah dengan Fedora 33 itu sendiri, bukan hanya versi Silverblue .

Setelah beberapa pengujian saya melihat beberapa perbedaan:

  • Versi podman berbeda.

    • F32 : 2.0.2

    • F33 : 2.1.0-dev

  • File /etc/group dan /etc/shadow berbeda.

Di wadah kotak alat di Fedora 33 pengguna tidak memiliki grup sendiri dan tidak ada di grup wheel .
Selain itu, pengguna tidak memiliki entri pada file /etc/shadow dan pengguna root memiliki sandi yang terkunci.

Perbedaan untuk file /etc/group (di dalam wadah) antara Fedora 32 dan Fedora 33 . Nama pengguna untuk pengguna adalah vagrant :

--- f32-image-f33/group 2020-08-14 19:19:38.734363987 +0000
+++ f33-image-f33/group 2020-08-14 19:17:39.018504713 +0000
@@ -8,7 +8,7 @@
 lp:x:7:
 mem:x:8:
 kmem:x:9:
-wheel:x:10:vagrant
+wheel:x:10:
 cdrom:x:11:
 mail:x:12:
 man:x:15:
@@ -26,4 +26,3 @@
 utempter:x:35:
 ssh_keys:x:999:
 tcpdump:x:72:
-vagrant:x:1000:

Perbedaan untuk /etc/shadow :

--- f32-image-f33/shadow    2020-08-14 19:15:25.125242112 +0000
+++ f33-image-f33/shadow    2020-08-14 19:17:11.658920405 +0000
@@ -1,4 +1,4 @@
-root::18488:0:99999:7:::
+root:!locked::0:99999:7:::
 bin:*:18473:0:99999:7:::
 daemon:*:18473:0:99999:7:::
 adm:*:18473:0:99999:7:::
@@ -12,4 +12,3 @@
 ftp:*:18473:0:99999:7:::
 nobody:*:18473:0:99999:7:::
 tcpdump:!!:18481::::::
-vagrant::18488:0:99999:7:::

Masalahnya masih ada di rawhide (F33SB) dengan pengecualian pesan saat memasuki kotak alat (/usr/bin/id: tidak dapat menemukan nama untuk ID grup 1000) tidak lagi muncul.

Saya mengonfirmasi bahwa saya juga melihat kesalahan (/ usr/bin/id: tidak dapat menemukan nama untuk ID grup 1000) jadi saya menghapus gambar fedora-toolbox-33 dan membuat kembali kotak alat tetapi sekarang saya tidak dapat menggunakan perintah sudo . Saya terjebak sekarang.

Saya menindaklanjuti dengan temuan yang saya lakukan kemarin dan saya berhasil membuat sudo berfungsi.

Langkah:

(Semua ini di Fedora Workstation 33 dalam VM)

  1. Buat wadah.
[vagrant@ci-node-33 ~]$ toolbox create
Created container: fedora-toolbox-33
Enter with: toolbox enter
  1. Masuk ke wadah dengan toolbox dan coba perintah sudo :
⬢[vagrant<strong i="18">@toolbox</strong> ~]$ sudo ls

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for vagrant: 

Ini gagal! :kecewa:

  1. Masukkan ke dalam wadah dengan podman :
[vagrant@ci-node-33 ~]$ podman exec -it fedora-toolbox-33 /bin/bash
  1. Karena pengguna tidak memiliki grup yang tepat dan tidak ada di file shadow (seperti yang saya tunjukkan di komentar sebelumnya), saya menghapus dan membuat ulang pengguna, mencoba menggunakan perintah yang sama dan parameter yang dilakukan toolbox (pada perintah init-container ):
# Delete the user
⬢[root<strong i="32">@toolbox</strong> /]# userdel --force vagrant

# Create the user
⬢[root<strong i="33">@toolbox</strong> /]# useradd --home-dir /home/vagrant/ --no-create-home --shell /bin/bash --uid 1000 --groups wheel vagrant

# Check the user groups (this time are OK)
⬢[root<strong i="34">@toolbox</strong> /]# id vagrant
uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant),10(wheel)

# Delete the user password
⬢[root<strong i="35">@toolbox</strong> /]# passwd --delete vagrant
Removing password for user vagrant.
passwd: Note: deleting a password also unlocks the password.
passwd: Success

# Check that the user is at the file /etc/shadow (this is important for PAM authentication and sudo)
⬢[root<strong i="36">@toolbox</strong> /]# grep vagrant /etc/shadow
vagrant::18493:0:99999:7:::

# Logout from the container
⬢[root<strong i="37">@toolbox</strong> /]# exit
[vagrant@ci-node-33 ~]$ 
  1. Masuk ke wadah menggunakan toolbox dan coba perintah sudo :
[vagrant@ci-node-33 ~]$ toolbox enter
⬢[vagrant<strong i="44">@toolbox</strong> vagrant]$ sudo id

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

uid=0(root) gid=0(root) groups=0(root)

Sekarang berhasil! :senyum:

Kesimpulan

Tampaknya ada yang tidak beres pada generasi pengguna, pada perintah init-container (di sekitar sini ).

Terima kasih telah melaporkan ini dan mencoba menemukan pelakunya! Tampaknya Podman di Rawhide mengubah cara menangani opsi --userns=keep-id saat membuat container. Itu membuat sekarang pengguna dan grup. Masalah pertama tampaknya terkait dengan fungsi ini sendiri karena grup pengguna tidak memiliki nama meskipun memiliki GUID yang benar (saya melaporkannya ke hulu: https://github.com/containers/podman/issues/7389).

Bagian lain (harus mengetikkan kata sandi untuk sudo) disebabkan oleh fakta bahwa jalur kode yang ditunjukkan oleh @juanje hanya dipicu jika pengguna saat ini tidak ada dalam wadah. Kode itu menangani pembuatan pengguna, menambahkannya ke grup yang benar dan menghapus kata sandi untuk pengguna dan root. Saya pikir kode dalam perintah init-container perlu direstrukturisasi sedikit untuk dipanggil bahkan kasus seperti itu.

Tampaknya Podman di Rawhide mengubah caranya
itu menangani opsi --userns=keep-id saat membuat
kontainer. Itu membuat sekarang pengguna dan grup. NS
masalah pertama tampaknya terkait dengan fungsi ini
sendiri karena grup pengguna tidak memiliki nama
meskipun memiliki GUID yang benar (saya melaporkan bahwa upstream:
container/podman#7389).

Sepertinya itu tidak benar-benar membuat grup. Jika tidak, Anda akan memiliki nama. Itu hanya membuat pengguna.

Saya ingin tahu apakah itu juga membuat direktori home. Saya harap tidak.

https://github.com/containers/podman/pull/6829 adalah perubahan Podman yang menyinggung.

Ini terjadi pada saya sekarang di Silverblue 32 menggunakan fedora- toolbox: f32 image
versi kotak alat: 0.0.93
versi podman: 2.0.5

Ini terjadi pada saya sekarang di Silverblue 32 menggunakan fedora- toolbox: f32 image
versi kotak alat: 0.0.93
versi podman: 2.0.5

Ya, saya memiliki masalah pada Silverblue 32 sekarang pada setiap contoh kotak alat baru F32. Dengan contoh kotak alat lama, itu masih berfungsi, tetapi tidak dengan kreasi baru. Jadi, apa pun yang dilakukan untuk "memperbaikinya", rusaklah di F32.

Dapat mengkonfirmasi masalah ini pada Fedora 32 SB dengan toolbox 0.0.93 dan podman 2.0.5.

Ini tidak terkait atau terbatas pada Fedora saja, Arch dengan toolbox 0.0.94 dan podman 2.0.5 memiliki masalah yang sama.

Ini terjadi pada saya sekarang di Silverblue 32 menggunakan fedora- toolbox: f32 image
versi kotak alat: 0.0.93
versi podman: 2.0.5

Itu karena Podman 2.0.5 menyelinap ke Fedora 32.

Apakah mungkin menambahkan beberapa tes untuk podman atau kotak alat untuk menangkap regresi seperti ini? Silverblue benar-benar mendorong seseorang untuk menggunakan Toolbox, dan untuk itu terjadi, Toolbox harus dapat diandalkan seperti terminal gnome itu sendiri.

Apakah mungkin untuk menambahkan beberapa tes untuk podman atau kotak peralatan ke
menangkap regresi seperti ini? Silverblue benar-benar mendorong
satu untuk menggunakan Toolbox, dan untuk itu terjadi, Toolbox perlu
untuk dapat diandalkan seperti gnome-terminal itu sendiri.

Ini telah terbukti menjadi perjuangan yang sangat berat untuk membuat tim Podman peduli dengan kompatibilitas mundur atau untuk memeriksa apakah beberapa perubahan merusak Toolbox atau tidak. @HarryMichal secara konsisten mengejar kerusakan dan mendorong pengujian, tetapi kemajuannya lambat.

Apakah mungkin untuk menambahkan beberapa tes untuk podman atau kotak peralatan ke
menangkap regresi seperti ini? Silverblue benar-benar mendorong
satu untuk menggunakan Toolbox, dan untuk itu terjadi, Toolbox perlu
untuk dapat diandalkan seperti gnome-terminal itu sendiri.

Ini telah terbukti menjadi perjuangan yang sangat berat untuk membuat tim Podman peduli dengan kompatibilitas mundur atau untuk memeriksa apakah beberapa perubahan merusak Toolbox atau tidak. @HarryMichal secara konsisten mengejar kerusakan dan mendorong pengujian, tetapi kemajuannya lambat.

Saya kira salah satu cara untuk menghindari masalah ini adalah agar Silverblue memiliki repo rpm terpisah untuk podman dan hanya mengizinkan pembaruan yang lulus uji regresi terhadap kotak alat

Kapan seharusnya mendapatkan pembaruan f32?

Semakin cepat mencapai 3 karma positif :)

Anda dapat melacaknya sendiri -> https://bodhi.fedoraproject.org/updates/FEDORA-2020-306addaac0

Sistem karma ini baru bagi saya, bagaimana cara kerjanya?

Anda akan memerlukan id FAS ( id akun Fedora) untuk masuk ke sistem bodhi dan memberikan suara Anda pada pembaruan. Lihat https://fedoraproject.org/wiki/Bodhi#Karma

Di SilverBlue, dapatkah saya menarik hanya paket yang diberikan dan mengujinya? Tampaknya perlu dibuat ulang untuk menguji sebuah paket. Metode apa pun untuk menguji paket (termasuk wadah, jika mungkin) tanpa perlu menyentuh sistem dasar saya baik-baik saja.

Di SilverBlue, dapatkah saya menarik hanya paket yang diberikan dan mengujinya?
Tampaknya perlu dibuat ulang untuk menguji sebuah paket.
Setiap metode pengujian paket (termasuk wadah,
jika memungkinkan) tanpa perlu menyentuh sistem dasar saya baik-baik saja.

rpm-ostree override replace dan rpm-ostree override reset adalah teman Anda.

Sayangnya, Anda tidak dapat menguji hal-hal seperti Podman dan Toolbox di dalam wadah.

Terima kasih banyak atas solusinya @juanje

# Create the user
⬢[root<strong i="7">@toolbox</strong> /]# useradd --home-dir /home/vagrant/ --no-create-home --shell /bin/bash --uid 1000 --groups wheel vagrant

Satu-satunya perubahan yang saya buat untuk pengguna saya di host Silverblue adalah membuat direktori home /var/home/<user>

Apakah ini harus dibuka kembali? Secara definitif masih terjadi dengan 0.0.95. toolbox create tampaknya menempatkan pengguna ke /etc/passwd tamu baik-baik saja, tetapi lupa menyalin entri /etc/group . Sesuatu seperti echo 'martin:x:1000' | sudo tee -a /etc/group dalam wadah memperbaikinya.

Telah mencatat pengalaman yang sama di https://github.com/containers/toolbox/issues/549#issuecomment -685740230 -- berkomentar di sana karena ini (biasanya) tidak merusak Sudo.

Secara definitif masih terjadi dengan 0.0.95. pembuatan kotak alat tampaknya
masukkan pengguna ke /etc/passwd tamu baik-baik saja, tetapi lupakan
menyalin entri /etc/group. Sesuatu seperti
echo ' martin:x :1000' | Sudo tee -a /etc/group dalam wadah memperbaikinya.

Apa yang masih terjadi? Maksud Anda, Anda melihat kesalahan ini saat memasukkan wadah:

/usr/bin/id: cannot find name for group ID 1000

Itu https://github.com/containers/podman/issues/7389

Saya menghindari menambahkan solusi serupa ke Toolbox itu sendiri karena itu tidak akan memperhitungkan hal-hal seperti /etc/login.defs .

Atau apakah saya salah paham?

@debarshiray : Terima kasih atas penunjuk masalah podman! Itu terlihat seperti akar penyebabnya memang. Sementara itu, ada solusi di atas yang cukup mudah.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat