*

【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ライフを(*^_^*)



【改訂新版】 Linuxコマンド ポケットリファレンス (Pocket Reference)
沓名 亮典 平山 智恵
技術評論社
売り上げランキング: 29,388

はじめてのCentOS6 Linuxサーバ構築編 (TECHNICAL MASTER)
デージーネット
秀和システム
売り上げランキング: 38,550

関連記事

注文住宅(マイホーム)購入ならスーモカウンターがおすすめ(賛否あるけど) 1/3

注文住宅紹介サービス「スーモカウンター」とは? 現在注文住宅を建てようと計画中です。 貧

記事を読む

【結婚式二次会のゲームなどにおすすめ】めくりフリップ 自作 手作り 作り方 材料 で検索にひっかかれ!!

先日友達の結婚式の二次会の幹事をやりました。 その中でゲームの中でめくりフリップあった方がいい

記事を読む

お金がなくて、時給が低いことの楽しさ

こんなサイトをたまたま見つけました。 はじめての自作PCで自宅サーバーをはじめた PCケ

記事を読む

【PHP,WordPress,Contactform7】ユーザーエージェント(UA)から「デバイス(PC,スマホ,タブレット)」「OS」「ブラウザ」を取得する→これをContactform7に実装

ユーザーエージェント(UA)から「デバイス(PC,スマホ,タブレット)」「OS」「ブラウザ」

記事を読む

【simフリー端末】asus「ZenFone 5 (A500KL)」をキャンペーンで無料GETしたけど。。。auのiPhone simでは使えず(;O;)

どうも、ラッキーマンよろしくのとてつもないツキを持った男ことボクです。 とっても! ラッキーマ

記事を読む

【PHP】曜日と時間を検出して、いつまでに対応するかを表示する

営業時間中であれば、お問合わせいただいてから何分以内に対応しますよという文句を自動で表示したい。

記事を読む

【PHP】時間を扱うときはdate_default_timezone_set(‘Asia/Tokyo’);を入れよう

タイトルそのまんま。そんだけ。 日本国内のサービスでphpで時間を扱うときは、サーバの設定いじ

記事を読む

注文住宅(マイホーム)購入ならスーモカウンターがおすすめ(賛否あるけど) 3/3

注文住宅(マイホーム)購入ならスーモカウンターがおすすめ(賛否あるけど) 1/3 注文住宅(マイホ

記事を読む

数億円かかるものを0億円で作っちゃったすごい人を2人発見!

予告inというネット上の犯罪予告を事前に発見するサイトがあります。 これは、 予告.inは2

記事を読む

注文住宅(マイホーム)を建てる 凄い工務店発見 キミドリ建築の謎

貧乏人も夢を見てもいいじゃない、というわけで。 前回3回に分けて工務店の探し方としてスーモカウ

記事を読む

Comment

  1. […] 【CentOS,vsftp,Linux(UNIX)】FTPユーザーアカウントの作成とディレクトリのアクセス制限覚書 […]

  2. 匿名 より:

    すごい、役に立ちました。ありがとうございます。
    1点、

    誤)
    今回はuseraddコマンドを作ります。
    正)
    今回はuseraddコマンドを使います。

    な気がしました。
    自分のようなど素人にとっては、混乱を誘うものだったりしたので・・・。

Message

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

  • 高橋拓郎(31歳)
    愛知県知多市生まれ。
    大学在学中に個人で始めた事業を、大学院中退後法人化(法人化のために中退が正しいかも)。
    簡単にコンタクトとれるのでt@takuro.infoまで何か御用があればなんなりと。
    ブログの感想やご意見も大歓迎です!
【ユーザー車検】軽トラを無料でGETしたけど車検代が無いから初の軽自動車ユーザー車検に挑戦!

青春カーと悲しい別れ どうも。貧乏が板に付いてきて久しい僕で

【LINEbot】LINEbotが作れるからphpで作ってみたの巻 ~さくらの共有SSLでも動くよ~

BOT API Trial Accountってのが、公開されたので、L

【電気自動車】日産リーフの無料モニターに当選して2週間使ってみたけれども。。。結論的に購入は時期尚早??

どうも。実写版とってもラッキーマンこと僕です! とっても!ラッキ

追尾メニューのAdSense削除の件

このサイトへのお問い合わせで、以下のような内容のご指摘を頂きました。

【Chromebook】ASUS製 Flip C100PA-RK3288 タッチパネル/10.1インチ 開封の儀

こんな自分の物欲の言い訳のためだけの記事を書いてですね。 「いま

→もっと見る

PAGE TOP ↑