标签 chroot 下的文章

SSH Authentication Refused: Bad Ownership or Modes for Directory问题解决办法

配置密钥登录SSH的过程中遇到些问题,记录下方便后续工作。

1、SSH Authentication Refused: Bad Ownership or Modes for Directory /home/user

从字面上可以看出是目录的属主和权限配置不当,查找资料得知:SSH不希望home目录和~/.ssh目录对组有写权限,通过下面几条命令改下

chmod g-w /home/user
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/authorized_keys

还有另外一种方法是在sshd_config文件中配置

StrictModes off

,但是不推荐,因为这是全局配置,关闭了不安全。

2、fatal: bad ownership or modes for chroot directory component "/var/www/project"

在sftp配置中,

ChrootDirectory /var/www/project

参数限定用户登录sftp后的活动范围。
这个参数配置要求比较严格,需要限制目录的每个上级目录的属主都是root,例如/var/www/project,它就要求/ /var /var/www三个目录的owner都是root。如果不好更改,可以用软链接的形式实现,例如

ln -s /var/www/project /home/project

Ubuntu sftp配置及上传文件权限问题解决方案

编辑配置文件/etc/ssh/sshd_config

Subsystem sftp /usr/lib/openssh/sftp-server

改成

Subsystem sftp internal-sftp

增加如下内容

Match user ftpuser
ChrootDirectory %h
ForceCommand internal-sftp

多个用户则重复配置上面的三行。

然后修改用户,设定shell为/bin/false,就可以限制用户无法登录SSH只能使用sftp


配置默认上传文件权限

Subsystem sftp internal-sftp -u 0002

增加上面加粗的-u 0002

表示配置sftp中的umask为0002,这样在sftp里新建目录权限就是775(777-002),文件权限664(666-002)

参考文章:

Limiting Access with SFTP Jails on Debian and Ubuntu
How do I set default permissions for SFTP for an Ubuntu Server?
【系统管理】Linux Umask 介绍