
問題
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
。)
しかし:
ログイン シェルを持たないユーザーを持つことのポイントは、そのユーザーがセッション開始時に直接ログインするか、別のユーザー アカウント経由でログインするかに関係なく、いかなる方法でもログインできないことです。奇妙なことに、それがまさにあなたが達成しようとしていることです。
そのユーザーにアクセスできるようにするには (ログイン シェルがある場合、上記のようにプロファイルに切り替えることで)、通常は
sudo
権限が必要になるか、少なくともsu
cmd を使用できる必要があります...
答え2
私はこれを見つけましたイヴァンレオンツServer Fault と ID ではうまくいきました:
特定のシェルを実行するには、suに-sスイッチを使用します。
su -s /bin/bash -c '/path/to/your/script' testuser