Бесконтактный докер + судо - PullRequest
0 голосов
/ 02 октября 2018

Я проанализировал бездонные изображения Google, чтобы посмотреть, как они создаются, и я хотел бы их использовать, но моя компания хочет, чтобы изображения были созданы самими.

Похоже, что Google build glibc, libsslи openssl в их базовых изображениях, поэтому я сделал то же самое.Я добавил статически связанные busybox, curl и sudo для тестирования.Однако, когда я вхожу в систему как мой пользователь, sudo сообщает, что не может читать библиотеки, существующие в системе.Сначала я подумал, что это связано со средой root, потому что setuid, но passwd тоже setuid и работает.

Вот некоторые результаты:

Distroless ? [gdanko@5bd77574a894]:~ $ ldd /usr/bin/sudo
linux-vdso.so.1 (0x00007fff5e728000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f4bf61a1000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f4bf5f6a000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4bf5d4c000)
libc.so.6 => /lib64/libc.so.6 (0x00007f4bf59b3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4bf6621000)

Distroless ? [gdanko@5bd77574a894]:~ $ ls -l /lib64/libutil.so.1
lrwxrwxrwx    1 root     root            15 Oct  2 17:45 
/lib64/libutil.so.1 -> libutil-2.25.so

Distroless ? [gdanko@5bd77574a894]:~ $ ls -l /lib64/libcrypt.so.1
lrwxrwxrwx    1 root     root            16 Oct  2 17:45 
/lib64/libcrypt.so.1 -> libcrypt-2.25.so

Distroless ? [gdanko@5bd77574a894]:~ $ ls -l /lib64/libpthread.so.0
lrwxrwxrwx    1 root     root            18 Oct  2 17:45 
/lib64/libpthread.so.0 -> libpthread-2.25.so

Distroless ? [gdanko@5bd77574a894]:~ $ ls -l /lib64/libc.so.6
lrwxrwxrwx    1 root     root            12 Oct  2 17:45 
/lib64/libc.so.6 -> libc-2.25.so

Distroless ? [gdanko@5bd77574a894]:~ $ sudo
sudo: error while loading shared libraries: libutil.so.1: cannot open 
shared object file: No such file or directory

Если я su - root и выполнить sudoэто работает

Distroless ? [gdanko@5bd77574a894]:~ $ su - root
Password: 
Distroless ? [root@5bd77574a894]:~ # sudo
usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...

Мне было интересно, было ли это в том, как Google построил glibc, но я не мог найти ничего бросающегося в глаза.

Другое дело, если я использую базу Google для моего изображенияи скопировать мое sudo, busybox работает в контейнере.Я пробовал несколько разных вещей, пытаясь решить эту проблему, но я в растерянности.Кто-нибудь может увидеть что-то, чего мне не хватает ??

...