ログインシェルのないユーザーに su するにはどうすればいいですか?

ログインシェルのないユーザーに su するにはどうすればいいですか?

問題

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ユーザーは制限された権限を持つ必要があります。この制限の 1 つは、ユーザーがアプリケーションを使用できないことでありsudo、単に使用が許可されていないということです。

次に2人目のユーザー(ユーザー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

私はこれを見つけましたイヴァンレオンツServer Fault と ID ではうまくいきました:

特定のシェルを実行するには、suに-sスイッチを使用します。

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

関連情報