我的用例是为网站管理员拥有一个共享帐户(名为域),但只有一位网站管理员是主要数据的“所有者”,并定义谁可以通过编辑授权密钥登录共享帐户。
问题是StrictModes yes
会抱怨共享帐户的 .ssh/authorized_keys 所有权,因为它是“所有者”用户的所有者。
目前我有StrictModes yes
,但我使用 AuthorizedKeysCommand 使 sshd 与 .ssh/authorized_keys 一起工作,并且不会抱怨所有权不当。
什么更好 - 禁用StrictModes
或有我的解决方法?
这是共享帐户的匹配:
Match Group *,!sftpuser,!sshuser
ChrootDirectory %h # eg: /sites/<domain> # symlink to real dir in /sites/users/<user>/www/<domain>
ForceCommand internal-sftp -u 0002 -d / -l INFO # here $HOME from /etc/passwd is broken, thus '-d /'
# workaround - using script to validate ssh keys because 'StrictModes yes'
# and we want authorized_key be owner by different user
AuthorizedKeysCommand /etc/ssh/authorized_keys/bin/authorize_domain_sshkey %u
AuthorizedKeysCommandUser %u
目录布局是这样的:
/sites/users/<owner>/home/<owner> - owned by <owner>
/sites/users/<owner>/www/<domain>/.ssh - owned by <root>
/sites/users/<owner>/www/<domain>/.ssh/authorized_keys - owned by <owner>
/sites/users/<owner>/www/<domain>/htdocs - owned by <owner>/<domain>
共享帐户有rwX,因此可以修改'htdocs'中的数据
现在它的工作原理是这样的:
- $owner 将新的公共 ssh 密钥放入他的 $HOME/../../www//.ssh/authorized_keys 中
- sftp $域@主机
- $domain 被 chroot 到对应于上面 /sites/users/$owner/www/$domain 的目录中