Answers:
最好的方法是为用户创建一个chroot监狱。到家后,我会在这里整理答案,但我将解决方案发布在了我的博客上。
https://thefragens.com/chrootd-sftp-on-mac-os-x-server/
以下是上述职位的大部分说明。
首先,您应该在Workgroup Admin中创建新用户,然后通过Server Admin为他们分配SSH的访问权限,或者将他们分配给具有SSH访问权限的组。下面是进一步的讨论。
在终端上,从右边开始。
sudo cp /etc/sshd_config /etc/sshd_config.bkup
sudo chown root /
sudo chmod 755 /
sudo mkdir -p /chroot/user/scratchpad
sudo chown -R root /chroot
sudo chown user /chroot/user/scratchpad
sudo chmod -R 755 /chroot
然后,添加的每个其他新用户将类似于以下内容。
sudo mkdir -p /chroot/user2/scratchpad
sudo chown root /chroot/user2
sudo chown user2 /chroot/user2/scratchpad
sudo chmod -R 755 /chroot/user2
指向chroot监狱的路径的每个文件夹都必须由拥有root
。我认为文件夹所在的组并不重要。我在上面所做的是
/etc/sshd_config
root
现在编辑/etc/sshd_config
以下内容。
#Subsystem sftp /usr/libexec/sftp-server
Subsystem sftp internal-sftp
Match User user
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /chroot/user
这就创建了一个chroot监狱,当用户登录时,它将把他们放到该文件夹中/chroot/user
,在该文件夹中,他们可以向其中添加内容/chroot/user/scratchpad
。
如果您想在Workgroup Admin中为“ Chroot用户”创建一个组,然后将您在Workgroup Admin中创建的新用户添加到该组中,则无需继续编辑/etc/sshd_config
文件。代替上面的内容,添加以下内容。确保将“ Chroot Users”组添加到Server Admin中的SSH访问ACL。
Match Group chrootusers
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /chroot/%u
要测试上面的方法是否有效,请从终端发出以下命令。
$ sftp user@domain.com
Password:
sftp>