私はUbuntu 22.04.3を実行しており、SSHDを介してSFTPサーバーを構成しました。私は複数のユーザーホームディレクトリを持っていますが、それぞれドロップフォルダと選択フォルダがあります。私の管理ユーザーはサーバーを閲覧し、すべてのディレクトリの内容を表示できます。管理者は、他のユーザーのディレクトリにあるファイルを追加または削除することはできません。上記のピックアップおよび発信ディレクトリはルートが所有し、グループには「sftp」というラベルが付けられています。 sftpグループには、サーバーにアクセスしてファイルを選択/削除したいすべてのユーザーが含まれています。私の管理ユーザーはsftpグループに属していません。 SFTPグループに管理者を追加すると、管理者としてサーバーにアクセスできなくなります。管理者がグループに属していない場合はサーバーにアクセスできますが、sftpグループに属するディレクトリからファイルを追加および削除することはできません。
私のsshd.confは次のようになります。
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
PasswordAuthentication yes
Match group sftp
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
どんな指針でも大変感謝いたします。
編集1:
ls -ld pickup
プログラムdrwxrwxr-x 2 root sftp 4096 Dec 18 16:22 pickup
編集2:
私はWinSCPとFileZillaを使用してサーバーに接続しています。端末の使用が初めてで、クライアントとファイルを送受信する必要があるユーザーがいます。この管理者アカウントは現在サーバー上のすべてのファイルを表示できますが、ファイル(.xlsxなど)を追加または削除することはできません。ターミナルエクスペリエンスがない人やSFTPが何であるかを理解していない人には、サーバーへのフルアクセスと制御権限を与えません。それは賢明ではないことです。私がしたいのは、テストするアカウントを作成することです。これにより、ユーザーにアカウントを付与する前に、アカウントにどの権限と属性を付与する必要があるかを確認できます。
現在、アカウントはなどのディレクトリにあるファイルを表示できますが、/home/client1/dropoff
ドロップオフディレクトリからファイルを追加または削除することはできません。/home/
すべてのクライアントディレクトリとサブディレクトリを参照して移動し、ファイルを自由に追加または削除するには、アカウントが必要です。現在、私のクライアントユーザーは自分のホームディレクトリ/client1/
とそのサブディレクトリにのみアクセスできます。顧客アカウントはサブディレクトリと同様に「sftp」グループのメンバーであるため、問題なくファイルを追加または削除できます。
この管理者アカウントをsftpグループに追加しようとしましたが、これによりWinSCPまたはFileZillaを介してサーバーに接続できなくなります。 WinSCPでSFTP設定のプロトコルオプションを「default」から「sudo su -c /bin/sftp-server」に変更しようとしましたが、エラーが発生しました。Cannot initialize SFTP protocol. Is the host running an SFTP server?
サーバーとプロトコルを確認するときは、この情報を知っています。ファイル転送プロトコルには「SFTP-3」というラベルが付いています。
私の管理者アカウントが属するグループは次のとおりです。
sudo adm cdrom dip plugdev lxd ftpadmin
答え1
コメントによれば、あなたが言う「管理者ユーザー」は、「FTP / SFTPゲートキーパーユーザー」と同じ名前で呼ばれるべきです。
この目的のためにグループを作成し、次のことを行う必要があります。両方「管理者ユーザー」およびこのグループのピックアップディレクトリのメンバーであるユーザー。
ファイルの条項はグループのメンバーをホームディレクトリに制限し、SFTPアクセスのみを許可するため、このsftp
グループはこの目的には適していません。明らかに、「管理者」はピックアップディレクトリ管理タスクを実行できないため、このようなことが発生したくありません。Match
sshd_config
ピックアップ/ドロップオフディレクトリはそのユーザーが所有し、chgrp
この新しいグループに追加する必要があります。次に、選択/ドロップディレクトリに設定する必要がありますchmod g+swx
。これにより、選択/ドロップユーザーが入れたすべての新しいファイルが新しいグループのグループ所有権を持つようになり、新しいグループのメンバーがそのディレクトリ(ユーザー自身と管理者ユーザーの選択/削除)の読み取り/書き込みアクセスを許可します。
管理ユーザーは新しいグループのメンバーである必要がありますが、このsftp
グループには属してはいけません。
このように権限を設定したら、コマンドラインに慣れていない管理者アカウントから強力なグループメンバーシップを削除できますsudo
。adm
管理者がSFTPにのみアクセスするように制限したい場合(コマンドラインに慣れていないと言ったため)、次の場所にある管理者用の新しいMatch
ブロックを作成できます。sshd_config
後ろにピースMatch group sftp
:
Match group <new group>
X11Forwarding no
AllowTCPForwarding no
ForceCommand internal-sftp
これにより、管理者ユーザーアカウントを使用したコマンドラインアクセスが防止され、厳密にSFTPベースのピックアップ/配送ディレクトリ管理アカウントになります。この設定はグループメンバーシップに基づいているため、後で簡単にユーザーを作成してこの新しいグループに追加して、新しいピックアップマネージャアカウントを追加できます。