chroot目录组件的所有权或模式错误


56

我创建了用户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中删除了2行,则用户可以成功登录。当然,它可以访问所有服务器。有什么问题?我什至尝试将RESTRICTED_DIR设置为root(当我读到某人在解决此问题时也解决了该问题)。没运气..

Answers:


73

man页面

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

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


这让我发疯。我做了“ chown root:root -R / var / www”;“ chmod 775 -R / var / www /”;“ usermod -a -G根www-data”。但我仍然无法使用MY_USER登录
MultiformeIngegno

1
该要求是对路径组件(//var/var/www,和/var/www/RESTRICTED_DIR都必须符合上述安全需求)。这是真正的chroot(请查看手册页)-用户的主目录必须存在于chroot中,以及/bin用户需要的所有其他内容……
voretaq7 2014年

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

1
尽管手册上说了什么,但即使组设置为“ root”,我也必须设置gw许可才能生效(Ubuntu 14.04)。联机帮助页上应显示路径名的所有组件都必须是根目录,这些目录不能由任何其他用户或任何组写入 sudo chown root:root -R /path/to/home; sudo chmod 755 -R /path/to/home
mmell 2015年

3
我知道这已经很老了,但是/var/www与其直接修改该路径的权限(这可能会破坏apache),不如将sftp目录放在另一个路径中,然后在Apache中使用URL映射指向另一个目录要好得多。 。在Files Outside DocumentRoot
Daniel

32

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文件夹是一种很好的做法。


3
可以肯定的是sudo usermod -a -G www-data MY_USER,小组应该-G
紧追

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

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/
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.