
Проблема
В Debian 10 я хочу создать пользователя, который не сможет войти напрямую. Доступ к пользователю должен быть возможен только с помощью двоичного файла su
. В моей настройке Ubuntu 18.04 я сделал именно это, и это сработало как по маслу, но в Debian 10 я не могу этого сделать.
Намекать
Пользователь, который сможет войти в систему, не будет иметь разрешения на использование sudo
.
Что я наделал
Я настроил пользователя с оболочкой по умолчанию /usr/sbin/nologin
. Но при попытке доступа к этому пользователю su --shell=/bin/bash user
я не могу этого сделать.
Минимальный пример
# useradd --shell /usr/sbin/nologin locked
# passwd locked
Enter new UNIX password: *secret*
Retype new UNIX password: *secret*
passwd: password updated successfully
$ su --shell /bin/bash locked
Password: *secret*
This account is currently not available.
Почему это больше не работает в Debian?
Редактировать 1:
Вывод /etc/shells
:
$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/zsh
/usr/bin/zsh
Редактировать 2:
Немного более подробный ответ о том, чего я хочу добиться:
Я пытаюсь создать пользователя (пользователь1), который может войти в компьютер либо через SSH, либо с помощью монитора и клавиатуры. Этопользователь1Пользователь должен иметь ограниченные права. Одно из таких ограничений заключается в том, что он не может использовать sudo
приложение, ему просто не разрешено это делать.
Тогда у меня есть второй пользователь (пользователь2), который сможет использовать приложение sudo для выполнения некоторых задач по настройке, таких как изменение сетевых настроек или некоторых других вещей. Этопользователь2должен быть заблокирован для входа по умолчанию. Так что нет входа по SSH и (больше относящийся к моей проблеме) нет входа по монитору и клавиатуре.
--> Когда кто-то хочет выполнить какую-то задачу, он должен войти в систему как ограниченный пользовательпользователь1, измените пользователя напользователь2и тогда ему разрешается изменить какую-то конфигурацию или что-то в этом роде.
Это все, чего я хочу добиться. Есть некоторые, более тонкие детали, что разрешено или не разрешено пользователям делать. Но чтобы описать это как можно проще, я просто объяснил это с помощью `sudo.
решение1
Если у вашего пользователя была оболочка входа, вам нужно будет ввести cmd как: su --shell=/bin/bash locked
или sudo -u locked /bin/bash
,при условии, что оболочка по умолчанию, указанная для целевого пользователя, указана в/etc/shell
.
(Обратите внимание, что после длинной опции стоит знак равенства --shell
.)
Однако:
смысл наличия пользователя без оболочки входа в систему именно в том, что этот пользователь не может войти в систему каким-либо образом, будь то напрямую при запуске сеанса или через другую учетную запись пользователя. Как ни странно, именно этого вы и пытаетесь добиться.
чтобы получить доступ к этому пользователю (при условии, что у него есть оболочка входа, переключившись на его профиль, как показано выше, вам, как правило, понадобятся
sudo
привилегии или, по крайней мере, возможность использоватьsu
cmd...
решение2
Я нашел это изivanleonczв Server Fault и id у меня сработали:
Вы можете использовать ключ -s для su, чтобы запустить определенную оболочку.
su -s /bin/bash -c '/path/to/your/script' testuser