web-dev-qa-db-ja.com

アクセスが制限されたSFTPユーザーを設定しようとしています

私は誰かがこの問題を助けてくれることを望んでいた

「アクセスが制限されたSFTPユーザーをセットアップしようとしています。」

DigitalOceanサーバーでUbuntu 16.04.2 x64を実行しています。これを DigitalOceanフォーラム にも投稿しました。

現在の設定

  • ServerPilotを使用してサーバーをセットアップしました。
  • system userserverpilotと呼ばれます
  • serverpilotにはルート権限があり、
  • homeフォルダーは次の場所にあります:/srv/users/serverpilot
  • publicフォルダーは次の場所にあります:/srv/users/serverpilot/apps/test-app/public/

私がやりたいこと

2番目のユーザーを追加したいが、ユーザーができることを制限したい:

  • newslettersという名前の単一のフォルダーにのみアクセスします。publicフォルダーにあります。
  • ユーザーは、SFTP経由でファイルをアップロード、削除、および名前変更できる必要があります。
  • ユーザーは、newsletters、フォルダーから移動できないようにする必要があります

これは、newslettersフォルダーへのフルパスです:/srv/users/serverpilot/apps/test-app/public/newsletters

これまでにやったこと

このガイドに従いました ユーザーを特定のディレクトリに制限するにはどうすればよいですか? Maxamilian Demian(@Maxoplata)による、Jonathan Tittle(@jtittle)によるすばらしい返信があります。

ただし、SFTPを介したログインにまだ問題があります

私が行ったすべてのステップをリストアップしました-うまくいけば、より多くの経験を持つ誰かが私のエラーを見つけることができるでしょう!

1.新しいユーザーを作成しました

  1. rootとしてログイン
  2. user-sftp-onlyという新しいユーザーを作成しました
  3. adduser user-sftp-only
  4. userが作成されたことを確認できます
  5. compgen -u
  6. user-sftp-onlyはリストの一番下にあります
  7. 次のコマンドを実行して、ユーザーのパスとシェルアクセスを確認することもできます。
  8. grep user-sftp-only /etc/passwd出力:

    user-sftp-only:x:1004:1007:,,,:/home/user-sftp-only:/bin/bash
    

2.新しいユーザーにルート権限を付与します

  1. 新しいユーザーにuser-sftp-onlyルート権限を付与します
  2. gpasswd -a user-sftp-only Sudo
  3. rootとしてログアウト

3.新しいディレクトリを作成します

  1. user-sftp-onlyとしてログインしました
  2. publicという新しいディレクトリをnewslettersという名前で作成します。
  3. cd /srv/users/serverpilot/apps/test-app/public/
  4. に続く:
  5. Sudo mkdir newsletters

4.ディレクトリのアクセス許可を確認します

前のステップのpublicフォルダー内で、実行します

$ ls -al
drwxr-xr-x+ 3 serverpilot serverpilot 4096 Mar  7 15:26 .
drwxr-xr-x+ 3 serverpilot serverpilot 4096 Mar  3 16:22 ..
-rw-r--r--+ 1 serverpilot serverpilot 3393 Mar  3 16:22 index.php
drwxrwxr-x+ 2 root        root        4096 Mar  7 15:26 newsletters

DigitalOceanのさまざまな投稿を読んで、グループを作成して新しいユーザーuser-sftp-onlyをそのグループに割り当て、root rootをユーザーとグループの名前に変更する必要があることを知っています。

5.新しいグループを作成する

  1. user-sftp-onlyとしてログインしました
  2. Sudo groupadd group-sftp-only
  3. groupが作成されたことを確認できます
  4. compgen -g
  5. group-sftp-onlyはリストの一番下にあります

注:_user-sftp-onlyという新しいユーザーもこのリストに含まれていますか?

6.ユーザーをグループに追加します

  1. rootとしてログイン
  2. ユーザーuser-sftp-onlygroup-sftp-onlyというグループに追加しました
  3. これを行うと、ユーザーuser-sftp-onlyとしてSSHで接続できなくなります

    usermod -g group-sftp-only -d /srv/users/serverpilot/apps/test-app/public/newsletters -s /sbin/nologin user-sftp-only
    
    • -gはグループ名を指定します
    • -dは、ユーザーのホームディレクトリを指定します
    • -sはシェルアクセスを指定します(/ sbin/nologinは、このユーザーに対してSSHが無効であることを意味します)

7.ユーザーへの変更を確認します

rootとしてログイン

$ grep user-sftp-only /etc/passwd
user-sftp-only:x:1001:1004:,,,:/srv/users/serverpilot/apps/test-app/public/newsletters:/sbin/nologin

8. SSH設定を変更してSFTPを許可する

  1. rootとしてログイン
  2. nano /etc/ssh/sshd_config
  3. この行をコメントアウトしました:
  4. #Subsystem sftp /usr/lib/openssh/sftp-server -l INFO
  5. sshd_configvery bottomに以下を追加しました:

     Subsystem sftp internal-sftp
        Match group group-sftp-only
        ChrootDirectory %h
        ForceCommand internal-sftp
    

9. SSHを再起動します

  1. まだrootとしてログインしています
  2. service ssh restart

10.アクセス許可を変更する

  1. まだrootとしてログインしています
  2. これはユーザーuser-sftp-onlyのホームディレクトリです
  3. /srv/users/serverpilot/apps/test-app/public/newsletters
  4. これを使用して、ホームディレクトリがユーザーとグループによって所有されていることを確認します

    chown -R user-sftp-only:group-sftp-only /srv/users/serverpilot/apps/test-app/public/newsletters
    

11.所有権の変更を確認する

まだrootとしてログインしています:

$ cd /srv/users/serverpilot/apps/test-app/public/`
$ ls -al
drwxr-xr-x+ 3 serverpilot    serverpilot     4096 Mar  7 15:26 .
drwxr-xr-x+ 3 serverpilot    serverpilot     4096 Mar  3 16:22 ..
-rw-r--r--+ 1 serverpilot    serverpilot     3393 Mar  3 16:22 index.php
drwxrwxr-x+ 2 user-sftp-only group-sftp-only 4096 Mar  7 15:26 newsletters

$ cd /srv/users/serverpilot/apps/test-app/public/newsletters
$ ls -al
drwxrwxr-x+ 2 user-sftp-only group-sftp-only 4096 Mar  7 15:26 .
drwxr-xr-x+ 3 serverpilot    serverpilot     4096 Mar  7 15:26 ..

それは私がやっていることです。ただし、新しいユーザーuser-sftp-onlyとしてSFTP経由でログインできません

2
Stephen Meehan
tail -f /var/log/syslog

User-sftp-onlyアカウントにsftpしてみてください注成功/失敗情報メッセージ

失敗した場合、次の行を/etc/ssh/sshd_configに追加します。

AllowUsers user-sftp-only

次に実行します:

Sudo service sshd restart
1
jones0610