You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
1.8 KiB
Markdown

# sftp configurstion
* [Reference](https://www.thegeekstuff.com/2012/03/chroot-sftp-setup/)
## Steps
1. Create a New Group
```sh
$ groupadd sftpusers
```
2. Create Users
```sh
# create guestuser
$ useradd -g sftpusers -d /incoming -s /sbin/nologin guestuser
# change guestuser password
$ passwd guestuser
# verify creation
$ grep guestuser /etc/passwd
# modify an existing user. eg john
$ usermod -g sftpusers -d /incoming -s /sbin/nologin john
```
3. Setup `sshd_config`
```sh
$ nano /etc/ssh/sshd_config
```
* Comment out `Subsystem sftp /usr/libexec/openssh/sftp-server`. Add the following
```txt
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
```
4. Create sftp home dirctory
```sh
$ mkdir /sftp
$ mkdir /sftp/guestuser
$ mkdir /sftp/guestuser/incoming
# set folder ownership
$ chown guestuser:sftpusers /sftp/guestuser/incoming
# set folder group
$ chgrp -R sftpusers /sftp/general
# Give write permission to the group
$ chmod -R g+w /sftp/general
#setup common folder for a group
$ groupadd sftp
$ mkdir /home/sftp
$ chown nobody:sftp /home/sftp/common
$ chmod 770 /home/sftp/common
$ useradd -d /home/sftp/common -g sftp sam
$ useradd -d /home/sftp/common -g sftp tom
$ chmod g+s /home/sftp/common
# verify ownership
$ ls -ld /sftp/guestuser/incoming
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming
$ ls -ld /sftp/guestuser
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser
$ ls -ld /sftp
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp
```
5. Restart sshd
```sh
$ service sshd restart
```
6 Test setup
```sh
# user should only able to access the incoming folder as root level
$ sftp guestuser@192.168.0.222
```