
Es gibt viele Tutorials zum Erstellen eines chroot-SFTP, aber ich würde gerne SSH verwenden, weil es viel schneller ist, einfach wget
, unzip
, mysql
und mysqldump
zu verwenden, als FTP und phpMyAdmin herumzuwerfen. Die Methode sollte außerdem sauber (ohne manuelle ldd
Magie) und erweiterbar sein, sodass ich Pakete problemlos hinzufügen und aktualisieren kann.
Antwort1
Glücklicherweise konnte ich eine Möglichkeit finden, das zu tun.
Schritt 1: Eine Gruppe für Chroot-Benutzer hinzufügen
groupadd chrootusers
Schritt 2: SSH konfigurieren
nano /etc/ssh/sshd_config
Ersetzen
Subsystem sftp /usr/libexec/openssh/sftp-server
Mit
Subsystem sftp internal-sftp
Am Ende einfügen
Match Group chrootusers
ChrootDirectory /home/%u
Laufen
systemctl restart sshd
systemctl status sshd
Schritt 3: Einen Benutzer hinzufügen
Wechseln Sie peter
zu Ihrem gewünschten Benutzernamen.
export NEW_USER_NAME=peter
useradd ${NEW_USER_NAME}
usermod -G chrootusers -d / ${NEW_USER_NAME}
passwd ${NEW_USER_NAME}
Schritt 4: Pakete installieren und die notwendige Verzeichnisstruktur erstellen
yum --installroot=/home/${NEW_USER_NAME} --releasever=7 --nogpg --disablerepo='*' --enablerepo=base install centos-release openssh-clients wget vi nano zip unzip tar mariadb findutils iputils bind-utils rsync
Schritt 5: Montieren proc
unddev
echo "none /home/${NEW_USER_NAME}/proc proc defaults 0 0" >> /etc/fstab
echo "/dev /home/${NEW_USER_NAME}/dev none bind 0 0" >> /etc/fstab
Laufen
mount -a
Schritt 6: Konfigurieren der DNS-Server
echo "nameserver 8.8.8.8" >> /home/${NEW_USER_NAME}/etc/resolv.conf
echo "nameserver 8.8.4.4" >> /home/${NEW_USER_NAME}/etc/resolv.conf
Das ist alles.
Beachten Sie, dass dies $NEW_USER_NAME
an die aktuelle Sitzung gebunden ist!
Beginnen Sie beim Hinzufügen eines weiteren Benutzers mit Schritt 3.
Um später weitere Pakete zu installieren, verwenden Sie denselben Befehl wie in Schritt 4.
Wenn Sie sich per SSH anmelden, erhalten Sie Meldungen wie cannot find name for user ID x
. Sie können diese gefahrlos ignorieren, aber wenn Sie sie loswerden möchten, müssen Sie den Benutzer in chroot duplizieren:
export NEW_USER_ID=$(id -u ${NEW_USER_NAME})
export NEW_USER_GROUP_ID=$(id -g ${NEW_USER_NAME})
chroot /home/${NEW_USER_NAME} /bin/bash -c 'useradd -u ${NEW_USER_ID} ${NEW_USER_NAME}'
chroot /home/${NEW_USER_NAME} /bin/bash -c 'groupadd -g ${NEW_USER_GROUP_ID} chrootusers'