Шаги ==== Пример с пользователями root, test. Создать ссылку от имени root и установить флаг suid: # busybox ln -s "$(busybox which busybox)" /home/test/su # busybox chmod +s /home/test/su От имени пользователя test воспользоваться созданной ссылкой: # su - test -> $ ./su - -c "busybox whoami" По запросу ввести пароль root. Фактический результат ===================== $ ./su - -c "busybox whoami" > Password: > su: bad salt Ожидаемый результат =================== Должен быть вывод: > root Дополнительно ============= Предполагаю, что в связи с отсутствием hash+salt в данных файлах вход по паролю в системе (по умолчанию) осуществляется каким-то другим способом, который не поддерживается busybox? https://busybox.net/FAQ.html#:~:text=well%20documented%20elsewhere.-,Encrypted%20Passwords,-Password%20fields%20in # cat /etc/passwd | grep -E '(root|test)' > root:x:0:0:System Administrator:/root:/bin/bash > test:x:1000:1000::/home/test:/bin/bash # cat /etc/shadow | grep -E '(root|test)' > root:x:20137:::::: Воспроизводимость ================= Воспроизводится на виртуальных машинах: [p11+377443] [sisyphus] ALT Server 11.0 beta20250213 x86_64 busybox-1.37.0-alt1.x86_64 [p11] ALT Workstation 11.0 beta20250213 x86_64 busybox-1.36.1-alt1.x86_64
По этой же причине, думаю, не работает и: # busybox adduser busyuser passwd: updating all authentication tokens for user busyuser. passwd: User not known to the underlying authentication module.
1. su из пользователя не должен работать, следовательно багрепорт про su уже не релевантен, так как этот сценарий заведомо нельзя воспроизвести. 2. Система авторизации в busybox не совместима с нашей, устаревшая, но стандартная (и совместима сама с собой). Она подходит только для организации примитивной авторизации в минимальном окружении навроде initrd. 3. Нет никакой практической необходимости делать её совместимой с полной системой - для этого есть полная система. 4. busybox это не альтернатива полной системе, это минимальный функционал для ограниченного окружения.