
私は古いSolaris 5.10サーバーを持っています。 Tomcat製品をCentos 7に移行しています。移行する必要があるSolarisサーバーには2つのアカウントがあります。両方のアカウントのシェルは「/usr/local/bin/ftponly」と識別されます。これは単純なSHスクリプトのように見えますが、サーバーに付属しているのか、それとも以前の管理者(またはベンダー技術者)が作成したのかはわかりません。このスクリプトと「/bin/sh」は、「/etc/shells」の唯一のエントリです。
新しいCentos 7サーバーでは、2人のユーザーのシェルとして「/usr/sbin/nologin」を選択しました。以前のサーバーの「/usr/local/bin/ftponly」は人間が読めるスクリプトでしたが、「/usr/sbin/nologin」はバイナリファイルのようです。新しいサーバーでこれら2つのユーザーアカウントを使用するFTPトランザクションは実行中ですが、SSHは拒否されました。
始めてもいいですか?それとも、利用可能なシェルについて大きな考慮事項がありますか?私のデフォルトのLinuxオペレーティングシステムはUbuntuなので、Centosに組み込まれているセキュリティ機能のいくつかが時々頭を傷つけることがあります。
答え1
これはオペレーティングシステムによって変わりません。 FTPサーバーソフトウェアによって異なります。
何が重要ですか本物の人Unixでユーザーアカウントをプログラムで決定するのは簡単ではありません。非個人ユーザーアカウントはすべて、システムアカウントデータベースに実際の実行可能ファイル(例)uucico
と有効な既存のホームディレクトリ(例)を指す非NULLシェルフィールドを持つことができます/var/spool/news
。
匿名ではない2つ以上のFTPサーバーによって採用されているルールは、システムアカウントデータベースレコードのシェルフィールドがnullではなく、システムの「ユーザーシェル」テーブルにある値を持つ場合です(どちらの場合も/etc/shells
)。このテーブル(getusershell()
ライブラリ機能に基づく別のテーブルの場合)。
/usr/local/bin/ftponly
ユーザーアカウントがメッセージを発行し、ユーザーがアクションを実行しようとしたときにログアウトする非常に簡単なプログラムを実行するために、シェルがそれを利用していることは名前だけでも明らかです。端末ログインしますが、これはうまくいきますファイル転送プロトコルログイン。
nologin
ユーザーシェルテーブルにある場合は、同じことを行います。ただし、これは使用しているFTPサーバーソフトウェアにのみ当てはまります。他のFTPサーバーソフトウェア同じオペレーティングシステムで全く違うルールがあるでしょう。
Bruce Guenterのtwoftpdたとえば、2つの構成設定に基づいてシェルフィールドの値をテストします。一致するものがある場合、クライアントはプログラムの読み取り専用FTPサービスを受け取りますtwoftpd-anon
。他のエントリと一致すると、クライアントはそのtwoftpd-drop
プログラムを介してファイルアップロード専用のFTPサービスを受け取ります。
使用しているソフトウェアにも、この問題に影響を与える複雑な構成オプションがある可能性があります。たとえば、vsftpdでは、check_shell
オプション、local_enable
オプション、pam_service_name
オプション、およびサービスのPAM設定(モジュールの存在と設定を含むpam_shells
)がすべて関連しています。