由於不支持 /dev/null 操作,chrooted jail 中的 ssh 不起作用
我正在嘗試在我的一台 NAS 伺服器上設置 ssh-chroot 監獄。該系統在 NAS4Free(基於 nanobsd)上執行。使用者應該只能執行一個命令,這是一個 bash 腳本,它打開 ssh 到另一台伺服器並在那裡執行一個命令。
要設置 chroot,我在 sshd 配置中有這個。
Match User op ChrootDirectory %h X11Forwarding no AllowTcpForwarding no
腳本中有這一行:
ssh -i /.ssh/id_rsa backup@$externalresource -t "/mnt/storage/backup/run_project.sh '$1' '$2'"
我可以使用 ssh 登錄到該 chroot,但是當我執行腳本時,嘗試在其中執行 ssh 命令時會出現以下錯誤。
Couldn't open /dev/null: Operation not supported
當我嘗試在 chroot 中執行 ssh plain 時,也會發生同樣的情況
[I have no name!@nas /]$ ssh Couldn't open /dev/null: Operation not supported
/dev/null 看起來像這樣:
$ ls -la dev/ total 8 drwx--x--x 2 root staff 512 Nov 29 18:16 . drwxr-xr-x 8 root staff 512 Nov 29 18:06 .. crw-rw-rw- 1 root staff 0x18 Nov 29 18:16 null
如果沒有 666 權限,我當然會收到 /dev/null 權限被拒絕錯誤。
我使用創建了 dev/null
mknod dev/null c 2 2
我試圖找到解釋為什麼 /dev/null 返回操作不允許但沒有找到任何幫助。
有人可以解釋如何解決這個問題嗎?
我使用創建了 dev/null
mknod 開發/空 c 2 2
你的知識已經過時了。現在 NAS4Free 是基於 FreeBSD 10 和 11 之類的,事情不再以這種方式工作了。(無論如何,這些設備編號也不是空設備。)閱讀
mknod
手冊。您仍然可以執行mknod
以在實際的磁碟或 RAM 文件系統中創建設備節點,但您創建的節點幾乎完全沒用。如您所見,核心不允許您使用它們打開設備。這就是為什麼在監獄中——實際的監獄,作業系統附帶的監獄,而不是可以設置的簡單 chroot 環境
sshd_config
——通過在監獄中安裝devfs
實例來獲取設備文件。這也是為什麼監獄有旋鈕來控制是否devfs
可以掛載以及適用於它的 devfs 規則集。如果您想
/dev/null
在更改後的根環境中使用,則必須使用mount_nullfs
使實際/dev
樹在更改後的根中可見。如果您使用真正的 jail,只需將其配置為在/dev
.如果您確實使用真正的監獄,您當然可以將其設置為
sshd
在監獄中執行,偵聽監獄的 IP 地址並以正常方式在監獄 中啟用服務。/etc/rc.conf
進一步閱讀
mknod
. FreeBSD 11.0 手冊。devfs
. FreeBSD 11.0 手冊。devfs.rules
. FreeBSD 11.0 手冊。- 文件:如何:監獄。NAS4免費維基。
- 馬泰奧·里昂達托。“監獄”。 FreeBSD 手冊。
- 斯科特·羅伯 (2015-03-04)。 FreeBSD 監獄。