UNIXやLinux: 2014年11月アーカイブ

MacBook Pro を買った 5年前には、OS X で動く SFTP クライアントにパッとしたのがなかったので(まあ、十分探したともいえないけど)、どうしても SFTP で接続する必要がある時は VMware で Windows 7 を開いて WinSCP を使っていた。
面倒臭いけど、その頃はほとんどのサイトが FTP で接続できたからな。わざわざ SFTP にしないといけないサイトが少なかったから何とかなっていたのだ。

しかーし、最近は SFTP でしかつながらないサイトが増えた・・・というか、テスト用に立てたサーバなんかいちいち FTP サーバを入れるのが面倒臭いので、ほとんどが SFTP オンリーだ(^^;

ということで、Mac にも SFTP クライアントを入れることにした。
選んだのは FileZilla。
ざっと使ってみた感じでは、日本語のファイル名(ディレクトリ名)も問題なく表示されるし、FFFTP や WinSCP と画面も似てて違和感がなくていいね。

ただ、インストール時に、あの評判の悪い MacKeeper のインストールを促すのはいただけない。
このインストール料で開発費を賄っているのかもしれないから、そりゃあ協力してあげたいけど、あんま良い評判聞かないからなあ。McAfee と一緒で(笑)

ちなみに、ちゃんとインストールをして MacKeeper を評価されている方の記事がこちら。

参考まで。
CentOS サーバ(CentOS 6.5 + OpenSSH 5.3p1 という環境)で、特定ユーザの SFTP 接続を chroot させるための設定のメモ。

今回、FTP サーバを立ち上げていないサーバに、外注の Web デザイナーさんにデータのアップロードをしてもらうことになった。そのためだけに FTP サーバをセットアップするのもなあ・・・ということで、SFTP で接続してもらうことにした。となると、SFTP 接続してきた特定のユーザだけ chroot するよう設定が必要だよね。
つまり、そのユーザは自分がデータをアップロードするディレクトリから、他の上位ディレクトリには移動できなくする・・・というわけね。

もちろん当社に協力していただいているデザイナーさんに、よそのディレクトリに移動して大事なデータを盗み見たりするような人はいませんが、念の為にね(笑)

1.データアップロード用のディレクトリ作成(root で)
 (例)mkdir -p /var/hosts/www.exsample.jp
    ※ /var/hosts/www.exsample.jp の所有者は root であること!

2.chroot するユーザの作成
 (例)useradd -g 7000 -s /sbin/nologin -u 7001 -d /var/hosts/www.exsample.jp webusr01
 ※パスワードも忘れずに!

3.chroot 先のディレクトリに、webusr01 で触れる子ディレクトリを作っておく。
 (上の例では、/var/hosts/www.exsample.jp 自体は root ユーザのものなので、webusr01 ではファイルを書き込んだりできない)
 (例)
 mkdir /var/hosts/www.exsample.jp/www
 chown webusr01 /var/hosts/www.exsample.jp/www

3.sshd の設定変更
 上の例の webusr01 のように、頭に web と付くユーザだけ chroot することにする
 /etc/ssh/sshd_config の一番下に、以下の設定を追加。

# override default of no subsystems
#Subsystem       sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp

Match User web*
  ChrootDirectory ~

 ※最初に書かれていた Subsystem の行はコメントにする。

4.sshd の再起動
 (例)service sshd restart

これで、頭に web とついたユーザは chroot されるようになる。

ちなみに、色々ググりながら設定したんだけど、ForceCommand で実行プログラムを指定すれば Subsystem の設定を上書くので、Subsystems の設定行を直接変更することはないでぇ!つまり、

# override default of no subsystems
Subsystem       sftp    /usr/libexec/openssh/sftp-server

Match User web*
  ChrootDirectory ~
  ForceCommand internal-sftp

こういう設定でいけるはずやでぇ!と書かれているサイトがあったんだけど、うちの環境では、

error: subsystem: cannot stat /usr/libexec/openssh/sftp-server: No such file or directory
subsystem request for sftp failed, subsystem not found

というエラーになったで。(ForceCommand はちゃんと書いてたけど)
chroot 先には /usr/libexec/openssh/sftp-server は無いから当然 "No such file or directory" になるわけで。

結局、手順例に書いたように、

#Subsystem       sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp

としなきゃダメだったな。うーん・・・

あ、もしかして、webusr01 のログインシェルに /sbin/nologin を設定してるから???

まあ、とりあえず望んでた動きにはなっているのでこのまま行くけど・・・

このアーカイブについて

このページには、2014年11月以降に書かれたブログ記事のうちUNIXやLinuxカテゴリに属しているものが含まれています。

前のアーカイブはUNIXやLinux: 2014年10月です。

次のアーカイブはUNIXやLinux: 2015年12月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら