在OS X中创建仅远程用户?


15

我想在OS X上创建一个具有远程ssh登录特权的用户,他们可以在其中访问某些文件夹/ p​​ath / to / the / goods /并手动或通过rsync添加/修改/删除文件,而其余的Mac超出了限制(在其主目录之外)。

理想情况下,用户应该无权运行rsync以外的任何其他程序。

构建服务器将使用该用户登录文件并将其部署到该用户。我想使用公用/专用密钥对,因此构建脚本不需要输入密码。

我该怎么做?

Answers:


9

最好的方法是为用户创建一个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。我认为文件夹所在的组并不重要。我在上面所做的是

  1. 后备 /etc/sshd_config
  2. 将根目录的所有权更改为 root
  3. 将根目录的权限更改为755
  4. 创建一个chroot文件夹
  5. 在chroot文件夹中创建一个用户文件夹
  6. 在用户可以修改的用户文件夹内创建一个文件夹
  7. 设置所有权和权限

现在编辑/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>

只是解决我自己的问题并记录下来,以防万一我需要再次做。;-)
afragen 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.