我创建了用户MY_USER。将他的主目录设置为/ var / www / RESTRICTED_DIR,这是他应被限制的路径。
然后我编辑了sshd_config并设置:

Match user MY_USER
  ChrootDirectory /var/www/RESTRICTED_DIR


然后,我重新启动了ssh。成为RESTRICTED_DIR的MY_USER所有者(和组所有者),并将其更改为755。我得到

Accepted password for MY_USER
session opened for user MY_USER by (uid=0)
fatal: bad ownership or modes for chroot directory component "/var/www/RESTRICTED_DIR"
pam_unix(sshd:session): session closed for user MY_USER


如果我从sshd_config中删除了两行,则用户可以成功登录。当然,它可以访问所有服务器。有什么问题?我什至尝试将RESTRICTED_DIR设置为root(在我读某处有人解决此问题的过程中)。没有运气..

#1 楼

man页面上:


ChrootDirectory
指定chroot(2)到after
身份验证的目录的路径名。路径名的所有组件都必须是root所有的
目录,任何其他用户或
组均不可写。 chroot之后,sshd(8)将工作目录
更改为用户的主目录。


我想是路径上的一个或多个目录不符合这些目录要求(我怀疑www是您的网络用户拥有或可写的,而不是root用户)。
返回并按照说明进行操作,确保满足上面用粗斜体表示的要求。

评论


路径组件上有此要求(/,/ var,/ var / www和/ var / www / RESTRICTED_DIR必须都满足上述安全要求)。这是真正的chroot(请查看手册页)-用户的主目录必须存在于chroot中,因为/ bin和用户需要的所有其他内容也必须...

–voretaq7
2014年3月28日在0:03

好!解决了。我将chrooted目录设置为一个级别。然后,我将777个烫发带给了原始的chrooted_dir。它正在工作:)

– MultiformeIngegno
2014年3月30日18:34

尽管手册上说了什么,但即使组设置为“ root”,我也必须设置g-w许可才能起作用(Ubuntu 14.04)。联机帮助页上应显示路径名的所有组件必须是root拥有的目录,所有其他用户或任何组都不能在sudo chown root上写该目录。root -R / path / to / home;须藤chmod 755 -R / path / to / home

–mmell
2015年1月15日23:32



我知道这已经很老了,但是与其直接修改/ var / www路径的权限(这可能会破坏apache),不如将sftp目录放在另一个路径中,然后在Apache中使用URL映射来指向它要好得多。到另一个目录。在DocumentRoot外部的文件下的httpd.apache.org/docs/2.4/urlmapping.html中查看文档。

–丹尼尔(Daniel)
16 Sep 3'2:58



这使我发疯……如果除root之外没有人对此有写权限,那么登录的用户应该如何上传新文件?它破坏了我首先设置sftp的全部目的。

– jlh
18年6月26日在20:47

#2 楼

ChrootDirectory目录必须由root拥有并且具有755模式:

sudo chown root:root /var/www/RESTRICTED_DIR
sudo chmod 755 /var/www/RESTRICTED_DIR


好,现在/var/www/RESTRICTED_DIR中的所有文件都必须由MY_USER拥有,该文件必须属于www-data组,并且具有775模式以允许组权限,例如:

sudo usermod -a -G www-data MY_USER
sudo chown MY_USER:www-data /var/www/RESTRICTED_DIR/*
sudo chmod 775 -R /var/www/RESTRICTED_DIR/*


注意:记住,如果您正在配置apache,请记住仅允许访问htdocs文件夹是一种好习惯。 />

评论


可以肯定它应该是sudo usermod -a -G www-data MY_USER,因为该组应该在-G之后

–迈尔斯
16年12月21日在17:28

这可行,但是我不能将新文件上传到目录,我只能使用根帐户和用户所有权来修改之前创建的文件。

– dlopezgonzalez
19年1月31日,12:29

@dlopezgonzalez对我来说,同样的事情发生了。我能想到的最好的解决方案是创建用户拥有的另一个目录(例如/ var / www / RESTRICTED_DIR / uploads)。如果这不是您的理想选择,则可以重定位ChrootDirectory并使用符号链接(例如/ var / www / RESTRICTED_DIR是指向/ sftp / uploads的符号链接(其中/ sftp由root拥有,而/ sftp / uploads由由用户拥有)

– rinogo
20-2-21在19:02



#3 楼

经过今天的故障排除后,我意识到root也必须能够写入目录。

以下操作无效:

$ ls -ld /mnt/synology03/files/
dr-xr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
$ ls -ld /mnt/synology03
drwxr-xr-x 7 root root 4096 Oct  1 21:26 /mnt/synology03
$ ls -ld /mnt
drwxr-xr-x 6 root root 4096 Feb  8 10:01 /mnt
$ ls -ld /
drwxr-xr-x 24 root root 4096 Jan 14 09:22 /


修复此问题后,我的chroot开始工作。

$ sudo chmod 755 /mnt/synology03/files/
$ ls -ld /mnt/synology03/files/
drwxr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/