【CentOS,vsftp,Linux(UNIX)】FTPユーザーアカウントの作成とディレクトリのアクセス制限覚書
公開日:
:
最終更新日:2016/11/30
how to, ウェブ・ネット・PC(パソコン), サーバ・プログラム
外注先にサイトの作成やシステムの構築などを依頼する場合に、特定のディレクトリ(フォルダ)以外にアクセスさせたくない、という状況良く出てきます。
そんな時の覚書です。
目次
実施した環境
以下がボクの場合の環境ですので、みなさんそれぞれの環境で違うところは臨機応変に!
- CentOS6系(64bit)
- Apach2系
- vsftp
- rootでの実行(違う人はsudo使ってね)
ユーザー作成
まずはsshで入りましょう。適当にcdとかでルートディレクトリとかに戻っておいてね。
[root@www ~]cd .. [root@www /]
まずはFTP用にユーザーを作ります。
今回はuseraddコマンドを作り使います。
※コメントで誤植ご指摘いただいたので修正
いろいろオプションがあるのですが、いろいろと書くとややこしいので。。。
今回が最初の目的の「外注先さん用に、特定のディレクトリ(フォルダ)以外にアクセスさない」ユーザーを作るということのみに絞った感じで。
今回は「testuser」というアカウントを作ってみます
[root@www /]useradd -d /var/www/html -s /sbin/nologin testuser
オプション「-d」はホームディレクトリの指定です。ここで実際にいじってほしい(ここ以外はいじってほしくない)ディレクトリを指定しましょう。
「/var/www/html」はCentOSのデフォルトのウェブサイトの公開ディレクトリになります。
つまり、webデザイナーさんに外注するときにはここ以外は見る必要無いのでここに制限しましょう!というわけです。
この次の章で、ホームディレクトリ以外にアクセス出来るユーザーを指定してあげれば、逆説的にこのユーザー(testuser)はホームディレクトリ(/var/www/html)以外にはアクセス出来なくなります。
またこのホームディレクトリが既に存在する場合は警告メッセージが出ますが、ユーザーは作成できていますのでご安心を。
ユーザー作成(補足:-s)
オプション「-s」は利用シェル指定になり、/sbin/nologinはsuできない、つまりスーパーユーザー(root)になれないアカウント(ユーザー)って意味です。
当然外注さんがrootになる必要は無いので、これはセキュリティ的にも設定しておきましょう!
この辺りあんまりボクもよく理解してないので、興味があればググってみてね(*^_^*)
ユーザーが作られたか確認
ここでユーザーがちゃんと作られているか念のため確認しておきましょう!
ユーザーの一覧を表示するコマンドが
[root@www /]cut -d: -f1 /etc/passwd root bin daemon adm lp ・ ・ ・ dovecot dovenull apache webalizer mysql postgres ・ takamina acchan marikosama sasiko ・ ・ ・ testuser
ちゃんとあることが確認できましたでしょうか?
パスワードを設定
このままだとパスワードが無いのですぐに設定しましょう。コマンドはそのままで「passwd」
[root@www /]passwd testuser Changing password for user xpadmin. New UNIX password: Retype new UNIX password:
上のようにコマンド入力してEnterすると、パスワードを求められます。
New UNIX password:で入力してRetype new UNIX password:でもう一回入力してください。
その際、webサービスでよくある伏せ字「*」や「●」は出ませんのでご注意を
設定ファイル「vsftpd.conf」の編集
ユーザーが出来たら次は設定ファイルに設定を追記していきます。
ボクはコマンドでviとかがいまいち苦手なので、直接エディターとかで編集してアップロードしちゃいます。
この辺りのやり方がわからない人はこの記事を参考にね。
過去記事:【バーチャルホスト】サブドメイン・DNSの設定覚書 設定(サーバ)編 予備知識版
これに従って必要なツールとかを揃えてね!
で、今回いじるファイルはボクの環境だとetc/vsftpd/ディレクトリにある
- vsftpd.conf
- vsftpd_ipv6.conf
- chroot_list
の3つです。ただし「vsftpd_ipv6.conf」と「vsftpd.conf」はファイル名の通りipv6かどうかって話なので、基本は同じ記述をしますし、ipv6関係ねーよ!って人は無視しといて大丈夫です。
で、実際にいじっていきましょう!
まずはvsftpd.confの最下部あたりに以下を追記してください。
・ ・ ・ chroot_local_user=YES chroot_list_enable=YES
簡単に何をやっているかと言うと。。。
chroot_local_user=YESはログインした時に最初に訪れるディレクトリをホームディレクトリとするというのが一つと、それと同時にそこがそのユーザーのルートディレクトリとなり、それよりの上の階層には行けなくする、といった具合です。
つまり、今回作ったtestuserのホームディレクトリは「/var/www/html」と設定したので、それよりも上に行けなくなる。すなわちこのディレクトリ配下でのみで作業をするということです。
これで目的が達成されるわけですが、このままだと全てのユーザーがホームディレクトリしか行けなくなるので次の行のchroot_list_enable=YESでドコにでもアクセスに出来るユーザーを規定してあげましょう!というわけです。
「chroot_list」にセーフリフトを列挙する
というわけでドコにでもアクセスに出来るユーザーを規定するファイルが「chroot_list」となるわけです。
このファイルに普通に改行にて箇条書きしていきます。
どれにしたらいいか迷っちゃう場合は、前の章で紹介した
[root@www /]cut -d: -f1 /etc/passwd root bin daemon adm lp ・ ・ ・ dovecot dovenull apache webalizer mysql postgres ・ takamina acchan marikosama sasiko ・ ・ ・ testuser
ユーザー一覧をもう一回見てみて、自分で作った覚えの無いやつや、最悪今までは全て許可してたわけだもんで、今回新たに作ったtestuser以外を全部許可しても取り敢えずはよしとしていいでしょう。
※のちのちはちゃんと判断してね(^_^;)
で、こんなかんじでセーフリフトを「chroot_list」に書き出ししました。
root bin daemon adm lp ・ ・ ・ dovecot dovenull apache webalizer mysql postgres ・ takamina acchan marikosama sasiko ・ ・ ・
vsftpの再起動
最後にvsftpを再起動したら、これまで書き換えた設定が反映されます。
[root@www /]/sbin/service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ] Starting vsftpd for vsftpd_ipv6: [ OK ]
これで実際にtestuserでFTPに入ってみて、指定したホームディレクトリ「/var/www/html」にしか入れなければ大成功です!
では、よきFTPライフを(*^_^*)
技術評論社
売り上げランキング: 29,388
秀和システム
売り上げランキング: 38,550
関連記事
-
20年戦士のオンボロ愛車をパワーアップ(スズキ・エブリーにNARDI取り付け)
少し前にカーステを取り替えた愛車の青春カー! ※青春カーの命名はN君です。
-
「ssh port 変更 さくら 専用サーバ できない」 などのワードで検索引っかかってこい
ずーと前からさくらの専用サーバのsshのポートを22から変更しなくちゃ危ないって思っていたけど、人間
-
【覚書】 WordPress 301 リダイレクト URL変更 htaccess 下層ページ そのまま
このブログのURLを http://www.takahashi-takuro.com か
-
【ユーザー車検】軽トラを無料でGETしたけど車検代が無いから初の軽自動車ユーザー車検に挑戦!
青春カーと悲しい別れ どうも。貧乏が板に付いてきて久しい僕です。 そのため、青春カー
-
RapidSSLをさくらインターネット専用サーバ(CentOS5)セットアップおよび更新覚書
タイトルそのまんま。 丁度sslの更新だったんですが、今回記憶を辿るのが大変でした。 次
-
【PHP】曜日と時間を検出して、いつまでに対応するかを表示する
営業時間中であれば、お問合わせいただいてから何分以内に対応しますよという文句を自動で表示したい。
-
【バーチャルホスト】サブドメイン・DNSの設定覚書 設定(DNS)編
これの続き 設定としては2ステップ。 DNSの設定とサーバの設定です。
-
【PHP】〓WordPressとかで便利〓Internet Explorerの古いバージョンの場合は違うページにリダイレクトさせる 概要編 1/2
IE6作った奴は世界中のwebデザイナーに土下座しろよ— dtsuka (@dtsuka
-
美女Linuxのブログパーツをこのブログに入れた。そんだけ。。。
このブログもいろいろ寂しいので、少しでも華やかにしようかなと思いまして。。。 美女Li
-
【WordPress】Contact Form 7で送信できないからWP-Mail-SMTPで対策!でもgoogle appsのsmtpの設定がわからない人のためだけの記事
タイトル長い。うざい。 って思っても、この記事にたどり着いたってことは似たような悩みをお抱えな
Comment
[…] 【CentOS,vsftp,Linux(UNIX)】FTPユーザーアカウントの作成とディレクトリのアクセス制限覚書 […]
すごい、役に立ちました。ありがとうございます。
1点、
誤)
今回はuseraddコマンドを作ります。
正)
今回はuseraddコマンドを使います。
な気がしました。
自分のようなど素人にとっては、混乱を誘うものだったりしたので・・・。
コメントおよび誤りご指摘ありがとうございます。
修正させて頂きます。
[…] 【CentOS,vsftp,Linux(UNIX)】FTPユーザーアカウントの作成とディレクトリのアクセス制限覚書 […]