chrootとファイルの生成に問題があるsftp

chrootとファイルの生成に問題があるsftp

別の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/%usftpuser(/ srv / sftpuser)が所有するディレクトリ内に別のディレクトリを作成できますが、これはchrootの唯一のソリューションですか?ユーザーがファイルを直接変更/アップロードできないのはなぜですか/srv/%u

その他の質問 - システムの他のユーザーがsftp用にのみ設定されたカスタムsshdを使用するのを防ぐ方法は?上記の行をカスタマイズするSubsystem2つのオプションに設定すると、次のようになります。sshd_config_sftponlyPubkeyAuthenticationPasswordAuthenticationいいえ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.

おすすめ記事