Как мне подключиться к пользователю, у которого нет оболочки входа?

Как мне подключиться к пользователю, у которого нет оболочки входа?

Проблема

В 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.)

Однако:

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

  2. чтобы получить доступ к этому пользователю (при условии, что у него есть оболочка входа, переключившись на его профиль, как показано выше, вам, как правило, понадобятся sudoпривилегии или, по крайней мере, возможность использовать sucmd...

решение2

Я нашел это изivanleonczв Server Fault и id у меня сработали:

Вы можете использовать ключ -s для su, чтобы запустить определенную оболочку.

su -s /bin/bash -c '/path/to/your/script' testuser

Связанный контент