Solaris10 FTPログインのルートディレクトリをchrootで設定する

イントラネットで使っていたとする。ユーザが使うffftpのソフトに/export/home/web/publi_html/を入力してくださいというよりも、/public_html/を入力してくださいという方が楽だし、余計なディレクトリにアクセスされずにすむ。

ということで、ftpログイン時のホームディレクトリよりは上の階層に移動できない設定をする。

使い慣れているProFTPdを使おうとも思ったが、今回はSolarisに最初から入っているFTPサーバを利用することにした。

 

■chrootしたいユーザを登録する(ftpaccessファイル)

ユーザ tanaka kitano sasaki を登録する。

# vi /etc/ftpd/ftpaccess

 

15行目のコメントアウトを外す

# guestuser	username 

 ↓

guestuser	tanaka
guestuser kitano
guestuser sasaki

カンマで区切った、guestuser   tanaka,kitano,sasaki というかたちでは有効にならない。一行に1ユーザを登録する。

 

■ftpログインして、lsコマンドが使えるようにする(ftpconfigコマンド)

ftpログインして、lsコマンドを発行しても一覧表示されない。

ログインディレクトリにlsコマンドを置いておく必要がある。

(ftpconfig実行前) 

# ls -l /export/home/tanaka
drwxr-xr-x 2 towns2 bdjtowns 512 Sep 1 06:24 cgi-bin
drwxr-xr-x 2 towns2 bdjtowns 512 Sep 1 06:26 logs
drwxr-xr-x 2 towns2 bdjtowns 512 Sep 1 06:24 public_html

/usr/sbin/ftpconfig コマンドを実行して、環境を整える。

# ftpconfig -d /export/home/tanaka

 (ftpconfig実行後)

# ls -l /export/home/tanaka
drwxr-xr-x 2 towns2 bdjtowns 512 Sep 1 06:24 cgi-bin
d--x--x--x 2 root sys 512 Sep 1 08:32 dev
d--x--x--x 5 root sys 512 Sep 1 08:32 etc
d--x--x--x 2 root bin 512 Sep 1 08:32 lib
drwxr-xr-x 2 towns2 bdjtowns 512 Sep 1 06:26 logs
drwxr-xr-x 2 root sys 512 Sep 1 08:32 pub
drwxr-xr-x 2 towns2 bdjtowns 512 Sep 1 06:24 public_html
d--x--x--x 6 root sys 512 Sep 1 08:32 usr

dev, etc, lib, pub, usrディレクトリが作成される。 

 

■ftpログイン直後、ディレクトリを移動する(/etc/passwd)

  • ログインユーザのシェルとして、/bin/sh や /bin/trueを指定する。
  • /export/home/tanaka/がルートディレクトリになる。
  • ログイン直後に、public_html ディレクトリへ移動する。(ピリオドで指定する)

 /etc/passwdを編集する。

tanaka:x:555804:875::/export/home/tanaka/./public_html/:/bin/sh 

 

■ftpログインして、lsコマンドが使えるようにする(/etc/shells)

 /etc/shellsを新規ファイルとして作成する。

一行ごとにシェルのパスを記述する。

/bin/trueも記述する。

/sbin/sh 
/bin/bash
/bin/csh
/bin/jsh
/bin/ksh
/bin/remsh
/bin/rksh
/bin/rsh
/bin/sh
/usr/bin/csh
/usr/bin/ksh
/usr/bin/bash
/usr/bin/tcsh
/usr/bin/zsh
/bin/true 

 

■ドットファイルをアップロードできるようにする

.htaccessをアップロードしようとすると、許可されていないファイル名なのでアップできない。

550 .htaccess: Permission denied on server. (Filename (deny)) 

このようなエラーメッセージが表示され。

 

もともと、chrootの目的が、よく知らない他人様にFTPを利用させるときに使うことが多い。ということで、その配慮として初期設定がそうなっている。今回は、社内のイントラネットで利用するので.htaccessファイルをアップロードできないのは困るので変更する。

ftpaccessファイルをこのように変更する。

/etc/ftpd/ftpaccess の43行目をコメントアウトして無効にする。

path-filter	guest,anonymous /etc/ftpd/filename.msg	^[[:alnum:]._-]*$ ^[.-]

 ↓

# path-filter    guest,anonymous /etc/ftpd/filename.msg    ^[[:alnum:]._-]*$ ^[.-] 

 

参考サイト

FTPサーバー上のアップロードとダウンロードの制御 

 

■参考サイト

FTPサーバーのログインの設定 

http://docs.sun.com/app/docs/doc/816-3965/6ma7896jg?a=view#wuftp-18-a

このページの/etc/shellsをコピーしたものが上のリスト。/bin/bashが抜けていたので足した。

きちせのさいと

http://www.kichise.com/modules/pico/10/solaris10_ftpd_chroot.html 

Solaris10 FTP管理

http://infoking.hp.infoseek.co.jp/developer/linux/solaris/ftp.html