*

【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

関連記事

【WordPress】WP-PageNaviがデフォルト設定が左寄せだもんで、真中揃えにする方法

WordPressの人気プラグインでWP-PageNaviってやつがあります。 何のプラグイン

記事を読む

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

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

記事を読む

【WordPress】Contact Form 7の追加プラグイン「Contact Form 7 DatePicker」便利だけど手動入力されたときにエラー吐いちゃうのの対策

便利なプラグインContact Form 7の追加プラグイン「Contact Form 7

記事を読む

【jQuery】Chart.jsを使って簡単にカッコイイレーダーチャートを実装するの巻

友達の結婚式のプロフィールムービーが終わって一息ついていた頃。。。 いつもお世話になっている弁

記事を読む

キャリアメール非対応のスマホ htc EVO WiMAX でキャリアメールを使う方法(送受信可)

少し前ですが、auより国内初のテザリング対応のスマートフォン htc EVO WiMAX IS

記事を読む

【JavaScript】生年月日を入力したら自動的に現在の年齢を入れてくれる

プロフィールなどで自動で現時点の年齢を入れてくれるプログラム探してて良いサイトがあったので覚書です。

記事を読む

【PHP】〓WordPressとかで便利〓Internet Explorerの古いバージョンの場合は違うページにリダイレクトさせる ハック編 2/2

【PHP】〓WordPressとかで便利〓Internet Explorerの古いバージョンの場合は

記事を読む

lightbox クリック前

lightbox(ライトボックス)のie9のバグの修正方法(って言っても新しいバージョン入れなおすだけ)

lightboxっていう無料のJavaScriptがあるの知ってますか? lightboxダウ

記事を読む

【PHP】スマホ対応 メールフォーム設置 PEARを使ってgmailのsmtpサーバで送信する(ダウンロード可能)

メールフォーム(お問い合わせフォーム)をサイトに設置したいというのはよくあります。 で、フォー

記事を読む

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

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

記事を読む

Comment

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

  2. 匿名 より:

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

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

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

Message

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

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

  • 高橋拓郎(32歳)
    愛知県知多市生まれ。
    大学在学中に個人で始めた事業を、大学院中退後法人化(法人化のために中退が正しいかも)。
    簡単にコンタクトとれるのでt@takuro.infoまで何か御用があればなんなりと。
    ブログの感想やご意見も大歓迎です!
【javaScript】2017年版 法人税実効税率 自動計算機(コードも置いとくね)

今日は4/3だからこれは嘘じゃないよ!! 法人税実効税率

【ユーザー車検】軽トラを無料でGETしたけど車検代が無いから初の軽自動車ユーザー車検に挑戦!

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

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

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

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

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

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

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

→もっと見る

PAGE TOP ↑