如何添加仅具有访问特定文件夹权限的ssh用户?


17

如何添加仅具有访问特定文件夹权限的ssh用户?

useradd -d /var/www/xyz.com.tr/musteri  -s /bin/bash -g sshd musteri

我创建了一个名为的用户musteri。我设置了它的主文件夹和组。因此,我想将musteri用户集成到“ /var/www/xyz.com.tr/musteri”中。我不希望它访问另一个文件夹。


您是否希望用户具有完全的Shell访问权限,或者仅具有sftp和rsync之类的文件复制协议?
吉尔(Gilles)“所以,别再邪恶了”,

如果是后者,则您可能希望将其scponly视为一个外壳,可能会在chroot模式下运行以限制他对该目录的访问,而在其他任何地方。
Shadur 2011年

1
@Gilles-我想通过sftp访问。但是,我不希望它访问另一个文件夹。
Cell-o

1
@ Cell-o:如果您只需要一些文件传输协议而不需要Shell,请使用chroot plus scponly或rssh(Google scponly chrootrssh chroot应将您引向howtos)。
吉尔(Gilles)“所以,别再邪恶了”,

如何使用ACL?
fpmurphy 2011年

Answers:


19

听起来您想让您的müşteriler拥有对文件夹的文件传输访问权限,而无需实际给它们提供外壳。这是一件好事,因为正如binfalse所指出的那样,为人们提供具有有限访问权限的shell是棘手的,因为shell需要访问分散在系统上的所有事物才能运行。

为了使SFTP可以访问特定的文件夹,您可以执行以下操作。

  1. 向系统添加一个新组,例如“ sftponly”。
  2. 在您的系统上添加应对此组具有受限权限的所有用户。您还可以给它们提供受限制的shell,例如/ bin / true,但这不是必需的。
  3. /etc/ssh/sshd_config用这些行更改ssh配置文件(通常是)
    子系统sftp internal-sftp

    匹配组sftponly
        ChrootDirectory%h
        允许TCP转发否
        X11转发否
        ForceCommand内部SFTP

这将激活SSH内部的sftp子系统,并强制该系统组的成员在登录时仅使用该系统。还将chroot到其主目录。您可以将其更改为其主目录的子文件夹,并使用类似的方法,ChrootDirectory %h/musteri_sftp以使他们无法保留其余的系统文件,而直接登录到其主文件夹的特殊子文件夹。

Kolay明胶。


Öncelikleteşekkürler。;)正如您提到的,我设置了SFTP。但是,我对iptables有问题。这是我的规则。-> RH-Firewall-1-INPUT -m状态--state新-m tcp -p tcp --dport 21 -j ACCEPT
Cell-o

1
Birşeydeğil。尽管FTP使用端口21,但SFTP是类似于 ftp的 协议,它通过SSH通道运行,因此它将使用SSH端口,默认情况下为
22。– Caleb

请注意,您还应该找到并注释掉任何以前存在的Subsystem命令(例如Subsystem sftp / usr / lib / openssh / sftp-server)
CnrL

解决了我的问题并学到了一些方便的土耳其语短语!奖金!
eimajenthat

2

我认为这是非常困难的,即使不是不可能的。当用户通过SSH连接时,他至少需要一个外壳,在您的情况下为bash。要执行,/bin/bash他需要访问权限/binbash本身需要读一些东西/etc(例如/etc/bash.bashrc),因此用户还需要访问/etc。假设用户不仅想在该目录中闲逛,他可能想读取一个文件,但要执行例如vim他还需要访问/usr/bin
这只是一个简单的演示,还有更多的依赖项,例如,我真的不知道如果用户无权访问/tmp.. 将会发生什么。

您应该考虑一下自己的意图。您是否只想让某人对您的Web服务的一部分具有读/写访问权限?然后,您可以设置诸如FTP之类的内容,以将特定目录导出到该用户。因此,他无需SSH访问就能读取/写入此文件。
另一个不错的解决方案是存储库。例如,设置一个GIT存储库并让用户克隆它。他可以在本地进行更改并向您发送补丁。您可以决定是否应用此补丁程序,对于存在漏洞的补丁程序进行回滚也非常容易。


rbash专为做到这一点而设计。
bahamat 2011年

这个东西叫做受限外壳。但是,由于Cell-o只希望允许文件传输,因此它不是正确的工具。
吉尔(Gilles)“所以,别再邪恶了”,
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.