Me gustaría crear un usuario en OS X que tenga privilegios de inicio de sesión ssh remotos donde pueda acceder a una determinada carpeta/ruta/a/los/bienes/ y agregar/modificar/eliminar archivos manualmente o a través de rsync mientras el resto de la Mac está fuera de los límites (fuera de su directorio de inicio).
Idealmente, el usuario no debería tener acceso para ejecutar ningún otro programa que no sea rsync.
Este usuario solo será utilizado por un servidor de compilación para iniciar sesión e implementar archivos. Quiero usar un par de claves pública/privada para que el script de compilación no requiera ingresar una contraseña.
¿Cómo puedo lograr esto?
La mejor manera de hacer esto es crear un chroot jail para el usuario. Limpiaré la respuesta aquí cuando llegue a casa, pero publiqué la solución en mi blog.
https://thefragens.com/chrootd-sftp-on-mac-os-x-servidor/
A continuación se encuentran la mayoría de las instrucciones de la publicación anterior.
Primero, debe crear el nuevo usuario en Workgroup Admin y asignarle privilegios de acceso para SSH a través de Server Admin o asignarlo a un grupo que tenga privilegios de acceso SSH. Más discusión está abajo.
Desde la Terminal, comience por la derecha.
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
Cada nuevo usuario adicional agregado será algo similar a lo siguiente.
sudo mkdir -p /chroot/user2/scratchpad
sudo chown root /chroot/user2
sudo chown user2 /chroot/user2/scratchpad
sudo chmod -R 755 /chroot/user2
Cada carpeta en la ruta al chroot jail debe ser propiedad de root
. No creo que importe en qué grupo está la carpeta. Lo que hice arriba fue
/etc/sshd_config
root
Ahora para editar /etc/sshd_config
a lo siguiente.
#Subsystem sftp /usr/libexec/sftp-server
Subsystem sftp internal-sftp
Match User user
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /chroot/user
Esto crea una cárcel chroot que cuando el usuario inicia sesión los colocará en la carpeta /chroot/user
, en esa carpeta hay una carpeta a la que pueden agregar cosas /chroot/user/scratchpad
.
Si desea crear un grupo en Workgroup Admin para 'Chroot Users', agregue los nuevos usuarios que creó en Workgroup Admin al grupo, no tendrá que seguir editando el /etc/sshd_config
archivo. En lugar de lo anterior, agregue lo siguiente. Asegúrese de agregar el grupo 'Usuarios de Chroot' a la ACL de acceso SSH en Server Admin.
Match Group chrootusers
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /chroot/%u
Para probar si lo anterior funciona, emita lo siguiente desde la terminal.
$ sftp user@domain.com
Password:
sftp>
afragante