Chtěl bych poskytnout dočasný přístup SFTP pracovníkovi podpory. Jak vytvořím uživatele SFTP? A jak jej mohu po dokončení úlohy smazat?
Jak pro ně také určím domovský adresář? Mohu jim zabránit v přístupu k určitým podadresářům v jejich domovském adresáři?
Používáme CentOS 6.3 a fzSftp
Přijatá odpověď:
Nechrootový přístup
Pokud nemáte nastavený FTP server a důvěřujete uživateli, který se bude přihlašovat, že se ve vašem serveru příliš nehrabe, byl bych nakloněn dát mu místo toho účet k SFTP do systému.
Wiki CentOS udržuje jednoduchý návod s názvem:Jednoduché nastavení SFTP, díky kterému je to docela bezbolestné.
Říkám, že je to bezbolestné, protože si doslova musíte vytvořit účet a ujistit se, že firewall povoluje provoz SSH, ujistěte se, že služba SSH běží, a máte hotovo.
Pokud sshd
již neběží:
$ /etc/init.d/sshd start
Chcete-li přidat uživatele:
$ sudo useradd userX
$ sudo passwd userX
... set the password ...
Až účet dokončíte:
$ sudo userdel -r userX
Přístup chroot
Pokud na druhou stranu chcete omezit tohoto uživatele na určený adresář, server SFTP, který je součástí SSH (openssh), poskytuje konfiguraci, díky které je také snadné povolit. Je to trochu pracnější, ale ne moc. Kroky jsou popsány zde v tomto tutoriálu s názvem:Jak nastavit Chroot SFTP v Linuxu (povolit pouze SFTP, ne SSH).
Proveďte tyto změny v /etc/ssh/sshd_config
soubor.
Subsystem sftp internal-sftp
## You want to put only certain users (i.e users who belongs to sftpusers group) in the chroot jail environment. Add the following lines at the end of /etc/ssh/sshd_config
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
Nyní budete muset vytvořit chrootovaný strom adresářů, do kterého bude tento uživatel uzamčen.
$ sudo mkdir -p /sftp/userX/{incoming,outgoing}
$ sudo chown guestuser:sftpusers /sftp/guestuser/{incoming,outgoing}
Oprávnění by měla vypadat takto:
$ ls -ld /sftp/guestuser/{incoming,outgoing}
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/outgoing
Adresáře nejvyšší úrovně jako tento:
$ ls -ld /sftp /sftp/guestuser
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser
Nezapomeňte restartovat sshd
server:
$ sudo service sshd restart
Nyní vytvořte účet userX:
$ sudo useradd -g sftpusers -d /incoming -s /sbin/nologin userX
$ sudo passwd userX
... set password ...
Správnost vytvoření účtu můžete zkontrolovat:
$ grep userX /etc/passwd
userX:x:500:500::/incoming:/sbin/nologin
Až účet dokončíte, smažte jej stejným způsobem jako výše:
$ sudo userdel -r userX
…a nezapomeňte odstranit změny konfiguračního souboru, které jsme provedli výše, a poté restartujte sshd
aby byly znovu aktivní.