내 사용 사례는 웹마스터를 위한 공유 계정(도메인이라는 이름)을 갖는 것이지만 단 한 명의 웹마스터만이 기본 데이터의 "소유자"이며 인증 키를 편집하여 공유 계정에 로그인할 수 있는 사람을 정의합니다.
문제는 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은 위의 /sites/users/$owner/www/$domain에 해당하는 디렉터리로 루트가 지정됩니다.