質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Q&A

解決済

1回答

944閲覧

複数ユーザーにchrootで設定したディレクトリへファイルをアップさせたい

pond

総合スコア350

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

0グッド

0クリップ

投稿2021/06/14 09:24

編集2021/06/14 11:28

前提・実現したいこと

・複数ユーザーにWEBサーバの画像ファイルが保存されているディレクトリへWinscpなどのリモート接続ツールでファイルをアップロードさせたい
・複数ユーザーはWEBサーバの画像ファイルが保存されているディレクトリ配下のディレクトリ以外へ移動できないようにさせたい(画像ファイルが保存されているディレクトリより上のディレクトリへの移動は禁止させたい。)

試したこと

【方法①】ユーザーAのホームディレクトリ/home/userA配下にimgというディレクトリを作成し、そのディレクトリを公開ディレクトリ配下にあるディレクトリ/opt/qqq/yyy/jjj/eee/ooo/ppp/iii/nnn/imgとしてシンボリックリンクを作成する
(/opt/qqq/yyy/jjj/eee/ooo/ppp/iii/nnn/img配下に画像ファイルを配置)
→ この方法の場合、ユーザーBというユーザーがいた場合、ユーザーBのホームディレクトリ/home/userB配下にimgというディレクトリを作成し、/opt/qqq/yyy/jjj/eee/ooo/ppp/iii/nnn/imgとしてシンボリックリンクが作成できない

【実行するコマンド】 # mkdir -p /home/userA/img # chown userA:src /home/userA/img # chmod 775 /home/userA/img # ln -s /home/userA/img /opt/qqq/yyy/jjj/eee/ooo/ppp/iii/nnn/img

【方法②】画像ファイルが保存されているディレクトリをchrootディレクトリとして指定する
ディレクトリが仮に以下の場合、/opt/qqq/yyy/jjj/eee/ooo/ppp/iii/nnn/sss 全階層のディレクトリのオーナーをroot、
パーミッションを755へ変更しないといけないので、セキュリティ的に脆弱になってしまう

やり方は後者のほうが簡単なんでしょうけど。。。
複数ユーザーとなると方法2のやり方しかないんですかね。

補足情報(FW/ツールのバージョンなど)

OS : CentOS7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2021/06/14 09:36

> ・ユーザーAのホームディレクトリ/home/userA配下にimgというディレクトリを作成し、そのディレクトリを公開ディレクトリ配下にある実ディレクトリへシンボリックリンクで紐づける この日本語だと、どっちがシンボリックリンクか不明です。コマンドを書きましょう。 > ファイルをアップロードさせたい Apacheのことが書いてあると言うことは、アップロードさせるウェブアプリを作るという事でしょうか? 全般的に、何をしたいのか具体的な記述が少なくて、具体的に何をしたいのか不明です。
pond

2021/06/14 10:12

失礼いたしました。内容を修正いたしました。
otn

2021/06/14 10:20 編集

> アップロードさせるウェブアプリを作るという事でしょうか? が不明です。 ウェブアプリを作るのであれば、要件通りに作ればば良いだけの話で、シンボリックリンクだのchrootだのどうでも良いことです。
pond

2021/06/14 10:23

アプリは作りません。
pond

2021/06/14 10:25

Winscpを使って画像ファイルをサーバへアップさせます。
otn

2021/06/14 10:29

scpという語が、質問文中に全く現れていません。 また、そうすると、apacheは無関係ですね。
otn

2021/06/14 10:47

> 複数ユーザーはWEBサーバの画像ファイルが保存されているディレクトリ配下以外へ移動できないようにさせたい 「移動できない」の意味が不明。特定ディレクトリ /opt/qqq/yyy/jjj/eee/ooo/ppp/iii/nnn/img 以外にアップロードさせたくないと言うことですか?そうじゃないとすると、「何をどこからどこへ移動させるのを禁止したい」という風に書いてください。
guest

回答1

0

ベストアンサー

配下のディレクトリ以外へ移動できないようにさせたい

これはどのレベルを要求しているのでしょうか。
普通にSSH(SCP,SFTP含む)のアクセスを許可すると、/etc 等のオープンなところはアクセスし放題です。それが許容できないのであれば、chrootは必須になるかと思います。
※SSHではなくFTPS(FTP+SSL)にしても事情はあまり変わらないでしょう。

逆にコンテンツディレクトリだけ保護できれば良いのであれば、例えば /home/img をパーミッション的に共有できるようにして ( 例えば 1777 にして ) アクセスさせれば良いと思います。
※Apacheからは、シンボリックリンク経由、あるいは Alias の設定で /home/img の画像にアクセスする。

で、もし chroot が必須だとして、コンテンツディレクトリの深い所に chroot させるのは現実的ではないので、上記案と折衷にするのが素直な気がします。
例えば /jail を chroot 対象のディレクトリだとして、/jail/home を作った上で mount -o bind /home /jail/home とすれば、またユーザのアクセスを internal-sftp に限定すれば、アクセスしたユーザは /jail に閉じ込められた中での /home にしかアクセスできません。( mount -o bind の効果で、/home と /jail/home は等価 )
上記 /home/img と自分のホームディレクトリにアクセス先が限定されることになります。

投稿2021/06/15 13:49

angel_p_57

総合スコア1672

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問