CHROOT:無法使用 WINSCP 將文件從本地電腦複製到被監禁的使用者目錄
我已經在我的系統上為我的一個名為**client的使用者設置了 chroot 環境。**我正在使用 WINSCP 使用公鑰身份驗證從我的機器連接到我的伺服器。一切正常,我可以登錄,查看主目錄(監獄目錄)並且無法向上導航。
我目前遇到的問題是我無法將文件從本地電腦複製到伺服器。當我這樣做時,我得到權限被拒絕:無法創建遠端文件 /home/client/test.txt
我的伺服器是 Red Hat 伺服器,這是我的 sshd 配置:
Match User client ChrootDirectory %h PubkeyAuthentication yes AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp
我已經在網上查找了這個,我發現了一些關於在客戶端的主目錄上複製
bin
andlib
文件夾的註釋,但是這些解決方案沒有幫助。目前我所需要的只是讓使用者能夠將文件從他們的本地機器複製到我的伺服器的 chroot 文件夾下。
編輯#1
以下是我所做工作的簡要說明:
我有一個 chroot 使用者(使用者名:clientd),我已將其關押在他們的主目錄中。這個 chroot 目錄
/home/client/
歸 root 所有。現在我需要這個客戶端使用者能夠訪問位於
/mnt/datadrive/tomcat/webapps
.我所做的是:
- 使用自己的公鑰將使用者chroot 到主目錄。
- 在 call 下創建一個文件夾
/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
我有類似的設置,它可以工作,所以你的配置對我來說是有效的。我建議在 Match 規則上方添加這一行,這將在您的日誌中啟用更詳細的消息傳遞,這可能有助於您將注意力集中在潛在問題上。
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).