16 votes

Créer un utilisateur distant uniquement dans OS X?

Je voudrais créer un utilisateur sur OS X qui a des privilèges de connexion ssh à distance où ils peuvent accéder à un certain dossier /chemin/vers/les/biens/ et ajouter/modifier/supprimer des fichiers manuellement ou via rsync alors que le reste du Mac leur est interdit (en dehors de leur répertoire personnel).

Idéalement, l'utilisateur ne devrait pas avoir accès à exécuter d'autres programmes que rsync.

Cet utilisateur va simplement être utilisé par un serveur de construction pour se connecter et déployer des fichiers. Je veux utiliser une paire de clés public/privé afin que le script de construction ne nécessite pas de mot de passe.

Comment puis-je accomplir cela?

9voto

user16797 Points 331

La meilleure façon de faire cela est de créer une prison chroot pour l'utilisateur. Je vais nettoyer la réponse ici quand je serai rentré chez moi, mais j'ai posté la solution sur mon blog.

https://thefragens.com/chrootd-sftp-on-mac-os-x-server/

Voici la plupart des instructions de l'article ci-dessus.

Tout d'abord, vous devez créer le nouvel utilisateur dans Workgroup Admin et leur attribuer des droits d'accès SSH via Server Admin ou les attribuer à un groupe qui a des privilèges d'accès SSH. Plus de discussions ci-dessous.

Depuis le Terminal, commencez correctement.

sudo cp /etc/sshd_config /etc/sshd_config.bkup

sudo chown root /
sudo chmod 755 /
sudo mkdir -p /chroot/user/scratchpad
sudo chown -R root /chroot
sudo chown user /chroot/user/scratchpad
sudo chmod -R 755 /chroot

Chaque nouvel utilisateur ajouté sera alors quelque chose du genre suivant.

sudo mkdir -p /chroot/user2/scratchpad
sudo chown root /chroot/user2
sudo chown user2 /chroot/user2/scratchpad
sudo chmod -R 755 /chroot/user2

Chaque dossier dans le chemin de la prison chroot doit appartenir à root. Je ne pense pas que le groupe du dossier ait de l'importance. Ce que j'ai fait ci-dessus était de

  1. faire une sauvegarde de/etc/sshd_config
  2. changer la propriété du répertoire racine en root
  3. modifier les autorisations du répertoire racine en 755
  4. créer un dossier chroot
  5. créer un dossier utilisateur à l'intérieur du dossier chroot
  6. créer un dossier à l'intérieur du dossier utilisateur que l'utilisateur peut modifier
  7. définir la propriété et les autorisations

Maintenant, pour modifier /etc/sshd_config comme suit.

#Subsystem  sftp    /usr/libexec/sftp-server
Subsystem   sftp    internal-sftp

Match User user
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    ChrootDirectory /chroot/user

Cela crée une prison chroot qui, lorsque l'utilisateur se connecte, les déposera dans le dossier /chroot/user, dans ce dossier se trouve un dossier où ils peuvent ajouter des choses /chroot/user/scratchpad.

Si vous souhaitez créer un groupe dans Workgroup Admin pour les 'Chroot Users' puis ajouter les nouveaux utilisateurs que vous avez créés dans Workgroup Admin au groupe, vous n'aurez pas à continuer à modifier le fichier /etc/sshd_config. Au lieu de ce qui précède, ajoutez ce qui suit. Assurez-vous d'ajouter le groupe 'Chroot Users' à la liste d'accès SSH dans Server Admin.

Match Group chrootusers
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    ChrootDirectory /chroot/%u

Pour tester si ce qui précède fonctionne, lancez la commande suivante depuis le terminal.

$ sftp user@domain.com
Mot de passe :
sftp>

1 votes

Résoudre simplement mes propres problèmes et documenter au cas où j'aurais besoin de le refaire. ;-)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X