作業中、情けない程ドハマリした。
この悔しさを一生忘れない為にもここに記す。
Linux Redhat7系を使った、とあるウェブサーバの話。
結論から言うと、ユーザのFTPアクセスの設定で、
2日分の工数ぐらいはハマってしまった、という話…。
要件として、
・よくあるApacheを使ったウェブサーバを構築したい。
・コンテンツは静的ページのみとする。
・この1台のサーバで、10個のウェブサイトを運用したい。
・つまりは、10個のドメインを設定が必要。
・10個分のバーチャルホストを設定し、それぞれのウェブ領域のドキュメントルートを決める。
・SSLはいったん忘れてよい。
・10個分のユーザアカウント作成。
・クォータ制限でそれぞれ容量を5GBまでとしたい。
・ユーザはFTPでコンテンツをアップする。
・個々のドキュメントルートを、/(ルートディレクトリ)にする。
・FTP以外のアクセス(ssh等)は禁止としたい。 ⇒ここがハマった部分
・FW等のアクセス制御は、別機器で行う為、考えなくてよい。
とする。
設定パラメータが決まっていたら、慣れている人なら1日で作れる物かもしれない。
ザッと設定はこんな感じになる。
(思い出しながら記述するのでおかしい所があったら申し訳ない。)
【Apache】
・/etc/httpd/conf/httpd.conf に適切な設定を入れる。(特に変わった事はしていない)
・バーチャルホストの設定を10個入れる。ドキュメントルートを /home/www/web-user1 とする。(先にディレクトリを作っておく必要あり。)
・chmod chown も忘れずに。(ユーザ作った後に実施)
【ドメイン設定】
/etc/hosts で10個分指定する。グローバルIPは1個の場合。
(例)
www.hogehoge.co.jp 100.100.100.1 www.mokomoko.com 100.100.100.1
…の様な記述を合計10行記述。(localhost も有)
【IP設定】
nmtuiで100.100.100.1/32を設定。
(古いOSなら、/etc/sysconfig/network-scrypt/ifcfg-ensXXXを直編集し、サービスリラン)
【ユーザ設定】
・useradd / groupadd で任意のアカウントを作成。
・passwd でPWも指定。
・要件にある通り、FTPアクセスオンリーなので、通常ログイン(SSHやsu -)を禁止する為に、
usermod -s /sbin/nologin user1 を実施。 →今回ココが(僕にとって)曲者だった。
・ユーザーのホームディレクトリを元から変えちゃう。(vsftpで指定しても良いが、こっちのがシンプル。)
usermod -d /home/www/web-user1 user1
【クォータ制限】
・クォータが使えるまでの設定は割愛(すみません)
・/usr/sbin/edquota -u user1 でblockのHardを50,000,000,000(KB表示で5GB。実際は”,”は付けません)に設定。
【FTP設定】
・vsftpを使用し、/etc/vsftp/vsfptd.confへ適切な設定を入れる。
・chrootの適切な値を設定。(参考↓ ここもだいぶ苦戦した><)
https://qiita.com/mugi-tea/items/b6ee5d9127409667bc7c
【FW辺り】
別機器の機能でまかなう為、iptable・Firewallはdisableへ。
等々、ザッと書いたが、OS回りやDNS設定は為されている物としたら、
あらかた設定出来ている気がしてくる。
実際、ブラウザでテスト画面はちゃんと出るし、クォータもちゃんと効いてるし、
rootユーザの状態で「su – user1」を行うと、スイッチ出来ない(nologinが効いているから正しい。)し、
あとはFTPアクセスか~と思って実施したら、
user1でFTPが出来ない。。。
とここからドハマりタイム突入。
サーバまでの接続は出来ている様で、PW設定がミスったか?と思ったけど、
何度やり直しても変わらず。
vsftpd.confの設定がおかしいのか、何度も見直しいろいろ試すも、解決出来ず。
パスワードが上手く変更されていないのか、/etc/pam.dの中も一通りチェックしたりと、
超ハマりまくり。。。
ここまで読んでくれる人はあまり居ないと思うが、多分気付いていると思う。
「nologinのせいじゃね?」と…。
結論、その通り。。。
nologinについて、知識が足りていなかった。。。
なぜか思い込みでsu -のみ禁止するものと思い込んでいた。。。
◆/usr/sbin/edquota -u foo最近のnologinは/etc/shellsに含まれていない https://qiita.com/Marukaziler/items/51da64b8935444c1d9e7
ここの設定で、無事解決しました。
Linuc、受けようかな。。。
一度参考書を読んで知識を詰め込んだ方が良いよなやっぱ。。。
いろんな人に迷惑をかけてしまったと、大いに反省…。
同じ部分では二度とハマらない様に、死ぬまで忘れない様にします。。。