- Можно ли создать пользователя для этих соответствующих UID / GID на хосте, чтобы иметь более значимый вывод для ls и друзей?
Да, это нормально. Однако вы должны убедиться, что такой пользователь не имеет никаких прав на что-либо в хост-системе:
- Запрещенный доступ или пароль,
- Нет используемой оболочки входа в систему,
- Нет доступного для записи домашнего каталога.
Также не создавайте дубликатов в ваших именах пользователей.
Вот пример сценария, использующего гостевые файлы
/ etc / passwd
и/ etc / group
для создания соответствующих пользователей в хост-системе.Все имена начинаются с имени контейнера, и все идентификаторы увеличиваются с использованием данного значения для соответствия UID контейнера:#! /bin/sh # Path to guest's `/etc' directory. guest_etc=/var/lib/lxc/mycontainer/rootfs/etc # Guest's name, used as login prefix and inside GECOS field. guest_name=mycontainer # Increment to be applied to UIDs and GIDs (= range start). uid_incr=100000 gid_incr=$uid_incr guest_passwd=${guest_etc}/passwd guest_group=${guest_etc}/group exec <$guest_group while IFS=":" read name pass gid null; do gid_new=$( expr $gid + $gid_incr ) if ! getent group $gid_new >/dev/null; then addgroup --system --gid $gid_new "${guest_name}_${name}" fi done exec <$guest_passwd while IFS=":" read login pass uid gid gecos null; do uid_new=$( expr $uid + $uid_incr ) gid_new=$( expr $gid + $gid_incr ) if ! getent passwd $uid_new >/dev/null; then adduser --system --home /nonexistent --no-create-home \ --shell /bin/nologin --uid $uid_new --gid $gid_new \ --gecos "\"$guest_name container user (${gecos})\"" \ "${guest_name}_${login}" fi done
Предупреждения относительно недоступного домашнего каталога являются нормальными и ожидаемыми: это фактическая цель
/ nonexistent
не существует.
- есть ли способ сделать эти файлы / папки доступными для пользователя хоста , который "владеет" пользователями, то есть john в нашем случае? И если да, то является ли единственный разумный метод для создания группы, совместно используемой этими действительными пользователями внутри подчиненного диапазона и пользователями "владельцем", и соответствующим образом установить разрешения ? Ну или ACL, очевидно.
Это действительно стоит отдельного вопроса, ИМО.
Поскольку контент контейнера принадлежит другим UID, чем UID владельца контейнера, то он недоступен для него. Я могу представить себе исключение из этого правила для субпользователей, но в настоящее время я не знаю ни одного из них (я создал связанный вопрос несколько раз назад, но ответа пока нет).
Файлы
/ etc / subuid
и/ etc / subgid
в настоящее время используются толькоnewuidmap
(1), чтобы разрешить или запретить переключение с одного UID. / GID другому процессу. Это не дает владельцу диапазона никаких других прав.Следовательно, решение такой проблемы должно разрабатываться в индивидуальном порядке. Однако будьте осторожны с идеей ACL: допустим, вы поместили некоторые ACL в файлы контейнера, чтобы UID вашего хоста 1000 мог их прочитать, это означает, что пользователь контейнера с UID контейнера 1000 также будет иметь такой же уровень привилегий ...
В качестве альтернативы вы можете подписать драйверы ключом MOK
Полная запись здесь
Таким образом, вы можете оставить включенной безопасную загрузку!
Написание основы всего этого, от загрузки репозитория до завершения, будет выглядеть так:
(Обратите внимание, что я подписал больше модулей, чем мне, вероятно, нужно.Я не уверен, какие из них управляют тем, что, кроме rtl8822be, было моим драйвером, поэтому я подписал их все без rtl впереди на всякий случай.)
#Generate a new MOK key
sudo update-secureboot-policy --new-key
#Enroll key into firmware
sudo update-secureboot-policy --enroll-key
Прочтите инструкции из ключа регистрации. Перезагрузите компьютер и следуйте им.
Следующая часть такая же, как и раньше:
sudo apt install build-essential git
git clone -b extended https://github.com/lwfinger/rtlwifi_new.git
cd rtlwifi_new
make
Самое интересное:
sudo kmodsign sha512 \
/var/lib/shim-signed/mok/MOK.priv \
/var/lib/shim-signed/mok/MOK.der \
rtl_pci.ko
sudo kmodsign sha512 \
/var/lib/shim-signed/mok/MOK.priv \
/var/lib/shim-signed/mok/MOK.der \
rtlwifi.ko
sudo kmodsign sha512 \
/var/lib/shim-signed/mok/MOK.priv \
/var/lib/shim-signed/mok/MOK.der \
rtl8822be/rtl8822be.ko
После этого заканчиваем так же
sudo make install
sudo modprobe rtl8822be
Вуаля, Wi-Fi работает.
После новой установки Linux Mint мой Wi-Fi не работал из-за отсутствующего драйвера Realtek RTL8822BE.
Для установки мне пришлось выполнить следующие действия:
sudo apt install build-essential git
git clone -b extended https://github.com/lwfinger/rtlwifi_new.git
cd rtlwifi_new
make
sudo make install
sudo modprobe rtl8822be
Обратите внимание, что я клонирую расширенную ветку из-за моей версии ядра 4.15, как указал @Freddy.
После sudo modprobe rtl8822be
я получил следующую ошибку:
modprobe: ERROR: could not insert 'rtl8822be': Required key not available
Затем мне нужно было отключить безопасную загрузку. Этого можно добиться разными способами, как указано в этих ссылках . Но что сработало для меня, так это этот ответ . Вы должны следовать каждому шагу этих ответов, чтобы получить правильные результаты.
Наконец я запустил sudo mobprobe rtl882be
и получил этот вывод на консоли:
modprobe: ERROR: could not insert 'rtl8822be': Exec format error
Потом я понял, что мой вайфай уже работает.