別のtcpポートとsftpサブシステムの次の構成を使用して、独自のsshd構成を使用して2番目のsshd systemdサービスを構成しました。
Match Group sftponly
ChrootDirectory /srv/%u
AllowTcpForwarding no
ForceCommand internal-sftp
PubkeyAuthentication yes
PasswordAuthentication no
PermitTunnel no
AllowAgentForwarding no
X11Forwarding no
sftponlyグループで作成したユーザーは次のとおりです。
uid=1001(sftpuser) gid=1001(sftponly) groups=1001(sftponly)
chrootのディレクトリツリーは次のとおりです。
drwxr-xr-x 3 root root 22 Aug 27 15:43 /srv
drwxr-xr-x 4 root root 34 Aug 27 18:27 /srv/sftpuser
drwx------ 2 sftpuser sftponly 29 Aug 27 15:43 /srv/sftpuser/.ssh
-rw-r--r-- 1 sftpuser sftponly 398 Aug 27 15:43 /srv/sftpuser/.ssh/authorized_keys
秘密鍵を使用して正常に SFTP を実行できますが、ユーザーの /srv/%u chroot ディレクトリにファイルを作成することはできません。
sftp> ls -al
drwxr-xr-x 3 root root 18 Aug 27 16:38 .
drwxr-xr-x 3 root root 18 Aug 27 16:38 ..
drwx------ 2 sftpuser sftponly 29 Aug 27 13:43 .ssh
sftp> mkdir one
Couldn't create directory: Permission denied
sftp>
私がするときchown sftpuser /srv/sftpuserアクティブなSFTPセッションに戻るとファイルを作成できますが、ログアウトするとルートが所有するように/srv/%u
ディレクトリを変更するまでSFTPにログインできなくなります。
Connection to 192.168.1.110 closed by remote host.
Connection closed
もちろん、/srv/%u
sftpuser(/ srv / sftpuser)が所有するディレクトリ内に別のディレクトリを作成できますが、これはchrootの唯一のソリューションですか?ユーザーがファイルを直接変更/アップロードできないのはなぜですか/srv/%u
?
その他の質問 - システムの他のユーザーがsftp用にのみ設定されたカスタムsshdを使用するのを防ぐ方法は?上記の行をカスタマイズするSubsystem
2つのオプションに設定すると、次のようになります。sshd_config_sftponly
PubkeyAuthentication
PasswordAuthentication
いいえsshdデーモンを再起動すると、通常のシステムユーザーはそのカスタムsshdポートを使用してパスワードでログインできます。
ベストアンサー1
sftpuserが所有する/srv/%u(/srv/sftpuser)内に別のディレクトリを作成できますが、これはchrootの唯一のソリューションですか?
# man sshd_config | col -b | sed -n '/^ *ChrootDirectory/,/^ *$/{/^ *$/q;p}' | \
fmt -w72 | sed 's/^/ /'
ChrootDirectory
Specifies the pathname of a directory to chroot(2)
to after authentication. At session startup sshd(8)
checks that all components of the pathname are root-owned
directories which are not writable by any other user
or group. After the chroot, sshd(8) changes the working
directory to the user's home directory. Arguments to
ChrootDirectory accept the tokens described in the
TOKENS section.
明らかにしましょう –パス名のすべてのコンポーネントはルートによって所有されます。!だからあなたはこれを行うことができます:
# man sftp-server | col -b | sed -n '/^ *\-d/,/^ *$/{/^ *$/q;p}' | \
fmt -w72 | sed 's/^/ /'
-d start_directory
specifies an alternate starting directory for users.
The pathname may contain the following tokens that
are expanded at runtime: %% is replaced by a literal
'%', %d is replaced by the home directory of the user
being authenticated, and %u is replaced by the username
of that user. The default is to use the user's home
directory. This option is useful in conjunction with
the sshd_config(5) ChrootDirectory option.