Serveur ftp droit d'acces [Résolu/Fermé]

Signaler
Messages postés
13
Date d'inscription
vendredi 13 juillet 2012
Statut
Membre
Dernière intervention
22 août 2012
-
 m4-sis -
Bonjour,

Voila j'ai acquis un Netgear Readynas duo v2 qui a un noyau Debian si je di pas de bêtise! avec l'interface du Nas c'est une grosse %$#@ a configurer les droits!

Je souhaite en fait que
- l'Admin (moi) ait accès à tout sur le serveur,
- et je souhaite créer un utilisateur qui a accès uniquement à un seul dossier (et qu'il ne voit pas les autres).

Je me connecte en ssh au NAS mais après c'est l'histoire du chmod que j'ai du mal!

Architecture du ftp:

-Media
-musique
-Video

-Www

Compte Admin a tout les droits partout ;)
Compte webmaster a accès juste a Www et ne voit pas le dossier Media

18 réponses

Messages postés
29258
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 juillet 2020
6 891
Parfait maintenant il ne reste plus qu'à configurer proftpd correctement et le redémarrer pour prendre les modifications en compte.

Par défaut la configuration de proftpd sous debian consiste à avoir un utilisateur ftp qui correspond à chaque utilisateur linux (et en utilisant le même mot de passe) hormis root. Par exemple si sur ta machine sont configurés les utilisateurs toto et tata, alors il y a implicitement moyen de se connecter via ftp en tant que toto ou en tant que tata. La seule exception est root.

On va supposer que toto peut se promener partout, tandis que tata doit resté prisonnier dans /home/tata. Pour cela on va utiliser cette option :
http://www.proftpd.org/docs/directives/linked/config_ref_DefaultRoot.html

Pour comprendre cette exemple il faut bien comprendre que en shell, /home/toto = ~toto = ~ quand on est loggué en toto. Sur le même principe, /home/tata = ~tata = ~ quand on est loggué en tata. En écrivant ceci on dit que tous les utilisateurs vont atterrir (et rester prisonniers) dans leur home directory. Ainsi on pourrait par exemple écrire dans /etc/proftpd/proftpd.conf ceci :

DefaultRoot ~


Maintenant, supposons que seul tata doit être prisonnier, mais pas toto. Alors on va expliciter qui est soumis à la règle "DefaultRoot" comme suggéré dans le lien précédent :

DefaultRoot ~ tata,!toto


Il ne reste plus qu'à sauver le fichier /etc/proftpd/proftpd.conf et relancer proftpd :

service proftpd restart


Enfin, un petit test (par exemple avec le client lftp) et c'est parti :

aptitude install lftp
lftp toto@localhost


Une fois authentifié en ftp affiche le contenu du répertoire courant, essaye de remonter, puis réaffiche le contenu du répertoire courant (dans lftp les commandes sont inspirées de celles du shell) :

ls
cd ..
ls
bye


Même test avec lftp tata@localhost, et normalement l'affaire est dans le sac :-)

Bonne chance
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57476 internautes nous ont dit merci ce mois-ci

Messages postés
29258
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 juillet 2020
6 891
En fait ça dépend un peu du serveur ftp que tu utilises (protftpd, vsftpd etc...). Le plus simple c'est peut être d'installer proftpd (par exemple) et une interface graphique pour le configurer (gproftpd).

Bonne chance
Messages postés
13
Date d'inscription
vendredi 13 juillet 2012
Statut
Membre
Dernière intervention
22 août 2012

justement c'est pas possible! car c'est L'OS propriétaire netgear du nas la seul facon que je puisse faire est via ssh en root a l'ancienne :S
Messages postés
29258
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 juillet 2020
6 891
Ok, mais en attendant tu as quand même un serveur ftp qui tourne, non ?

Et ce serveur tu peux le configurer via ssh en altérant ses fichiers de configuration (par exemple avec nano) et en relançant le serveur ftp. Typiquement :
http://www.mistra.fr/tutoriel-linux-nano.html

En root :

nano /etc/proftpd/proftpd.conf


Une fois le fichier corrigé :

service proftpd restart


Ça c'est en admettant que ce soit proftpd qui soit utilisé, mais il faudrait déjà voir quelle serveur est installé sur ton OS. Tu peux par exemple le voir avec la commande "dpkg -l" si tu es sous debian ou en regardant qu'est ce qui écoute sur le port 21 (qui est utilisé par ftp).

(root@silk) (~) # dpkg -l | grep ftp
ii  lftp                                 4.3.6-1                            Sophisticated command-line FTP/HTTP client programs
ii  proftpd-basic                        1.3.4a-2+b1                        Versatile, virtual-hosting FTP daemon - binaries

(root@silk) (~) # netstat -ntlp | grep 21
tcp6       0      0 :::21                   :::*                    LISTEN      2398/proftpd: (acce


Bonne chance
Messages postés
13
Date d'inscription
vendredi 13 juillet 2012
Statut
Membre
Dernière intervention
22 août 2012

c'est proftpd a la base mais la j'ai mis vsftpd mais je n'arrive plus a l'enlever message d'erreur

dpkg: error processing vsftpd (--remove):
 subprocess installed post-removal script returned error exit status 1
configured to not write apport reports
                                      Errors were encountered while processing:
 vsftpd
Messages postés
29258
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 juillet 2020
6 891
Quelle commande as-tu lancé pour désinstaller vsftpd ? Au pire essaye de le réinstaller et de le supprimer

aptitude update
aptitude safe-upgrade
aptitude reinstall vsftpd
aptitude purge vsftpd
aptitude install proftpd-basic


Bonne chance
Messages postés
13
Date d'inscription
vendredi 13 juillet 2012
Statut
Membre
Dernière intervention
22 août 2012

j'ai fais un reset du coup c'est de retour proftpd qui fonctionne

root@nas:~# vi /etc/proftpd.conf
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message
DenyFilter \*.*/
PersistentPasswd on
#Quotas off
Port 21

DynMasqRefresh 7200
PassivePorts 1121 1122
AllowForeignAddress off
MaxInstances 30
User nobody
Group nogroup
RequireValidShell off
<Directory /*>
Umask 022 022
AllowOverwrite on
</Directory>
Include /etc/frontview/proftpd/ftps.conf
Include /etc/frontview/proftpd/User.conf
- /etc/proftpd.conf 44/44 100%
# Do not edit.
ServerName "NETGEAR ReadyNAS"
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
AllowOverwrite on
AllowStoreRestart off
UseReverseDNS off
IdentLookups off
TimesGMT off
WtmpLog off
ServerLog /var/log/proftpd.log
SystemLog /var/log/proftpd.log
TransferLog /var/log/proftpd.log
BanLog /var/log/proftpd.log
MaxLoginAttempts 2
BanEngine on
BanTable /ramfs/ftp_ban.tbl
BanOnEvent MaxLoginAttempts 5/00:10:00 00:15:00
TimeoutNoTransfer 600
TimeoutStalled 600
- /etc/proftpd.conf 1/44 2%
Messages postés
13
Date d'inscription
vendredi 13 juillet 2012
Statut
Membre
Dernière intervention
22 août 2012

ok je comprends, on mets ça dans proftpd.conf ?

Moi mon souhait est je me connecte en root je vois tout ceux qui est normal, mais je veux que par exemple toto quand il se connecte voit seulement un dossier qui est a la racine du ftp et non sont dossier user
Messages postés
157
Date d'inscription
dimanche 16 janvier 2011
Statut
Membre
Dernière intervention
25 février 2016
6
salut ,

si tu n ' y arrives pas avec vsftpd une autre méthode :

-sftp : utilisation ssh + ftp
-rssh : commandes restrictives pour l 'utilisateur qui se connecte (shell réduit)
-chrootage: l' utilisateur est enfermé dans un répertoire (et sous répertoire) bien défini.

sftp n ' est pas la même chose que ftps qui utilise openssl, à ne pas confondre.


et bien évidement, cela reste compatible aussi avec un client Windows comme WinSCP.

si je t' indique ceci, c' est parceque le noyau en question est Debian.

les explications qui répondent exactement à ce que tu cherches:
https://www.debian-fr.org/t/serveur-sftp-shell-reduit-rssh-et-chroot/26813
Messages postés
29258
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 juillet 2020
6 891
Oui dans /etc/proftpd/proftpd.conf (puis relance proftpd).

Si tu regardes ce que j'ai écrit dans mon précédent message, il suffit de voir ce que j'ai défini pour toto et tata et de l'adapter avec les profils que tu veux utiliser (root et toto).
Messages postés
13
Date d'inscription
vendredi 13 juillet 2012
Statut
Membre
Dernière intervention
22 août 2012

j'ai ajouté la ligne

DefaultRoot ~ tata,!toto
et j'ai essayer DefaultRoot /www ~ webmaster,!root

et aucun changement..
Messages postés
29258
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 juillet 2020
6 891
Déjà tu es sûr que ce n'est pas plutôt /var/www (au lieu de /www). Ensuite Tu as mis deux répertoires derrière DefaultRoot (/www et ~) or normalement il n'y en n'a qu'un. Du coup la ligne serait plutôt

DefaultRoot /var/www webmaster,!root


Autre possibilité, tu fais atterrir tout le monde dans son ~ (respectivement /home/webmaster et /root), quitte à monter le contenu de /www (ou de /var/www) dans /home/webmaster/ avec un mount bind :
https://forums.commentcamarche.net/forum/affich-16654048-lien-symbolique-sur-ftp

Concrètement ça consiste à ajouter une ligne dans /etc/fstab, ou tu indiques que le contenu de /var/www et de /home/webmaster/www concordent. Ajoute à la fin de /etc/fstab cette ligne :

/var/www   /home/webmaster/www       none        bind        0 0


Ensuite tape les commandes suivantes en root :

mkdir -p /home/webmaster/www
mount /home/webmaster/www


Bonne chance
Messages postés
13
Date d'inscription
vendredi 13 juillet 2012
Statut
Membre
Dernière intervention
22 août 2012

j'ai essayer des solution mais en vain

mon utilisateur a bien un dossier /home/web
mais quand il se connecte il y se trouve la racine..
Messages postés
29258
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 juillet 2020
6 891
Si tu ne me reportes pas la ligne DefaultRoot de /etc/proftpd/proftpd.conf et le résultat pour root (quel répertoire, peut-il aller partout) + pareil pour l'autre utilisateur, je vois difficilement comment je peux t'aider.
Messages postés
13
Date d'inscription
vendredi 13 juillet 2012
Statut
Membre
Dernière intervention
22 août 2012

Bon j'avance :D

DisplayLogin welcome.msg  
DisplayChdir .message  
DenyFilter \*.*/  
PersistentPasswd on  
#Quotas off  
Port 21  

DefaultRoot ~  


DynMasqRefresh 7200  
PassivePorts 1121 1122  
AllowForeignAddress off  
MaxInstances 30  
User nobody  
Group nogroup  
RequireValidShell off  
<Directory /*>  
Umask 022 022  
AllowOverwrite on  
</Directory>  
Include /etc/frontview/proftpd/ftps.conf  
Include /etc/frontview/proftpd/User.conf  
root@nas:~# service proftpd restart  
Stopping ftp server: proftpd.  
Starting ftp server: proftpd.  
root@nas:~# service proftpd restart  
Stopping ftp server: proftpd.  
Starting ftp server: proftpd.  
root@nas:~# vi /etc/proftpd.conf  
TimeoutStalled 600  
TimeoutIdle 1200  
DisplayLogin welcome.msg  
DisplayChdir .message  
DenyFilter \*.*/  
PersistentPasswd on  
#Quotas off  
Port 21  

DefaultRoot ~ !admin  


DynMasqRefresh 7200  
PassivePorts 1121 1122  
AllowForeignAddress off  
MaxInstances 30  
User nobody  
Group nogroup  
RequireValidShell off  
<Directory /*>  
Umask 022 022  
AllowOverwrite on  
</Directory>  
root@nas:~# service proftpd restart  
Stopping ftp server: proftpd.  
Starting ftp server: proftpd.  



Dernier bug c'est que quand je me log en admin je souhaiterai voir et modifier le dossier web

drwx------ 2 admin admin 4096 2012-08-19 00:42 admin
drwx------ 2 web   users 4096 2012-08-21 21:19 web
Messages postés
29258
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 juillet 2020
6 891
Juste quelques remarques, ça m'étonne que tu es la directive DefaultRoot a deux endroits. À mon avis tout peut s'écrire sur une ligne, non ?

DefaultRoot ~  
...
DefaultRoot ~ !admin  


Autre conseil, je te conseille d'écrire tes noms de fichiers en minuscules pour avoir des notations homogènes (même si ce que tu as écris est tout à fait juste).

Include /etc/frontview/proftpd/ftps.conf  
Include /etc/frontview/proftpd/User.conf 


Dernier bug c'est que quand je me log en admin je souhaiterai voir et modifier le dossier web

Plusieurs solution :
- tu attribues le dossier web à admin:web et tu donnes les droits en écriture au groupe web

cd /le/repertoire/dans/lequel/est/place/web
sudo chown -R admin:web web/
find web/ -type f -exec chmod 640 {} \;
find web/ -type d -exec chmod 750 {} \;

Si la gestion des droits te paraît obscure (chown, chmod etc...) je t'invite à lire le man correspondant et ce cours :
http://www.mistra.fr/tutoriel-linux-profils-et-droits.html
http://www.mistra.fr/tutoriels-linux-mode-texte/tutoriel-linux-man.html

man chown
man chmod


Note qu'ici les fichiers appartiennent à admin pour que web ne puisse pas changer les droits associés à ces fichiers.

- autre solution, tu peux utiliser des droits acl :
http://doc.ubuntu-fr.org/acl
Messages postés
13
Date d'inscription
vendredi 13 juillet 2012
Statut
Membre
Dernière intervention
22 août 2012

Bien vu pour le doublon de defaultroot je vai regler le soucis ;)

Pour les histoires de majuscule c'est mon Nas qui le fait ..

donc si je dit pas de betise il suffit de faire:

root@nas:/home# chown -r admin:web web

puis un chmod -r 770 web

exact?
Messages postés
29258
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 juillet 2020
6 891
Ouais, et vu que tu as marqué le problème en résolu, j'imagine que tu es satisfait du résultat !

Bonne continuation
merci beaucoup de tes conseils :D