ACL et serveur FTP sous vsFTPd

ACL et serveur FTP sous vsFTPd - Divers - Linux et OS Alternatifs

Marsh Posté le 03-10-2007 à 16:19:30    

Bonjour à toutes et à tous,
 
je suis un noob en linux mais on m'a demandé de créer un serveur FTP sur un serveur dédié tournant sous fedora core 4. J'en ai un peu bavé des ronds de chapeau du fait de la "surdité volontaire" des techniciens de chez Orange qui me certifiaient que tout était installé sur le serveur et que c'était à moi de me débrouiller pour tout faire. Bien sûr, tout n'était pas sur le serveur et après quelques rotomontades, j'ai pu grâce à différents tutoriels trouvés sur le net mettre en place mon FTP.
 
Maintenant que tout fonctionne, on me demande de mettre en place des droits restrictifs d'accès à certains répertoires du FTP. Mais comme vous le savez tous, vsFTPd demande qu'un meta utilisateur virtuel soit créé et ensuite les autres utilisateurs sont créés à travers cet utilisateur virtuel (si j'ai bien tout compris). Et c'est là que se pose mon problème : est-ce possible de placer des ACL sur des répertoires pour des utilisateurs virtuels et si oui comment faire ?
 
Voici ci-dessous ce que je souhaiterai mettre en plce exactement :
 
ex : meta utilisateur virtuel : machinftp membre du groupe ftp
 
      utilisateurs créés : comm ; marketing ; distrib ; imprimeur ; bidule
 
      répertoires créés : /home/ftp/machinftp/Imprimeurs
                               /home/ftp/machinftp/marketing
                               /home/ftp/machinftp/comm
                               /home/ftp/machinftp/distrib
                               /home/ftp/machinftp/bidule
 
      droits souhaités : imprimeur peut lire dans le répertoire Imprimeurs et n'a pas accès aux répertoires
                              marketing peut lire, écrire et exécuter dans tout
                              comm peut lire et écrire dans comm et lire dans distrib
                              distrib peut lire dans distrib et c'est tout
                              bidule a tous les droits sur tout
 
Je vous rappelle que je suis un noob mais qui ne cherche qu'à apprendre et je m'excuse aussi par avance si ce sujet a déjà été traité mais j'ai recherché et rien trouvé de probant. De plus j'aurai besoin d'un exemple de ligne de commande car même si j'ai déjà tenté de mettre en place les ACL avec setfacl, le serveur me le refuse (cf. ci-dessous).
 
[root@cust-194 ~]# setfacl -Rm u:imprimeurs:r--  
> /home/ftp/olmixftp/Imprimeurs
>
> setfacl: Option -m: Invalid argument near character 3
 
Merci par avance, dans l'impatience de vous lire !

Reply

Marsh Posté le 03-10-2007 à 16:19:30   

Reply

Marsh Posté le 03-10-2007 à 16:37:12    

1. Dans un premier temps ton système de fichier est il monté avec l'option acl ?

 

2. Pour les utilisateurs virtuels je ne sais pas comment vsftpd les gère mais a priori les acls utilisent seulements les users présents dans /etc/passwd (et les groups dans /etc/groups).

 

3. La mise en place d'une acl correct : cf man 1 setfacl tu as des exemples à la fin.

 


Message édité par o'gure le 03-10-2007 à 17:06:52

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 03-10-2007 à 16:53:14    

Merci o'gure pour ta réponse supersonique.
 
je sais que la commande getfacl fonctionne mais je pense que c'est normal. Je fais comment pour vérifier tout ça ?
je te remercie.

Reply

Marsh Posté le 03-10-2007 à 16:55:35    

Citation :

[augure@loky] $ mount
/dev/hda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/hda3 on /home type ext3 (rw,acl)
/dev/hda5 on /usr type ext3 (rw)
/dev/hda6 on /var type ext3 (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)


Message édité par o'gure le 03-10-2007 à 16:56:21

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 03-10-2007 à 17:01:45    

Woaw ! tout ça ?! bon je tente alors. et la réponse devrait être ?

Reply

Marsh Posté le 03-10-2007 à 17:05:06    

Tout ca quoi ? :heink:

 

1. Tu tapes mount (le premier truc en gras et orange dans mon message) => ca t'affiche la liste des partitions montées avec les options de montage entre parenthèse.

 

2. Sur la ligne correspondant à ta partition il devrait y avoir marqué acl dans les options (Le second truc en gras et orange dans mon message).


Message édité par o'gure le 03-10-2007 à 17:07:07

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 03-10-2007 à 17:07:44    

et ben ça me met un erreur à chaque ligne. Je sais que je suis un peu concon mais je dois pouvoir comprendre qqch. Si je fait un yum install ACL, il me répond que tout est déjà installé (nothing to do).
Si j'ai bien suivi, il faut que je monte ma partition sur laquelle est le FTP pour les ACL ? mais la commande mount que tu me donnes me retourne une erreur : -bash: syntax error near unexpected token `('
 
En espérant que mon ignorance ne te dégoûte pas de me donner un coup de main.

Reply

Marsh Posté le 03-10-2007 à 17:09:11    

ah ben je comprends mieux. je viens de le faire et je n'ai pas la ligne avec ACL. Désolé.
 
QUe faut-il faire alors ?

Reply

Marsh Posté le 03-10-2007 à 17:11:02    

voilà la réponse complète à la commande mount :
 
/dev/sda3 on / type ext3 (rw)
/dev/proc on /proc type proc (rw)
/dev/sys on /sys type sysfs (rw)
/dev/devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
/dev/shm on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
//195.25.5.98/ohdo-cust13 on /obh-disk-backup type smbfs (0)
automount(pid8759) on /net type autofs (rw,fd=4,pgrp=8759,minproto=2,maxproto=4)
 
Je suis vraiment un non-comprenant comme disait Coluche !

Reply

Marsh Posté le 03-10-2007 à 17:12:17    

editer le fichier /etc/fstab, rajouter l'option acl pour la partition qui va bien et remonter la partition

#   mount -o remount /le/point/de/montage

 

Référence :
man mount

 

et arrête de te diminuer en te disant que t'es concon/non-comprenant. Si tu sais pas, apprends !


Message édité par o'gure le 03-10-2007 à 17:13:41

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 03-10-2007 à 17:12:17   

Reply

Marsh Posté le 03-10-2007 à 17:15:52    

ok mille merci, je regarde ça de suite mais dans /etc/passwd les utilisateurs du FTP n'y sont pas. Seul le meta-utilisateur virtuel s'y trouve (c'est un des principes de sécurité de vsFTPd). je tente quand même.

Reply

Marsh Posté le 03-10-2007 à 17:22:56    

Voilà mon fichier fstab :
 
# This file is edited by fstab-sync - see 'man fstab-sync' for details
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
/dev/devpts             /dev/pts                devpts  gid=5,mode=620  0 0
/dev/shm                /dev/shm                tmpfs   defaults        0 0
/dev/proc               /proc                   proc    defaults        0 0
/dev/sys                /sys                    sysfs   defaults        0 0
LABEL=SWAP-sda2         swap                    swap    defaults        0 0
//195.XX.X.XX/ohdo-cust13 /obh-disk-backup smbfs username=ohdo-cust13,password=XXXXXXXXX 0 0
/dev/hdc                /media/cdrom            auto    pamconsole,exec,noauto,managed 0 0
 
Je n'ai pas la partition où est le home (dans lequel se trouve l'espace ftp). A moins qu'elle ne porte un autre nom. Ou peut-être faut-il que je la rajoute carrément ?

Reply

Marsh Posté le 03-10-2007 à 17:25:59    

C'est hiérarchique. Si tu n'as pas de partition /home dédiée c'est que /home est sur une partition dont le point de montage est un répertoire au-dessus. En l'occurence ici : /


Message édité par o'gure le 03-10-2007 à 17:26:44

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 03-10-2007 à 17:27:59    

ok. et ben, je vais devenir un vrai pingouin à force. il faut donc que je rajoute l'option ACL dans la première ligne avec / ? je vois ça de suite.

Reply

Marsh Posté le 03-10-2007 à 17:38:10    

je fais un  
# mount -o remount /
 
mais il me retourne la réponse suivante : mount: / not mounted already, or bad option
donc je pense que je dois oublier qqch par rapport au home mais quoi donc ? là est la question.

Reply

Marsh Posté le 03-10-2007 à 17:43:26    

j'ai fait un :
# mount -o remount / /
 
et il ne m'a pas retourné d'erreur donc je vais voir maintenant si cela a fonctionné.
je te tiens au courant de toute façon. Merci.

Reply

Marsh Posté le 03-10-2007 à 17:55:08    

et ben non, c'était trop beau pour que cela fonctionne du premier coup. je n'ai pas de point de montage avec un acl.
 
voilà le fstab avec l'option acl (est-ce au bon endroit) :
# This file is edited by fstab-sync - see 'man fstab-sync' for details
LABEL=/                 /                       ext3    (rw,acl)       1 1  
LABEL=/boot             /boot                   ext3    defaults        1 2
/dev/devpts             /dev/pts                devpts  gid=5,mode=620  0 0
/dev/shm                /dev/shm                tmpfs   defaults        0 0
/dev/proc               /proc                   proc    defaults        0 0
/dev/sys                /sys                    sysfs   defaults        0 0
LABEL=SWAP-sda2         swap                    swap    defaults        0 0
//195.XX.X.XX/ohdo-cust13 /obh-disk-backup smbfs username=ohdo-cust13,password=XXXXXXX 0 0
/dev/hdc                /media/cdrom            auto    pamconsole,exec,noauto,managed 0 0
 
et voilà la réponse à la commande mount après avoir fait # mount -o remount / /   :
 
/dev/sda3 on / type ext3 (rw)
/dev/proc on /proc type proc (rw)
/dev/sys on /sys type sysfs (rw)
/dev/devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
/dev/shm on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
//195.25.5.98/ohdo-cust13 on /obh-disk-backup type smbfs (0)
automount(pid8759) on /net type autofs (rw,fd=4,pgrp=8759,minproto=2,maxproto=4)
 
Voilà où j'en suis pour le moment.

Reply

Marsh Posté le 03-10-2007 à 18:22:17    

pourquoi tu mets deux /  [:petrus dei]
Ah sinon vu que c'est la partition racine, c'est peut etre pas possible => reboot

 

heu et les options dans le fstab c'est pas avec des parentheses qu'il faut mettre [:mlc2]
c'est

defaults,acl

 

lis un peu les man que je te file en lien bordel...


Message édité par o'gure le 03-10-2007 à 18:25:20

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 03-10-2007 à 18:25:33    

ben j'ai mis deux / parce que sur le fstab, il y en a deux et que quand j'en mets qu'un, message d'erreur.
 
Je vais sans doute avoir du mal à le rebooter comme ça le serveur parce que c'est un serveur dédié qui nous sert aussi de serveur web pour le site de la société.
 
bon, je continue à chercher mais je vais rentrer chez moi. je te tiens au courant demain. Merci encore.

Reply

Marsh Posté le 03-10-2007 à 18:26:17    

désolé, je le refais. je t'avais dis bien dit que je n'y connaissais rien en linux.

Reply

Marsh Posté le 03-10-2007 à 18:27:33    

Et l'erreur c'était quoi ? Tu l'as lu et bien sûr tu as essayé de la comprendre ?
 
=> ta syntaxe est mauvaise dans /etc/fstab.


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 03-10-2007 à 18:28:35    

et bien voilà nickel chrome j'ai bien mes acl dans ma réponse après un # mount.
Je continue demain l'aventure dans le long chemin des acl.
 
Merci et bonne soirée.

Reply

Marsh Posté le 03-10-2007 à 18:31:35    

je n'avais pas bien compris le coup des () et donc même # mount -o remount semblait fonctionner mais en fait non. et l'erreur pour un seul /, c'était que ce répertoire n'existait pas.
 
Voilà, bonne nuit.

Reply

Marsh Posté le 04-10-2007 à 09:03:18    

C'est bon alors ???


---------------
- Feed-back - - Jeu du moment: J’ai un backlog monstre sur Switch - C'est moi Bananecafe
Reply

Marsh Posté le 04-10-2007 à 10:18:50    

Bonjour,  
et bien malheureusement non, ça ne fonctionne toujours pas. Je rentre bien la commande setfacl avec la bonne syntaxe et il me retourne par exemple que setfacl: u:imprimeur:r: No such file or directory
 
je pense que c'est rapport aux utilisateurs virtuels. je continue de regarder si je n'ai pas fait une erreur de syntaxe.
 
Si par contre qqn a une solution, je suis preneur.
 
Merci

Reply

Marsh Posté le 04-10-2007 à 10:40:21    

Ce qui est étrange, c'est qu'il me dit qu'aucun fichier ou répertoire de ce nom existe alors que c'est un user... C'est là que je bloque un peu.

Reply

Marsh Posté le 04-10-2007 à 11:12:31    

La syntaxe est la suivante:
setfacl -Rm u:utilisateur:droit /ton/chemin
 
exemple:
 
setfacl -Rmu:numrobis:rxw /hfr/osa
 
 :hello:


Message édité par numrobis le 04-10-2007 à 11:13:06

---------------
- Feed-back - - Jeu du moment: J’ai un backlog monstre sur Switch - C'est moi Bananecafe
Reply

Marsh Posté le 04-10-2007 à 11:17:16    

Oui, c'est exactement ce que je mets.
ex:
setfacl -Rm u:imprimeur:r /home/ftp/machinftp/Imprimeurs
 
et la réponse est soit  
setfacl: Option -m: Invalid argument near character 3 (quand je mets que -m)
soit
setfacl: u:imprimeur:r: No such file or directory (quand je mets -Rm)
 
Donc je mets -Rm pour que les droits soient récursifs mais il ne me prend pas mon utilisateur (qui est virtuel dans vsFTPd). Et c'est là qu'est le hic.
 
Et c'est surtout que je ne sais toujours pas si les ACL sont applicables à des utilisateurs virtuels ou pas (il existe plus d'un débat là-dessus dans différents forums).


Message édité par bigbaboon le 04-10-2007 à 11:18:05
Reply

Marsh Posté le 04-10-2007 à 11:38:59    

Comme je te l'ai dis précédemment, setfacl utilise uniquement les utilisateurs du système (/etc/passwd...), il n'a aucune connaissance des utilisateurs virtuels gérés par vsftpd.

 

- Cree un utilisateur bidon
- Essaye de mettre une ACL utilisant cet utilisateur => ca marche
- Utilise une ACL avec un utilisateur inconnu de /etc/passwd => il t'enverra bouler.


Message édité par o'gure le 04-10-2007 à 11:44:23

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 04-10-2007 à 11:46:16    

http://www.suse.de/~agruen/acl/linux-acls/online/

 

Le système utilise les id des groups et des users pour identifier qui est qui et qui a droit de faire quoi. Ces id sont transformer en nom d'utilisateur et nom de group.

 

Si tu donnes un nom, le système va tenté de le transformer en uid pour appliquer l'acl. Si il ne trouve pas l'id correspond (soit dans /etc/passwd soit par un autre moyen) il te jette. vsftpd n'utilise pas les uid système pour gérer ses utilisateurs.


Message édité par o'gure le 04-10-2007 à 11:53:54

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 04-10-2007 à 11:51:54    

Bonjour o'gure
 
rhââ, je pensais ce matin finir tout ça en deux coups de cuillère à pot mais non. je vais donc lire ce que tu m'a mis en lien.
 
M'est avis que ces foutus utilisateurs virtuels ne sont pas simples à configurer auniveau des ACL.
 
J'ai même installé webmin sur le serveur, habitué que je suis au clickodrome de windows en me disant que ce serait peut-être plus simple mais non.
 
Je vous tiens au courant.


Message édité par bigbaboon le 04-10-2007 à 11:52:28
Reply

Marsh Posté le 04-10-2007 à 14:11:52    

Bon et bien rien à faire. Je vais essayer de trouver quelques renseignements sur les utilisateurs virtuels et leurs droits possibles. Je vous tiens au courant.
 
Merci de votre aide.

Reply

Marsh Posté le 04-10-2007 à 14:16:25    

Pourquoi alors ne pas faire des utilisateurs rééls au lieu de virtuel et tu leur mets en bash "/sbin/nologin".


---------------
- Feed-back - - Jeu du moment: J’ai un backlog monstre sur Switch - C'est moi Bananecafe
Reply

Marsh Posté le 04-10-2007 à 16:31:58    

Oui, mais pour sécuriser l'accès au FTP (SSH) sous vsFTPd il est recommandé d'utiliser des utilisateurs virtuels -> http://www.andesi.org/index.php?node=121
 
J'ai suivi ce tutorial et cela fonctionne très bien sauf les ACL mais ce n'est pas super grave. J'espère quand même trouver une solution.
 
Si de votre côté, vous trouvez qqch, je suis preneur et si je trouve un truc, je transmets.

Reply

Marsh Posté le 04-10-2007 à 16:33:35    

Sur le lien que j'ai donné, il y a un truc sur la fin avec les droits des différents utilisateurs mais cela n'a pas fonctionné chez moi. Peut-être en sauriez-vous plus ?

Reply

Marsh Posté le 04-10-2007 à 16:40:02    

Je regardais, c'est ca ?
As tu vérifié le support de la configuration 'par utilisateur' avec ta version ?

 


Et as tu fais _exactement_ ce qu'il disait ?


Message édité par o'gure le 04-10-2007 à 16:41:46

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 04-10-2007 à 17:22:21    

sinon tu peux essayer la solution
 
pureftpd + ldap + acl
ca fonctionne tres bien

Reply

Marsh Posté le 05-10-2007 à 11:44:58    

@o'gure :
oui j'ai vérifié et mon fichier de conf par utilisateur est ok (j'ai tout suivi comme ils ont dit). Ce dont je parlais qui ne fonctionnait pas est plus bas dans le lien (à partir de "file dans ta chambre" ). Mais comme je n'ai pas eu beaucoup de temps pour mettre tout ça en place, j'ai stoppé à la première erreur afin que le FTP soit un minimum opérationnel. C'est une fois que ça fonctionnait qu'on m'a demandé : "si c'est possible, je voudrais... gniagniagnia..." (cf. 1er message).
 
@dam1330 :
pureftp n'est pas installé sur le serveur dédié et mon DSI est très à cheval sur la sécurité. Donc lorsque je lui ai parlé de vsFTPd, j'ai eu son feu vert.
 
 
Bon, je suis absent la semaine prochaine (déplacement  l'étranger) mais dès que je reviens, je m'y remets. Merci encore pour vos précieux conseils. je ferai un up du sujet à ce moment-là. Je file, j'ai encore un serveur à installer (c'est plus simple pour moi, c'est du clickodrome cette fois-ci).


Message édité par bigbaboon le 05-10-2007 à 11:47:30
Reply

Marsh Posté le 05-10-2007 à 14:40:03    

Et si tu partais sur vsftpd en mode passif avec gestion des users local (qui ne peuvent pas se loguer sur la machine) et un certificat en plus des ACL.
Moi c'est que j'utilise sur le FTP du boulot et ca marche nikel.
 
voici mon vsftpd.conf (j'ai viré les lignes de commentaires pour faire court)
 

Code :
  1. anonymous_enable=NO
  2. local_enable=YES
  3. write_enable=YES
  4. local_umask=022
  5. dirmessage_enable=YES
  6. xferlog_enable=YES
  7. xferlog_file=/var/log/vsftpd.log
  8. xferlog_std_format=YES
  9. nopriv_user=ftp
  10. ftpd_banner=Welcome to FTP service.
  11. chroot_local_user=YES
  12. pam_service_name=vsftpd
  13. userlist_enable=YES
  14. listen=YES
  15. tcp_wrappers=YES
  16. # This option specifies the location of the RSA certificate to use for SSL
  17. # encrypted connections.
  18. ssl_enable=YES
  19. allow_anon_ssl=NO
  20. force_local_data_ssl=NO
  21. force_local_logins_ssl=NO
  22. ssl_tlsv1=YES
  23. ssl_sslv2=NO
  24. ssl_sslv3=NO
  25. rsa_cert_file=/etc/vsftpd/nom_de ton_certificat.vsftpd
  26. pasv_min_port=50000
  27. pasv_max_port=51000


 
 :hello:


---------------
- Feed-back - - Jeu du moment: J’ai un backlog monstre sur Switch - C'est moi Bananecafe
Reply

Marsh Posté le 06-10-2007 à 21:39:12    

Eut pourquoi ne pas utilisé simplement sftp qui est de base avec SSH de openssh et qui te permet de te connecter sur des users créer et ainsi d'utiliser les droit UNIX pour réstreindre l'accés a ce que tu veut?
 
Biensure tu l'utilise avec certificats et hop c'est sécurisé et tu met des droit unix pour l'accés.
Je vois pas plus simple.
 
Tu peu l'utilser de windows avec wincp3 qui te donne une présentation sous forme d'explorateur.
Comme y a des clées public clées privé tu n'a mm pas besoin de taper le mot de passe réel de ton utilisateur, mais seulement le pass de la clée, qui ne sert qu'a s'authentifié et mm récupérer par une tierce personne ne sert a rien sans la clée privé bien au cho sur ton pc.
C'est simple et y a pas plus facile à sécuriser.


Message édité par Sm@No le 07-10-2007 à 04:22:43
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed