Условно разблокировать пароль, в файловой системе только для чтения

Я создаю встроенную систему, в которую обычно нельзя войти, но нам нужен способ, чтобы разработчики могли работать для отладки и разработки. Корневые файлы обычно доступны только для чтения (но могут быть перемонтированы для чтения-записи).

Схема, на которую я смотрю, – это блокировка пароля root ( passwd -l ). Если существует специальный файл (на съемном носителе), откройте пароль, чтобы войти в систему. После перезагрузки, если специальный файл не существует, пароль снова заблокируется.

Специальный файл недокументирован и не будет использоваться конечными пользователями. Разработчики обычно создают этот файл, чтобы они могли входить в систему по своему усмотрению. Другой способ входа в систему – это ssh-клиент, который открывает порт на один из наших серверов, что позволяет нам использовать ssh с ключом на основе auth. Для развития должен быть способ войти без сети.

Похоже, что самый простой способ реализовать это примерно так:

 if passwd_is_locked and enable_login_exists: remount_rw() unlock_passwd() remount_ro() elif not passwd_is_locked and not enable_login_exists: remount_rw() lock_passwd() remount_ro() else: pass 

Мне не нравится перезагрузка и изменение файлов; Я бы предпочел, чтобы у меня была переходная альтернативная конфигурация (например, что-то в /tmp ).

Я немного впился в команду passwd . Похоже, что он поддерживает несколько источников для некоторых данных ( --repository ) через систему имен служб имен ( nsswitch.conf ). Я не уверен, что это жизнеспособный вариант, особенно для учетной записи root, потому что кажется, что учетная запись root всегда должна возвращаться к обычному файлу /etc/shadow . Я признаю, что я не очень сестра, поэтому, возможно, я просто не понимаю.

passwd также есть опция --root . Я смог заставить это работать, просто выполняя cp -a /etc /lib /tmp && passwd --root /tmp который редактирует файлы в /tmp . Я не уверен, могу ли я сделать что-то полезное с этим.

Если я изменил /etc/passwd и другие на символические ссылки на некоторую область записи, и, похоже, это работает, если я отредактирую файлы вручную, но я не могу использовать команду passwd .

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

One Solution collect form web for “Условно разблокировать пароль, в файловой системе только для чтения”

В итоге я использовал что-то вроде (внутри initrd):

 if is_dev_mode ; then chroot $ROOTFS_MOUNT /usr/bin/passwd --delete root else chroot $ROOTFS_MOUNT /usr/bin/passwd --lock root fi sync 

Это происходит до того, как rootfs будет обновлен только для чтения. Мне это не очень нравится, но я думаю, что это лучше, чем использование еще одного unionfs (их уже несколько). В passwd initrd нет подходящих опций, которые делают основные ОС, но chroot работает так же хорошо.

  • Как я могу получить доступ на запись к моим USB-накопителям?
  • Отметьте файловую систему ext4 как доступную только для чтения
  • Ошибка файловой системы только для чтения при доступе к файлам на Ubuntu
  • mount: warning: / etc / mtab не доступен для записи (например, файловая система только для чтения)
  • Как NFS делится «RO» для всех пользователей и «RW» на некоторые IP-адреса
  • USB-накопитель доступен только для чтения в GNOME / nautilus?
  • Что может привести к повторной перестановке моего / var-раздела во время выполнения?
  • Как обеспечить, чтобы файл образа диска NTFS не записывался при установке?
  • Сделать readonly / etc доступным для записи
  • Как удалить файл в формате QNX4, когда CF-карта смонтирована как доступная только для чтения в Linux?
  • systemd: запуск сценария при завершении работы после того, как файловые системы установлены только для чтения
  • Interesting Posts

    Монтажная странность

    bash – команда не найдена

    В чем разница между установкой пределов открытых файлов в файле /etc/sysctl.conf vs /etc/security/limits.conf?

    Какой самый безопасный способ получить права root: sudo, su или login?

    Сделайте копию аудиовыхода в файл

    Идиоматический метод bash для запуска необязательного действия без побочных эффектов на код выхода

    замените шаблон, найденный с номером плюс 1 в той же строке

    SSH для машин в новой подсети – таймаут соединения

    Как Unix реализует разрешения на файлы?

    почему такие программы, как su, доступ к / etc / shadow

    Получение размера блока через df vs dumpe2fs

    vagrant user, который может переключиться на любого пользователя без пароля во время выполнения команды «sudo su – <username>», но другие пользователи не

    Как избежать / usr / bin / env помечается в журналах systemd как исполняемый файл

    Серьезные проблемы с поиском в Radare2

    Почему GRUB2 помнит только 4 бита?

    Linux и Unix - лучшая ОС в мире.