助け合いフォーラム

LinuC

LinuC Lv1-102(Ver10.0)
問題ID : 15721
問題を開く
対話的ログインを禁止する方法として、最も適切なコマンドを選べ。(2つ選択)

この問題はプレミアムコンテンツです。

上に戻る

usermod -L は対話的ログインは禁止されないのか

公開日 2024/03/03

対話的ログインを禁止する方法、というこの問題の解説に対し
usermod -L hoge2
は、アカウントがロックされてしまうため不正解とありますが
アカウントがロックされたら対話的ログインもできなくなるから
正解だと思ったのですが、違うのでしょうか。

それとも、アカウントがロックされても普通に対話的ログインできてしまうということでしょうか?
(だったら何のためのアカウントロックなのでしょうか)

他のLinuxやLinucの解説サイトではusermod -L が対話的ログインを禁止する方法として
挙げられていませんか?

2024/03/05 13:07

ログインシェルに /bin/false , /sbin/nologin を設定した場合、
対話的ログインは出来なくなりますが、ユーザーアカウント自体は生きています。
システムに対話的ログインをしてシェルを使う必要は無いが何らかのサービスは利用する、という状況で使うケースが想定されます。
例えば、FTPサーバーやメールサーバーにクライアントソフトを用いて接続する等。
つまりシェルを使わせたくない場合に設定する、という解釈になるのかなと思いました。

usermod -L
この場合アカウント自体がロックされてしまうため、上記ケースを含めて全てが制限されてしまいます。

/bin/false , /sbin/nologin
をログインシェルに設定したアカウントを用意して "su -" や ssh によるログインを試してみました。
アカウントのパスワード有無で若干挙動が違いましたが、概ね想定通りかなという印象です。
クライアントソフトを用いての動作は未確認なので、時間があれば調べてみてもいいかもしれません。


コメント

この返信に対して
コメントを記入できます

2024/03/05 13:15

ご質問の

usermod -L は対話的ログインは禁止されないのか

ですが、ログインは禁止されますが、対話的ログインというシェルの動作は禁止されていませんので
誤答になってしまうのかなと思いました。


コメント

m miki_y

2024/03/05 23:47

2件もご返信いただきありがとうございます。 そうなのですね。あるユーザに対し対話的にログインさせることを禁止させる方法を問うているのではなく対話的ログインという機能自体を禁止させる方法と解釈すべし、ということですかね。 ただ、正解の2つの選択肢の方も、どちらもユーザ名を引数に取っていて、対象のユーザのログインだけを禁止する方法が正解とされているように見えました。 もともと、 複数サイトでみても、「usermod -L ユーザ」の挙動の説明として、だいたい「アカウントのロック」「パスワードのロック」「ログインの禁止」のいずれかの説明となっていて、対話的/非対話的ログインのどちらが(どちらも?)可能なのかがはっきり書かれたサイトが見つけられませんでした。 また、もしusermod -Lでも対話的ログインはできるのだとすると、 https://linuc.org/study/samples/318/ このLPI-Japanのサイトの問題で「既存ユーザのパスワードをロックして一時的に利用不可にする」コマンドの正解が usermod -L となってまして、 一時的に利用不可する手段のわりに、対話的ログインは普通にできてしまうのも違和感がありまして、、 実際に実験してみるのが早いのかもしれませんね。。。

m miki_y

2024/03/06 00:00

連投になりますが、ほかのサイトの例ですと https://note.com/goldnanoparticle/n/ncfe49f22a215 ここでは、usermod -L を「対話的」ログインを禁止する方法の例として挙げているように見えますね。 最初にご回答いただいているように、対話的ログインだけでなくその他のことまでできなくなってしまう、という点で不適切ということなのですかね。 それはそれで問題として意地悪すぎますね。 それであれば「対話的ログイン"のみ"を禁止する方法は?」といった書き方にしてほしいところです。実際にping-tの他の問題で、問題文で「のみ」と限定していてそれ以上のことまでできてしまう選択肢をそういう理由で不正解としている問題がありました。

D Detta360

2024/03/06 01:05

>ただ、正解の2つの選択肢の方も、どちらもユーザ名を引数に取っていて、 >対象のユーザのログインだけを禁止する方法が正解とされているように見えました。 ・usermod -s /bin/false hoge2 ・chsh -s /sbin/nologin hoge2 上記コマンドの内容としては hoge2 のログインシェルを変更するものとなりますので、「ログインを禁止する」というよりは、「シェルを介しての対話的ログインを禁止する」ということになるかと思います。 >複数サイトでみても、「usermod -L ユーザ」の挙動の説明として、だいたい >「アカウントのロック」「パスワードのロック」「ログインの禁止」のいずれかの説明となっていて その説明は間違いではないです。 usermod -L を実行後に getent shadow にて該当ユーザーの項目を確認すると、パスワード欄の頭に!が入力されていることからアカウントがロック(パスワードがロック)されていることが分かります。つまりログインが出来ない状態=ログインが禁止されています。 シンプルに表現すると下記のとおりです。 usermod -L user : userのアカウントをロック usermod -s /bin/false user : userのログインシェルを変更 usermod -s /sbin/nologin user : 同上

m miki_y

2024/04/11 00:00

ありがとうございます。 以上総合し、また解説にも対話的ログインを禁止する直接的な方法ではない、と書かれていることから、問題文の言い回しというか解釈が絡むのですね。 「対話的ログインを禁止する方法を選べ」であればコマンドの主目的(主作用)として考える必要があって、 「次のコマンドのうち対話的ログインが禁止されるものは?」であればそのコマンドの主作用でなくても複数の作用があっても問題文の作用が入っていれば答えに該当するものと思えばよさそうですかね。 普通に読めばそうだろうと言われればそれまでですが、ほかにもこういう言い回しでどう捉えるべきか引っ掛かりそうな問題がしばしばありますね。 変なひっかけではなくちゃんとした技術的理解度を問うてほしいと思いつつ、 本チャンのLinuCの問題もこういう感じなのであれば、割り切りたいと思います。 いろいろご助力いただき大変感謝です。ありがとうございます。

この返信に対して
コメントを記入できます

2024/04/11 01:31

もう終わってるっぽいですが。
SSH接続できる環境でやってみましたが、 usermod -L するとまずそもそもログインできませんでした。

$ ssh testuser@192.168.64.2
testuser@192.168.64.2's password:
Permission denied, please try again.
testuser@192.168.64.2's password:
Permission denied, please try again.
testuser@192.168.64.2's password:
testuser@192.168.64.2: Permission denied (publickey,password).

で、正解となっている usermod -s /bin/false だと、アカウントは生きているもののシェルが利用できないので対話的ログインできず、すぐに追い出されます。

$ ssh testuser@192.168.64.2
testuser@192.168.64.2's password:
Welcome to Ubuntu 23.10 (GNU/Linux 6.5.0-26-generic aarch64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

Last login: Wed Apr 10 16:08:19 2024 from 192.168.64.1
Connection to 192.168.64.2 closed.

この設問で求められているのは「対話的ログインの禁止」であって「アカウントのロック」ではないのはすでに他の方も言及されている通りです。その上であえていうなら

アカウントがロックされたら対話的ログインもできなくなるから
正解だと思ったのですが、違うのでしょうか。

と疑問に思われている通り「求められていることを達成せず別の操作の副次的な影響で達成(したように)するのをよしとするのか」というところでしょうけど、たとえば「 systemctl stop sshd したらリモートから対話的ログインできなくなるからこれもOK」とか「 passwd hoge2 してパスワード勝手に変えたらログインできなくなるのだからこれもOK」とはならないですよね。

この問題では「最も適切なコマンド」を「2つ」選ぶようになっているので、まずは「求められているもの」を主に考えて、あとは試験テクニック的にも「回答数に合う【より適切な】選択肢を選ぶ」というのが優先かなと思います。その上で、求められているものを達成できるものが回答数に満たない場合は次善の選択肢を検討する、という順番がより良いかと思います。


コメント

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?