CHROOT:WINSCPを使用してローカルシステムから刑務所に閉じ込められたユーザーディレクトリにファイルをコピーすることはできません。

CHROOT:WINSCPを使用してローカルシステムから刑務所に閉じ込められたユーザーディレクトリにファイルをコピーすることはできません。

私のユーザーの一人のために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

私がしたことは次のとおりです。

  1. ユーザーの公開鍵を使用してユーザーをホームディレクトリにルートします。
  2. /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

ディレクトリ権限を変更しても機能しない場合はお知らせください。

関連情報