ログインシェルなしでユーザーにどのように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を介したログインは不可能であり(より多くの問題は)、モニターとキーボードを介したログインも不可能です。

-->特定のタスクを実行するには、制限されたIDでログインする必要があります。ユーザー1、ユーザーを次に変更します。ユーザー2その後、彼はいくつかの構成や同様のものを変更することができました。

これが私が達成したいすべてです。ユーザーが実行できるアクションと許可されていないアクションに関するより詳細な詳細があります。しかし、できるだけ簡単に説明するために「sudo」を使って簡単に説明します。

ベストアンサー1

ユーザーにログインシェルがある場合su --shell=/bin/bash locked、cmd:またはに入力する必要がありますsudo -u locked /bin/bashターゲットユーザーに指定されたデフォルトシェルが次のリストにリストされている場合/etc/shell
(長いオプションの後には等号があります--shell。)

しかし:

  1. ログインシェルを持たないユーザーの要点は、ユーザーがセッションの開始時に直接ログインしたり、他のユーザーアカウントを介して何らかの方法でログインできないことです。奇妙なことに、これはあなたが達成したいものです。

  2. そのユーザーにアクセスするには(ログインシェルがあるとし、プロファイルに切り替えて(上記のように))、通常はsudo権限が必要な場合、または少なくともcmdを使用する能力が必要ですsu

おすすめ記事