然后我编辑了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用户)。返回并按照说明进行操作,确保满足上面用粗斜体表示的要求。
#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/
评论
路径组件上有此要求(/,/ 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