![cygwin:chroot 監獄 - 無法執行任何指令](https://rvso.com/image/726397/cygwin%EF%BC%9Achroot%20%E7%9B%A3%E7%8D%84%20-%20%E7%84%A1%E6%B3%95%E5%9F%B7%E8%A1%8C%E4%BB%BB%E4%BD%95%E6%8C%87%E4%BB%A4.png)
我已經裝了 CygwinApache、PHP、Mercurial、MYSQL、OpenSSH、PYTHON
我已將 sshd_config 更新為 chroot Jail 以存取使用者定義的資料夾
例子:
匹配組 sftp_users
Chroot目錄 /home/%u
SSH / SFTP 工作正常,如我所願。
連接到 SSH 後,我得到了 bash。如果我想運行任何命令,例如'dir, hg, mysql, whatever
「我只是得到command not found
谷歌搜尋了幾天我嘗試了以下步驟
- 將所有檔案從
C:/cygwin/bin
“C:/cygwin/home/username/bin”複製到“C:/cygwin/home/username/bin”,類似地dev,etc,lib,sbin,tmp,usr,var
- 這實際上給了我不同的錯誤,例如error while loading shared libraries
- 我嘗試更新,
fstab
甚至C:/cygwin/bin /bin ntfs binary 0 0
沒有對我的 SSH 連接命令進行任何更改 - 我嘗試在建立 SSH 連線時新增路徑
plink.exe ssh -pw xxx username@hostname -v C:/cygwin/bin/python
,我也嘗試過plink.exe ssh -pw xxx username@hostname -v ../bin/python
- 如果我更改
sshd_config
為預設值,該命令會以某種方式起作用,但我會得到類似於下圖的有線輸出
幫助我,這可以挽救我的生命。
答案1
Cygwin 提供了一個 dll,可將 Linux 和 POSIX 呼叫重新對應到 Windows API 呼叫。像 chroot 這樣的工具依賴於擁有適當的 Linux 用戶空間,並且在使用像 cygwin 這樣的工作或函數時不能很好地映射 - 儘管如果你真的想這樣做,這是可能的,請參閱這裡可能需要什麼。
我建議使用真實的Linux用戶空間隨著較新的Linux 的 Windows 子系統。這提供了 Microsoft 支援的真正的 Linux 相容核心接口,以及您在普通 Linux 系統上獲得的真正的 Linux 用戶空間。您提到的工具在該設定、chroot 等中都應該可以很好地工作。