bash как дефолтный шелл

Используем пакеты, расширяющие возможности оборудования
ZigZag
Сообщения: 90
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 20 фев 2018, 01:14

В принципе вопрос уже решён, но хочу поинтересоваться - то, что после установки bash'a он не не прописывается в /opt/etc/shells так и задумано ? После замены shell'a в /opt/etc/passwd по текущему паролю dropbear даёт отлуп именно из-за отсутствия записи в /opt/etc/shells, а в syslog'e при этом проскакивает

Код: Выделить всё

02-20-2018	07:50:35	System0.Warning	192.168.0.1	Feb 20 07:49:27 dropbear[1165]: User 'root' has invalid shell, rejected
02-20-2018	07:50:35	System0.Warning	192.168.0.1	Feb 20 07:49:27 dropbear[1165]: User 'root' has invalid shell, rejected
Keenetic Omni II [v2.11.C.0.0-2]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1453
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 20 фев 2018, 09:26

ZigZag писал(а):Источник цитаты то, что после установки bash'a он не не прописывается в /opt/etc/shells так и задумано ?

В зависимости от установки (alt или std) используется или /opt/etc/shells или /etc/shells. Поэтому не прописывается и нужно это делать ручками. После этого все работает. Ничего не проскакивает! Запись в /etc/shells (если прошивка позволяет) временная, нужно восстанавливать после перезагрузки.
Примеры с fish и bash на разных роутерах

Код: Выделить всё

# cat /opt/etc/shells
/opt/bin/sh
/opt/bin/ash
/opt/bin/fish
/bin/sh

и

Код: Выделить всё

 # cat /opt/etc/shells
/bin/sh
/bin/ash
/opt/bin/sh
/opt/bin/ash
/opt/bin/bash

kaztost
Сообщения: 110
Зарегистрирован: 16 июл 2017, 23:29

Сообщение kaztost » 20 фев 2018, 12:54

В busybox есть выключенный апплет add-shells, через который можно легализовать устанавливаемые шеллы в их post-install скриптах (не важно, /opt/etc/shells - ссылка или реальный файл). Естественно, в коде busybox надо пропатчить файл add-remove-shell.c

Код: Выделить всё

-#define SHELLS_FILE "/etc/shells"
+#define SHELLS_FILE "/opt/etc/shells"

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1453
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 20 фев 2018, 13:23

Проблема в том, что /etc/shells может и отсутствовать (например, в tomato-usb) или быть RO, а на него ссылка.
Все "прошивочнозависиые" моменты даны на откуп пользователям.

kaztost
Сообщения: 110
Зарегистрирован: 16 июл 2017, 23:29

Сообщение kaztost » 20 фев 2018, 14:16

Zyxmon писал(а):Источник цитаты Все "прошивочнозависиые" моменты даны на откуп пользователям.

Как я понимаю в этом случае Entware-3x устанавливается альтернативно. То есть в этом случае /opt/etc/shells должен быть реальным файлом. А если установка стандартная - устанавливается ссылка /opt/etc/shells -> /etc/shells. Glibc на /opt/etc/shells уже пропатчена. Поэтому, если апплет add-shells добавлять, то его тоже надо пропатчить, что он работал при любом способе установки.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1453
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 20 фев 2018, 15:16

kaztost писал(а):Источник цитаты что он работал при любом способе установки.

Есть варианты (описаны выше) когда не будет работать.

ZigZag
Сообщения: 90
Зарегистрирован: 28 окт 2015, 03:43

Сообщение ZigZag » 20 фев 2018, 16:36

Zyxmon, ну запилить то лишним не будет, разве нет ? Если ro - не пройдёт, если rw - юзеру будет меньше геммороя.
Keenetic Omni II [v2.11.C.0.0-2]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1453
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 20 фев 2018, 17:01

В openwrt (там всегда можно) делают по простому так - https://github.com/openwrt/packages/blo ... kefile#L60

kaztost
Сообщения: 110
Зарегистрирован: 16 июл 2017, 23:29

Сообщение kaztost » 20 фев 2018, 18:16

Ага, и после десятка переустановок bash в файле окажется десяток башей и десяток рбашей. Правильный путь - add-shells или уж

Код: Выделить всё

if [ -z $(grep -x /opt/bin/bash /opt/etc/shells) ]; then echo "/opt/bin/bash" >> /opt/etc/shells; fi

Правда даже последний вариант с echo может натворить дел, если пользователь уже залезал в shells ручками и удалил последнюю пустую строку файла. А add-shell вроде это должен учитывать.
ZigZag писал(а):Источник цитаты юзеру будет меньше геммороя.

Ну да, чем меньше ручной работы в файлах, относящихся к авторизации, тем меньше граблей.


Вернуться в «Entware/Qnapware/Optware/Zyxware - обсуждаем репозитории пакетов»

Кто сейчас на конференции

Всего 2 посетителя :: 0 зарегистрированных, 0 скрытых и 2 гостя (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (121) здесь было 18 май 2016, 18:19

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя