Рейтинг: 5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

/etc/shells — файл разрешённых оболочек для входа пользователя в систему linux

При создании нового пользователя в Debian (или другой linux-системе) можно задать ему разные системные оболочки, которые будут обслуживать его при правильном вводе логина и пароля в системе. Для этого нужно её указать в шаблоне создания пользователя или ввести явно при создании нового пользователя командой useradd -s (см. подробнее по первой ссылке в этой статье). Всё это хорошо, но некоторые системные оболочки не прописаны в системе и для того, чтобы ими можно было пользоваться, для начала их нужно занести в систему.



/etc/shells — файл разрешённых оболочек для входа пользователя в операционную систему Debian

Итак, например, вы создаёте ftp-пользователя, которому не обязательно иметь shell-доступ в систему и прописываете ему оболочку /bin/false так, чтобы он мог пользоваться только командами fto-протокола, но не мог ничего больше на сервере. Но при попытке зайти на сервер вылетает ошибка. Заходим в логи ftp-сервера и видим запись:

FTP session opened.
USER tester (Login failed): Invalid shell: '/bin/false'

То есть система не может распознать shell-оболочку и рвёт соединение с пользователем.

Список всех разрешённых в системе shell-оболочек находится в файле /etc/shells.

Исходный /etc/shells

Посмотрим содержимое файла /etc/shells:

root@server:~# cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

Действительно, оболочки /bin/false, и теперь не удивительно, что сервер не даёт пользователю с этим shell зайти в систему.

Добавление новой shell-оболочки в системный файл /etc/shells

Найдя причину ошибки, исправить её не составит труда. Либо ручками, либо командой в консоли:

root@server:~# echo '/bin/false' >> /etc/shells

добавим ещё одну shell-оболочку /bin/false.

Резюме

В конечном итоге, когда файл /etc/shells выглядит так:

root@serber:~# cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/false

(см.последнюю строчку), пользователь нормально входит в систему и может работать в ней по протоколу ftp, пользуясь тем набором команд, который позволет ему его клиент и ваш ftp-сервер. Ура!

Заберите ссылку на статью к себе, чтобы потом легко её найти ;)

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )

Войдите чтобы комментировать