ここで助けていただければ幸いです。
Ubuntu 12.04 ボックスにルート刑務所を設定しようとしていて、Jailkit 2.15 を使用しています。http://www.marthijnvandenheuvel.com/2010/03/10/how-to-create-a-chroot-ssh-user-in-ubuntu/ガイドを使用して、これを成功させました。
ただし、ユーザーが svn コマンドを使用できるようにしたいと考えています。以下を /etc/jailkit/jk_init.ini に追加しました
[svn]
comment = the subversion program
executables = /usr/bin/svn
includesections = netbasics
[dshell]
comment = dpicella shell addons
paths = /usr/lib/tcl8.4
libraries = /usr/lib/libexpect5.43.so, /lib64/libgcc_s.so.1
executables = /usr/bin/expect
includesections = netbasics, uidbasics
しかし、ルート化されたアカウント内で SVN を使用しようとすると、常に次のようになります。
$ svn co svn+ssh://192.168.1.1/svn/repo/path
svn: warning: cannot set LC_CTYPE locale
svn: warning: environment variable LC_CTYPE is en_GB.UTF-8
svn: warning: please check that your locale name is correct
password:
svn: No repository found in 'svn+ssh://192.168.1.1/svn/repo/path/'
ご想像のとおり、SVN リポジトリは同じマシンに保持されており、通常の bash ユーザーで svn checkout コマンドが機能することを確認しました。Subversion が使用する htpasswd ファイル (/etc/subversion/passwd) も再確認しましたが、これにはユーザー名:string-pattern が含まれています。それで大丈夫そうです。
ロケールの問題を調べてみると、ここで何が起こっているのか、それが問題なのかわかりませんが、常識的には、通常は最初のエラーが原因であると言われています。投獄されたアカウント内の locale -a は私に与えました:
bash: locale: command not found
通常のアカウント内では、次のようになります。
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX
jk_init.ini で次のことに気付きました。
[basicshell]
comment = bash based shell with several basic utilities
paths = /bin/sh, bash, ls, cat, chmod, mkdir, cp, cpio, date, dd, echo, egrep, false, fgrep, grep, gunzip, gzip, ln, ls, mkdir, mktemp, more, mv, pwd, rm, rmdir, sed, sh, sleep, sync, tar, touch, true, uncompress, zcat, /etc/motd, /etc/issue, /etc/bash.bashrc, /etc/bashrc, /etc/profile, /usr/lib/locale/en_US.utf8
users = root
groups = root
includesections = uidbasics
/usr/lib/locale を見ると、次のものがあります。
$ ls /usr/lib/locale/
C.UTF-8 locale-archive
これが問題でしょうか、それともここでいくつかの問題が発生していますか?
乾杯