5.4. 設定例
5.4.1. FTP サイトにアップロードする リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
特定のユーザーがファイルのアップロード専用として使用できる FTP サイトを作成している例を示します。 ディレクトリ構造を作成し、 必要となる SELinux 設定の変更を行なっています。
- root ユーザーで
setsebool ftp_home_dir=1を実行して FTP ホームディレクトリへのアクセスができるようにします。 - root ユーザーで
mkdir -p /myftp/pubを実行して新規ディレクトリを最上位に作成します。 - Linux ユーザーの書き込みアクセスを許可するため、
/myftp/pub/ディレクトリで Linux パーミッションの設定を行ないます。以下の例では、所有者とグループを root から所有者 user1 とグループ root に変更します。書き込みアクセスを与えたいユーザーを「user1」の部分に入れてください。chown user1:root /myftp/pub chmod 775 /myftp/pub
# chown user1:root /myftp/pub # chmod 775 /myftp/pubCopy to Clipboard Copied! Toggle word wrap Toggle overflow chownコマンドで所有者とグループのパーミッションを変更しています。chmodコマンドではモードを変更し、user1 ユーザーには読み取り、書き込み、実行のパーミッションを許可、root グループのメンバーには読み取り、書き込み、実行のパーミッションを許可しています。これ以外のユーザーには読み取りと実行のパーミッションを許可しています。このディレクトリ配下にあるファイルの読み込みを Apache HTTP Server に許可する必要があります。 - SELinux を実行する場合は、ファイルやディレクトリにアクセス許可のラベルを適切に付ける必要があります。Linux パーミッションの設定だけでは不十分です。ファイルに
public_content_tタイプのラベルが付いている場合は、FTP、Apache HTTP Server、Samba による読み込みおよび再同期が可能です。ファイルにpublic_content_rw_tタイプのラベルが付いている場合は、FTP による書き込みが可能です。 Samba など FTP 以外のサービスによるpublic_content_rw_tタイプのラベルが付いているファイルへの書き込みについては、書き込みを行なう前にまず Boolean を設定しておく必要があります。最上位のディレクトリ (/myftp/) にpublic_content_tタイプのラベルを付け、/myftp/配下にコピーまたは新規作成されたファイルに対してサービスによる書き込みや変更が行なわれないようにします。root ユーザーで次のコマンドを実行し、ラベルの変更をファイルコンテキスト設定に追加します。semanage fcontext -a -t public_content_t /myftp
semanage fcontext -a -t public_content_t /myftpCopy to Clipboard Copied! Toggle word wrap Toggle overflow restorecon -R -v /myftp/を実行してラベルの変更を適用します。restorecon -R -v /myftp/ restorecon reset /myftp context unconfined_u:object_r:default_t:s0->system_u:object_r:public_content_t:s0
# restorecon -R -v /myftp/ restorecon reset /myftp context unconfined_u:object_r:default_t:s0->system_u:object_r:public_content_t:s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow /myftpにはpublic_content_tタイプのラベル、/myftp/pub/にはdefault_tタイプのラベルが付いているか確認します。ls -dZ /myftp/ drwxr-xr-x. root root system_u:object_r:public_content_t:s0 /myftp/ ls -dZ /myftp/pub/ drwxrwxr-x. user1 root unconfined_u:object_r:default_t:s0 /myftp/pub/
$ ls -dZ /myftp/ drwxr-xr-x. root root system_u:object_r:public_content_t:s0 /myftp/ $ ls -dZ /myftp/pub/ drwxrwxr-x. user1 root unconfined_u:object_r:default_t:s0 /myftp/pub/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ユーザーが FTP 経由でファイルをアップロードできるようにするため、 まず先に FTP にディレクトリへの書き込みを許可する必要があります。 SELinux で FTP に書き込みを許可しているのは、
public_content_rw_tタイプのラベルが付いたディレクトリです。ここでは、FTP に書き込みを許可するディレクトリとして/myftp/pub/を使用しています。root ユーザーで次のコマンドを実行し、ラベルの変更をファイルコンテキスト設定に追加します。semanage fcontext -a -t public_content_rw_t "/myftp/pub(/.*)?"
semanage fcontext -a -t public_content_rw_t "/myftp/pub(/.*)?"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - root ユーザーで
restorecon -R -v /myftp/pubを実行してラベルの変更を適用します。restorecon -R -v /myftp/pub restorecon reset /myftp/pub context system_u:object_r:default_t:s0->system_u:object_r:public_content_rw_t:s0
# restorecon -R -v /myftp/pub restorecon reset /myftp/pub context system_u:object_r:default_t:s0->system_u:object_r:public_content_rw_t:s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow allow_ftpd_anon_writeBoolean をオンにして、vsftpdによるpublic_content_rw_tタイプのラベルが付いたファイルへの書き込みを許可する必要があります。root ユーザーで次のコマンドを実行し、この Boolean をオンにします。setsebool -P allow_ftpd_anon_write on
setsebool -P allow_ftpd_anon_write onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 再起動後、 変更を維持したくない場合は-Pオプションを使用しないでください。
FTP でログインしてからファイルをアップロードする例を以下に示します。 ユーザーは前述の例と同じ user1 ユーザーを使用しています。
/myftp/pub/ ディレクトリは user1 が専用所有者となるディレクトリです。
cd ~/を実行してホームディレクトリに移動します。 次に、mkdir myftpを実行して FTP 経由でアップロードするファイルを格納するディレクトリを作成します。cd ~/myftpを実行して~/myftp/ディレクトリに移動します。 このディレクトリ内にftpuploadファイルを作成します。 以下の内容をこのファイルにコピーします。File upload via FTP from a home directory.
File upload via FTP from a home directory.Copy to Clipboard Copied! Toggle word wrap Toggle overflow getsebool allow_ftpd_anon_writeを実行して、allow_ftpd_anon_writeBoolean がオンになっているか確認します。getsebool allow_ftpd_anon_write allow_ftpd_anon_write --> on
$ getsebool allow_ftpd_anon_write allow_ftpd_anon_write --> onCopy to Clipboard Copied! Toggle word wrap Toggle overflow この Boolean がオフになっている場合は、 root ユーザーでsetsebool -P allow_ftpd_anon_write onを実行し Boolean をオンにします。 再起動後、 変更を維持したくない場合は-Pオプションを使用しないでください。- root ユーザーで
service vsftpd startを実行し、vsftpdを起動します。service vsftpd start Starting vsftpd for vsftpd: [ OK ]
# service vsftpd start Starting vsftpd for vsftpd: [ OK ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow ftp localhostを実行します。 ユーザー名の入力が求められたら、 書き込みアクセスを持っているユーザーのユーザー名を入力し、 そのユーザーの正しいパスワードを入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow allow_ftpd_anon_writeBoolean が有効になっているためアップロードが成功します。