Browse Source
new: [sftp] add doc to ``sftp`` charm
new: [sftp] add doc to ``sftp`` charm
Signed-off-by: Valentin Lab <valentin.lab@kalysto.org>pull/19/head
Valentin Lab
3 years ago
1 changed files with 75 additions and 0 deletions
@ -0,0 +1,75 @@ |
|||||
|
* Presentation |
||||
|
|
||||
|
This charm allows you to host a SFTP (using ssh) with it's own user |
||||
|
database. They can be authenticated with a password or with a SSH key. |
||||
|
|
||||
|
You can choose exactly what data will be accessible to them by mount |
||||
|
binding each directory you want to share from the host in their own |
||||
|
home directory in the container. (see the examples). |
||||
|
|
||||
|
The permissions should be managed through group permissions, directly |
||||
|
from the host and in the shared directory. |
||||
|
|
||||
|
Each user in the container will be part of multiple groups |
||||
|
(configurable via the options of the charm in your service definition |
||||
|
of the =compose.yml=), and the GID of the groups will be the same on |
||||
|
the host and on the container. |
||||
|
|
||||
|
* Example configuration |
||||
|
|
||||
|
#+begin_src yaml |
||||
|
sftp: |
||||
|
docker-compose: |
||||
|
ports: |
||||
|
- "10622:22" |
||||
|
volumes: |
||||
|
## Here we allow access to specific directories only by binding |
||||
|
## them in their home directory: |
||||
|
- /srv/datastore/data/www/var/www/www.myclientwebsite.com:/home/myclient1/www.myclientwebsite.com:rw |
||||
|
- /srv/datastore/data/www/var/www/www.myclientwebsite.com:/home/myclient2/www.myclientwebsite.com:rw |
||||
|
options: |
||||
|
users: |
||||
|
myclient1: |
||||
|
## These groups are created on the container with the given GID |
||||
|
## Note that UID/GID are the same for the container and the host, |
||||
|
## So don't forget to give the appropriate rights from the host on |
||||
|
## the shared directory to ensure that access is effectively granted |
||||
|
## as you want to the customer |
||||
|
groups: |
||||
|
- sftpaccess-rw:3000 |
||||
|
password: FaKePaSSw0rdT0Ch4Ng3 |
||||
|
keys: |
||||
|
- "ssh-rsa AAAAB3NzaC2yc2Z..." |
||||
|
myclient2: |
||||
|
## These groups are created on the container with the given GID |
||||
|
## Note that UID/GID are the same for the container and the host, |
||||
|
## So don't forget to give the appropriate rights from the host on |
||||
|
## the shared directory to ensure that access is effectively granted |
||||
|
## as you want to the customer |
||||
|
groups: |
||||
|
- sftpaccess-rw:3000 |
||||
|
password: FaKePaSSw0rdT0Ch4Ng3 |
||||
|
keys: |
||||
|
- "ssh-rsa AAAAB3NzBC1yc2X..." |
||||
|
#+end_src |
||||
|
|
||||
|
|
||||
|
In this case, you'll need also to make sure to set up correctly the |
||||
|
directories you shared, in this example, only |
||||
|
=/srv/datastore/data/www/var/www/www.myclientwebsite.com= is shared : |
||||
|
you are expected to set the permissions of the group identified by the |
||||
|
id `3000`. |
||||
|
|
||||
|
Using getfacl/setfacl is the right tool most of the time. If you don't |
||||
|
have it: |
||||
|
|
||||
|
#+begin_src sh |
||||
|
apt-get install acl |
||||
|
#+end_src |
||||
|
|
||||
|
Then, you could: |
||||
|
|
||||
|
#+begin_src sh |
||||
|
find /srv/datastore/data/www/var/www/www.myclientwebsite.com -type d \ |
||||
|
-exec getfacl -mR d:g:3000:rwx,d:g:3000:rwx |
||||
|
#+end_src |
Write
Preview
Loading…
Cancel
Save
Reference in new issue