首先我要声明,我已多次阅读并遵循常见问题解答中的这些说明:http://www.itefix.no/i2/node/37
它并没有实现标题所声称的功能...它允许每个用户访问其他每个用户的主目录,以及访问 copssh 安装路径下的所有子文件夹。
我仅将其用于 SFTP 访问,并且我需要将我的用户放入沙盒中,仅进入他们的主目录。
如果您知道一种万无一失的方法来锁定用户,以便他们只能看到自己的主目录及其子文件夹,请立即停止阅读并回复解决方案。
细节:
这正是我按照常见问题解答尝试的方法。我的 copSSH 安装目录是:C:\Program Files\CopSSH
net localgroup sftp_users /ADD **Create a user group to hold all my SFTP users
cacls c:\ /c /e /t /d sftp_users **For that group, deny access at the top level and all levels below
cacls "C:\Program Files\CopSSH" /c /e /t /r sftp_users **Allow my user group access to the copSSH installation directory and its subdirectories
对于每个 sftp 用户,我创建一个新的 Windows 用户帐户,然后我:
net localgroup sftp_users sftp_user_1 /add **Add my user to the group I've created
打开 CopSSH 的激活用户向导,选择用户“/bin/sftponly”并
- 如果 copssh 主目录存在则删除 **保留选中状态
- 创建用于公钥认证的密钥**保持选中状态
- 创建指向用户真实主目录的链接**保持选中状态
但是,这是可行的,每个用户都可以访问其他每个用户的主目录以及 CopSSH 根目录......
因此我尝试拒绝所有用户访问用户主目录:
cacls "C:\Program Files\CopSSH\home" /c /e /t /d sftp_users **拒绝用户访问用户主目录
然后我尝试为每个用户的 home\username 文件夹逐个添加权限。但是,Windows 不允许这些权限,因为我在主目录中创建的上述拒绝规则被继承并覆盖了我的允许规则。
对我来说,下一步是删除主目录和每个用户文件夹中的拒绝规则,为每个不属于的用户添加一条拒绝规则,并为其所属的用户添加一条允许规则。
然而,随着我的用户列表越来越长,这将变得非常麻烦。
谢谢您的帮助!
答案1
- 在计算机管理中创建组“SSH 用户”
- 将组添加到 gpedit -> 计算机配置 -> Windows 设置 -> 安全设置 -> 本地策略 -> 用户权限分配 -> 允许本地登录(参见无法使用非管理员用户帐户登录 Cygwin sshd 服务器)
- 运行 gpupdate
- 将 ftpuser 添加到 SSH 用户组
在 /etc/sshd_config 中附加详细信息:
Subsystem sftp internal-sftp Match User ftpuser ChrootDirectory /home/ftpuser X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
(该指令后面的行上的关键字
Match
仅适用于用户,ftpuser
并覆盖配置文件全局部分中设置的关键字,直到另一Match
行或文件末尾。)- 通过 copSSH 向导激活 ftpuser 用户
- 删除 ftpuser 文件夹下的所有 .ssh .bashprofile 文件/文件夹
将 SvcCOPSSH 用户设置为 root id 0
SvcCOPSSH:unused_by_nt/2000/xp:**0**:545:U...
可能还需要在 copSSH‘UNIX BASH Shell’中执行以下操作
cd / chown SvcCOPSSH / chmod 0755 /
重启 openssh 服务