SSHを利用している場合でも、特定のユーザーに対して一般のシェルでのログインを許可したくない場合があります。 FreeBSDのportsに用意されているshells/rsshを使うと、scpやsftpなどいくつかのコマンドに限定して、SSHを利用させる事が出来ます。
設定
/usr/local/etc/rssh.conf.distというサンプルがインストールされるので、それを参考にしながら、同じ場所にrssh.confという名前のファイルを作成し、設定します。 設定し終えたら、適用するユーザーのログインシェルを、rsshに変更します*1。
例えば、bloggerというユーザー*2に対して、sftpの使用のみを許可したい場合には、/usr/local/etc/rssh.confに、
user=blogger:022:00010
という行を追加します。
この書式は、 user= で始まる行に、対象とするユーザー名、umask(3桁の8進数)、使用を許可するコマンドの明示(5桁の2進数)を、それぞれ「 : 」で区切りながら記述します*3。
この使用を許可するコマンドの明示は、rsshが対応している5つのコマンド、すなわち、
| rsync | rdist | cvs | sftp | scp |
の順に、それぞれ、使用を許可するものには「 1 」、許可しないものは「 0 」という具合に表記された5桁の2進数になります。
そして、root権限で、
# chpass -s /usr/local/bin/rssh blogger
などを実行して、rsshをユーザーのログインシェルとして設定すれば、このユーザーでのSSHの使用は、sftpに限定されます。
*1portsからインストールした場合、/etc/shellsには、自動で/usr/local/bin/rsshを追加してくれる。
*2ちょうど、Bloggerでブログを利用したいと思って、sftpログイン専用のアカウントを作成する必要に迫られたから。余談になるが、blogger.comからの接続は、パスワード認証という形をとるので、/etc/ssh/sshd_config内で「PasswordAuthentication yes」と記述しなければならない。しかし、そうすると、セキュリティ上、不安でもあるので、「AllowUsers blogger」もしくは「AllowUsers blogger@ftpout.blogger.com」などと記述し、sshdにログインできるユーザを明示して、それ以外のユーザは拒否する設定にした方が良い。後者の記述は、例えユーザ名がbloggerであっても、ftpout.blogger.com以外のホストからは接続を拒否するという意味。詳細はsshd_config(5)参照。
*3ユーザーをchrootしたい場合、パラメーターの最後にそのディレクトリの名前を記述することもできるが、ここでは触れない。
関連情報
- FreeBSD - このWikiフォーラム内におけるFreeBSDに関係するものの目次です。 ...