Intereting Posts
Пересылка порта запроса ssh с глобального IP на определенный локальный IP-адрес Как создать функцию, которая может сортировать массив в bash? Redhat 7.1 Udev Изменяет правила SYMLINK + И Имя Почему не работает этот нераспространен? Как я могу создать и установить пакет и его зависимости от источника с помощью apt? Как переключается переключатель -name в GNU, когда он нацелен на каталог и его содержимое? Игнорировать изменения пробелов во всех командах git Не удается ssh на другой компьютер, но может пинговать его? С помощью команды «cat» Linux, как показать только определенные строки по числу обратный порядок абзацев в файле Почему монитор остается включенным, когда включен DPMS? Как контролировать блокировку / разблокировку экрана в Ubuntu 14.04 kernel: FS-Cache: обнаружены дубликаты cookie – что это? Каковы хорошие утилиты организации документов? Как избежать использования 'ssh-add ~ / .ssh / id_rsa' для каждого нажатия на репозиторий github?

chroot не работает с –userspec, когда chroot – i686

У меня проблема с chroot

Я работаю на Arch Linux x86_64.

У меня есть 64-битный chroot и 32-битный chroot. Они идентичны, за исключением того, что один из них 32 бит, а один – 64 бит.

Я могу ввести любой из них, используя chroot /path/to/chroot . Нет проблем.

Если я хочу сделать это как конкретный пользователь, команда:

 chroot --userspec=user:group /path/to/chroot 

Это также отлично подходит для 64-битного chroot. Однако это не удается для 32-битного chroot. Он не работает со статусом 125 и chroot: invalid user сообщения chroot: invalid user

Кроме того, chroot --userspec=uid:gid /path/to/chroot отлично работает как в 32 и 64-битных chroots ( uid и gid – это числовые идентификаторы требуемого пользователя и группы).

Я не знаю, делаю ли я что-то неправильно. есть ли кто-нибудь, у кого есть 32-битный chroot, и может ли это быть воспроизведено выше?

Все команды выдаются как root. Пользователь и группа, используемые для аргумента userspec, должны быть определены внутри chroot.

Или, если я что-то пропустил, я был бы рад узнать, где я ошибаюсь.

Обновление: я использую для этого проблему. Если у $user есть user:group я хочу (например, john:users ), я делаю это:

 u=$(echo $user | awk -F ":" '{print $1}') g=$(echo $user | awk -F ":" '{print $2}') uid=$(grep $u /opt/chroot32/etc/passwd | awk -F ":" '{print $3}') gid=$(grep $g /opt/chroot32/etc/group | awk -F ":" '{print $3}') echo "Using $uid:$gid in place of $user" chroot --userspec="$uid:$gid" /opt/chroot32 

Это работает – он ищет желаемого user:group внутри passwd и групповых файлов chroot, а затем использует для chroot. И вышеупомянутое обходное решение не требуется при доступе к 64-битовому chroot.

Вы не можете ввести chroot с именем пользователя, которое не известно целевой среде chroot. Скопируйте все необходимые файлы для аутентификации пользователя в каждый chroot: /etc/passwd , /etc/shadow , /etc/nsswitch.conf и, в конечном итоге, все файлы в /etc/pam.d/* . я