いくつかのシナリオがあります システム管理者が少数のユーザーのみにファイルをLinuxボックスに転送することを許可する必要があるが、sshは使用しない 。これは、 SFTPを設定することで実現できます。 chroot環境で。
SFTPとchrootの背景:
SFTP SSHファイル転送プロトコルの略です または安全なファイル転送プロトコル 。 SFTPは、信頼できるデータストリームを介して、ファイルアクセス、ファイル転送、およびファイル管理機能を提供します。 chroot環境でSFTPを構成すると、許可されたユーザーのみがホームディレクトリに制限されます。 、または許可されたユーザーは刑務所に入ると言えます ディレクトリを変更することさえできない環境のようなものです。
この記事では、RHELでChrootSFTPサーバーを構成します & CentOS システム。 1人のユーザー「ジャック」がいます ’、このユーザーはLinuxボックスでファイルを転送できますが、sshアクセスは許可されません。
ステップ:1)グループを作成する
groupaddコマンドを使用してsftp_usersグループを作成します
[[email protected] ~]# groupadd sftp_users
手順:2)セカンダリグループ(sftp_users)をユーザーに割り当てます
ユーザーがシステムに存在しない場合は、以下のコマンドコマンドを使用して作成します
[[email protected] ~]# useradd -G sftp_users -s /sbin/nologin jack [[email protected] ~]# passwd jack
既存のユーザー向け 、以下のusermodコマンドを使用してください:
[[email protected] ~]# usermod –G sftp_users -s /sbin/nologin jack
注: デフォルトのホームディレクトリを変更する場合 ユーザーの数、次に「-d」を使用します useraddおよびusermodコマンドのオプションを選択し、正しい権限を設定します。
手順:3)構成ファイル「/ etc / ssh/sshd_config」を編集します
お気に入りのエディタを使用してsshd_configを編集します
# vi /etc/ssh/sshd_config #comment out the below line and add a line like below #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp # add Below lines at the end of file Match Group sftp_users X11Forwarding no AllowTcpForwarding no ChrootDirectory %h ForceCommand internal-sftp
場所:
一致グループsftp_users –これは、グループsftp_users
ChrootDirectory%hに属するユーザーに対してのみ次の行が一致することを示します。 –これは、ユーザーが認証された後にchrootに使用されるパス(デフォルトのユーザーのホームディレクトリ)です。したがって、ジャックの場合、これは/ home/jackになります。
ForceCommand internal-sftp –これにより、internal-sftpが強制的に実行され、〜/ .ssh/rcファイルに記載されているコマンドはすべて無視されます。
上記の変更を行った後、次のコマンドを使用してsshサービスを再起動します。
[[email protected] ~] # systemctl restart sshd
手順:4)ユーザーのホームディレクトリに必要な権限を設定します
デモのように、sftpユーザーとしてjack userを使用しているので、次のコマンドを実行して、彼のホームディレクトリに必要な権限を設定します。
[[email protected] ~]# chmod 755 /home/jack [[email protected] ~]# chown root /home/jack [[email protected] ~]# chgrp -R sftp_users /home/jack>
ジャックユーザーにファイルのアップロードを許可する必要がある場合 、次に、以下の権限でアップロードフォルダを作成します。
[[email protected] jack]# mkdir /home/jack/upload [[email protected] jack]# chown jack. /home/jack upload/
システムでselinuxが有効になっている場合は、次のコマンドを実行してselinuxルールを設定します。
[[email protected] ~] setsebool -P ssh_chroot_full_access on
手順:5)Sftpサーバーをテストします
最初に、ジャックユーザー経由でsshを使用してシステムにアクセスしてみてください
上記の出力でわかるように、ユーザージャックはsshを許可されています。
それでは、sftpを使用してログインしてみましょう。
上記のように、ジャックユーザーはSFTP経由でログインしていますが、chroot環境のためディレクトリを変更できません。
次に、アップロードとダウンロードを実行します。 以下に示すようにテストします:
上記のように、アップロードとダウンロードの両方がジャックユーザーにとって正常に機能しています。これで記事は終わりです。以下のコメントセクションでフィードバックやコメントを共有してください。
また読む :Debian10でChrootを使用してSFTPサーバーを構成する方法