web-dev-qa-db-fra.com

Essayer de configurer un utilisateur SFTP avec un accès limité

J'espérais que quelqu'un pourrait m'aider avec ce problème

"Essayer de configurer un utilisateur SFTP avec un accès limité."

J'utilise Ubuntu 16.04.2 x64 sur un serveur DigitalOcean. J'ai posté ceci sur le forums DigitalOcean aussi.

Configuration actuelle

  • J'ai configuré mon serveur avec ServerPilot.
  • Le system user s'appelle serverpilot
  • serverpilot a les privilèges root,
  • Le dossier home se trouve dans: /srv/users/serverpilot
  • Le dossier public se trouve dans: /srv/users/serverpilot/apps/test-app/public/

Ce que je veux faire

Je veux ajouter un deuxième utilisateur, mais limiter ce que l'utilisateur peut faire:

  • Accédez uniquement à un seul dossier appelé newsletters, ce sera dans le dossier public.
  • L'utilisateur doit pouvoir télécharger, supprimer et renommer des fichiers via SFTP
  • L’utilisateur ne doit pas pouvoir quitter le dossier newsletters

C’est le chemin complet du dossier newsletters: /srv/users/serverpilot/apps/test-app/public/newsletters

Ce que j'ai fait jusqu'à présent

J'ai suivi ce guide Comment puis-je limiter un utilisateur à un répertoire spécifique? par Maxamilian Demian (@Maxoplata), Jonathan Tittle (@jtittle) a très bien répondu.

Cependant, j'ai toujours des problèmes pour me connecter via SFTP

J'ai énuméré toutes les étapes que j'ai effectuées - j'espère qu'une personne plus expérimentée sera capable de détecter mes erreurs!

1. Créé un nouvel utilisateur

  1. Connecté en tant que root
  2. Création d'un nouvel utilisateur appelé user-sftp-only
  3. adduser user-sftp-only
  4. Je peux vérifier que l'utilisateur a été créé en exécutant
  5. compgen -u
  6. user-sftp-only est au bas de la liste
  7. Je peux également voir quel est le chemin de l'utilisateur et l'accès à Shell en exécutant:
  8. grep user-sftp-only /etc/passwd génère:

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

2. Donner les nouveaux privilèges root

  1. Donner au nouvel utilisateur user-sftp-only les privilèges root
  2. gpasswd -a user-sftp-only Sudo
  3. Déconnexion en tant que root

3. Créer un nouveau répertoire

  1. Connecté en tant que user-sftp-only
  2. Créez un nouveau répertoire dans public appelé newsletters:
  3. cd /srv/users/serverpilot/apps/test-app/public/
  4. Suivi par:
  5. Sudo mkdir newsletters

4. Vérifier les permissions du répertoire

Toujours dans le dossier public de l'étape précédente, je lance

$ 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

Après avoir lu divers articles de DigitalOcean, je sais que je dois créer un groupe et affecter mon nouvel utilisateur user-sftp-only à ce groupe, puis remplacez root root par le nom de mon utilisateur et de mon groupe.

5. Créer un nouveau groupe

  1. Connecté en tant que user-sftp-only
  2. Sudo groupadd group-sftp-only
  3. Je peux vérifier que le groupe a été créé en exécutant
  4. compgen -g
  5. group-sftp-only est au bas de la liste

Remarque: Je remarque que mon nouvel utilisateur appelé user-sftp-only figure également dans cette liste?

6. Ajouter un utilisateur au groupe

  1. Connecté en tant que root
  2. Ajout de l'utilisateur user-sftp-only à un groupe appelé group-sftp-only
  3. Cela signifie qu'il n'est plus possible de SSH dans l'utilisateur user-sftp-only

    usermod -g group-sftp-only -d /srv/users/serverpilot/apps/test-app/public/newsletters -s /sbin/nologin user-sftp-only
    
    • -gspécifie le nom du groupe
    • -d spécifie le répertoire de base de l'utilisateur
    • -s spécifie l'accès au shell (/ sbin/nologin signifie que SSH est désactivé pour cet utilisateur)

7. Vérifiez les modifications apportées à l'utilisateur

Connecté en tant que root

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

8. Modifier la configuration SSH pour autoriser SFTP

  1. Connecté en tant que root
  2. nano /etc/ssh/sshd_config
  3. Commenté cette ligne:
  4. #Subsystem sftp /usr/lib/openssh/sftp-server -l INFO
  5. Au même en bas de sshd_config ajouté ceci:

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

9. Redémarrez SSH

  1. Toujours connecté en tant que root
  2. service ssh restart

10. Modifier les autorisations

  1. Toujours connecté en tant que root
  2. Ceci est le répertoire personnel de l'utilisateur user-sftp-only
  3. /srv/users/serverpilot/apps/test-app/public/newsletters
  4. Utilisé pour s'assurer que le répertoire personnel appartient à l'utilisateur et au groupe.

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

11. Vérifier le changement de propriétaire

Toujours connecté en tant que 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 ..

C'est là que je suis en train de faire. Cependant, je ne peux pas me connecter en tant que nouvel utilisateur user-sftp-only via SFTP

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

Essayez de vous connecter à un compte utilisateur uniquement. Notez le message d’information de réussite/échec.

En cas d'échec, ajoutez la ligne suivante à /etc/ssh/sshd_config:

AllowUsers user-sftp-only

puis lancez:

Sudo service sshd restart
1
jones0610