私のユーザーの一人のためにchroot環境を設定しました。顧客私のシステムに。私は公開鍵認証を使用して私のコンピュータから私のサーバーに接続するためにWINSCPを使用しています。すべてがうまくいきます。ログインしてホームディレクトリ(刑務所ディレクトリ)を表示できますが、上に移動することはできません。
現在経験している問題は、ローカルコンピュータからサーバーにファイルをコピーできないことです。私がこれをするとき私は得ます。権限が拒否されました:リモートファイル/home/client/test.txtを作成できません。
私のサーバーはRed Hatサーバーで、これは私のsshd設定です。
Match User client
ChrootDirectory %h
PubkeyAuthentication yes
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
私はこれをオンラインで閲覧し、bin
クライアントのホームディレクトリのコピーとフォルダに関するいくつかのコメントを見つけましたが、そのような解決策は役に立ちませんでした。lib
今必要なのは、ユーザーがローカルコンピュータから自分のサーバーのchrootフォルダにファイルをコピーできることです。
編集#1
私がしたことの簡単な説明は次のとおりです。
私はchrootユーザー(ユーザー名:clientd)をホームディレクトリに閉じ込めました。このchrootディレクトリは/home/client/
rootが所有しています。
今すぐアクセスするには、このクライアントユーザーが必要です/mnt/datadrive/tomcat/webapps
。
私がしたことは次のとおりです。
- ユーザーの公開鍵を使用してユーザーをホームディレクトリにルートします。
/home/client
その名前でフォルダを作成し、所有tomcat_ROOT
権を付与しますclientdev
。
これでコマンドを実行すると、次のようになります。
$ mount --bind /mnt/datadrive/tomcat/webapps /home/client/tomcat_ROOT
/home/client
クライアントを使用してログインすると、内部ディレクトリのリストからそのフォルダが消えます。私のrootユーザーはこれを見ることができますが、必要なユーザーは見ることができません。
以下はいくつかの権限の一覧です。
出力ls -l /home/client/tomcat_ROOT
:
drwxr-xr-x. 6 root root 4096 Apr 11 15:07 .
drwxrwxr-x. 12 root root 4096 Apr 11 15:07 ..
drwxr-xr-x. 3 root root 4096 Apr 9 22:10 webapp1
drwxr-xr-x. 4 root root 4096 Mar 18 18:43 webapp2
drwxr-xr-x. 3 root root 4096 Apr 9 22:11 webapp3
drwxrwxr-x. 10 root root 4096 Apr 11 15:20 ROOT
出力ls -l /home/client/
:
drwx------. 4 clientdev clientdev 4096 Apr 10 21:36 .
drwxr-xr-x. 7 root root 4096 Apr 10 22:07 ..
-rw-------. 1 client client 664 Apr 10 21:43 .bash_history
-rw-r--r--. 1 client client 18 Apr 23 2012 .bash_logout
-rw-r--r--. 1 client client 176 Apr 23 2012 .bash_profile
-rw-r--r--. 1 client client 124 Apr 23 2012 .bashrc
drwx------. 2 client client 4096 Apr 10 19:20 .ssh
drwxr-xr-x. 2 client client 4096 Apr 10 21:34 tomcat_ROOT
答え1
同様の設定があり、動作するため、設定が有効に見えます。一致ルールの上にこの行を追加することをお勧めします。これにより、ログに詳細なメッセージが表示されるため、基本的な問題に焦点を当てるのに役立ちます。
Subsystem sftp internal-sftp -f AUTH -l INFO
sshd
変更後は必ず再起動してください。あなたの問題は、ディレクトリまたはユーザーフォルダの権限に関連していると考えられます。必ず守らなければならないいくつかの非常に具体的な使用ChrootDirectory
条件があります。それ以外の場合、SSHDは協力しません。
ChrootDirectory
Specifies the pathname of a directory to chroot(2) to after
authentication. All components of the pathname must be root-owned
directories that are not writable by any other user or group.
After the chroot, sshd(8) changes the working directory to the
user's home directory.
The pathname may contain the following tokens that are expanded at
runtime once the connecting user has been authenticated: %% is
replaced by a literal '%', %h is replaced by the home directory of
the user being authenticated, and %u is replaced by the username of
that user.
The ChrootDirectory must contain the necessary files and directories
to support the user's session. For an interactive session this
requires at least a shell, typically sh(1), and basic /dev nodes
such as null(4), zero(4), stdin(4), stdout(4), stderr(4), arandom(4)
and tty(4) devices. For file transfer sessions using “sftp”, no
additional configuration of the environment is necessary if the in-
process sftp server is used, though sessions which use logging do
require /dev/log inside the chroot directory (see sftp-server(8) for
details).
The default is not to chroot(2).
答え2
ディレクトリ権限を確認できますか?
フォルダ構造が/home/test/appのように
/home/test には 'chmod 700' と 'chown testuser test' があり、/home/test/app には 'chmod 750' と 'chown testuser app -R' が必要です。
試してみてください
chmod 700 /home/client/
chown clientd /home/client/
cd /home/client/
chmod 750 * -R
chown clientd clientdev * -R
ディレクトリ権限を変更しても機能しない場合はお知らせください。