私には/etc/passwd、ファイル、私がいることがわかりますwww-dataのApacheが使用するユーザーだけでなく、システムのユーザーのすべての種類は、どちらか持っている/usr/sbin/nologinか、/bin/false自分のログインシェルとして。たとえば、次の行を選択します。
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin games:x:5:60:games:/usr/games:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin syslog:x:101:104::/home/syslog:/bin/false whoopsie:x:109:116::/nonexistent:/bin/false mark:x:1000:1000:mark,,,:/home/mark:/bin/bash
そのため、これらのユーザーのいずれかにスワップしようとすると(ユーザーのアクセス許可の理解を確認するためにやりたいことがあり、おそらく他の少なくとも中途の正当な理由があります)、失敗します:
mark@lunchbox:~$ sudo su www-data
This account is currently not available.
mark@lunchbox:~$ sudo su syslog
mark@lunchbox:~$
もちろん、次のような方法でシェルを起動できるため、それほど不便ではありません。
mark@lunchbox:~$ sudo -u www-data /bin/bash
www-data@lunchbox:~$
しかし、それでは、これらのユーザーにログインシェルを拒否することで、どのような目的が果たされるのかと思うだけです。インターネットで説明を見ると、多くの人がこれがセキュリティに関係していると主張しており、これらのユーザーのログインシェルを変更することは何らかの形で悪い考えであることに誰もが同意するようです。引用符のコレクションは次のとおりです。
Apacheユーザーのシェルを非対話型に設定することは、一般的にセキュリティ上の良い習慣です(対話型でログインする必要のないすべてのサービスユーザーは、シェルを非対話型に設定する必要があります)。
- https://serverfault.com/a/559315/147556
ユーザーwww-dataのシェルは/ usr / sbin / nologinに設定されており、非常に正当な理由で設定されています。
- https://askubuntu.com/a/486661/119754
[システムアカウント] は、特にシェルが有効になっている場合、セキュリティホールになる可能性があります。
悪い
bin:x:1:1:bin:/bin:/bin/sh良い
bin:x:1:1:bin:/bin:/sbin/nologin
- https://unix.stackexchange.com/a/78996/29001
セキュリティ上の理由から、Tomcatサーバーを実行するためのログインシェルなしでユーザーアカウントを作成しました。
# groupadd tomcat # useradd -g tomcat -s /usr/sbin/nologin -m -d /home/tomcat tomcat
- http://www.puschitz.com/InstallingTomcat.html
これらの投稿は、システムユーザーに実際のログインシェルを与えないことがセキュリティに良いという満場一致の合意に達していますが、この主張を正当化するものはなく、その説明はどこにもありません。
これらのユーザーに実際のログインシェルを与えないことにより、どのような攻撃から身を守ろうとしていますか?