guidouil
J'ai déjà eu fait ce que tu voudrais, mais je ne m'en souviens que vaguement, je vais essayer de te donner les orientations dont je me souviens, ne m'en veut pas si ça ne fontionne pas au premier jet :!!!
Pour commencer tu te réfères à ce topic:
https://mondedie.fr/d/9655-tuto-installer-rutorrent-sur-debian-9-nginx-php-fpm
Tu fais toute la partie installation tel-quel, puis
créer un user unix "commun" par exemple et tous les dossiers nécessaires tel le tuto
créer le fichier "/home/commun/.rtorrent.rc
Modifier le scgi_port en 5001 par exemple
+ adapter les autres ligne à "commun"
dans le fichier conf de nginx:
location ^~ /rutorrent {
./...
location /COMMUN { ##ne pas répéter l'étape des users contrairement au tuto
include scgi_params;
scgi_pass 127.0.0.1:5001;
auth_basic "nginx";
auth_basic_user_file "/etc/nginx/passwd/rutorrent_passwd"; ##générer autant de (login-passwords) que de clients
}
}
Par contre ici, créer autant de dossiers que d'utilisateurs nginx (ceux pour qui tu as crée login et password):
mkdir /var/www/rutorrent/conf/users/login1
mkdir /var/www/rutorrent/conf/users/login2
mkdir /var/www/rutorrent/conf/users/login3
./..etc
Puis sur le même principe créer autant de fichiers "config.php" dans tous ces dossiers :
nano /var/www/rutorrent/conf/users/login1/config.php
nano /var/www/rutorrent/conf/users/login2/config.php
nano /var/www/rutorrent/conf/users/login3/config.php
./...
Y mettre ceci dans chaque fichier:
<?php
$pathToExternals['curl'] = '/usr/bin/curl';
$topDirectory = '/home/commun/torrents'; #commun en minuscule
$scgi_port = 5001;
$scgi_host = '127.0.0.1';
$XMLRPCMountPoint = '/COMMUN'; #respecter Majuscules
Puis continuer le tuto avec plugin.ini tel quel ou adapter en fonction des plugins que tu désires avoir pour chaque utilisateur nginx, etc...
Pour init.d utiliser l'username commun
Ensuite:
Créer autant d'utilisateurs unix que de login nginx sans créer de home en dur pour eux + créer un groupe "sftpusers" et rentrer chaque utilisateur dans ce groupe + commun crée précédemment.
useradd -M -d /home/login1 -s /bin/rbash "login1"
usermod -aG sftpusers,ftpusers login1
../..
dans sshd_config (partie du tuto à modifier, sinon respecter le reste):
Match Group sftpusers
ChrootDirectory /home/commun/torrents
ForceCommand internal-sftp
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
Pour le Ftp, avec Proftpd par exemple, tu chroot chaque utilistateur en modifiant le fichier conf:
DefaultRoot /home/commun/torrents
###puis à la fin:
<Limit LOGIN>
DenyGroup !sftpusers
</Limit>
Modifier les droits du dossier torrents (en plus d'avoir suivi le tuto avec "commun" comme username pour tous les autres dossiers de "commun":
chown commun:sftpusers /home/commun/torents
chmod 2755 /home/commun/torents
Ensuite, avec "inotyfywait" (chercher un tuto); tu mets la surveillance sur /home/commun/torrents en récursif; avec comme évènement "IN_CLOSE_WRITE" pour exécuter ceci:
chown -R commun:sftpusers /home/commun/torents/*
chmod -R 755 /home/commun/torents/*
J'espère n'avoir rien oublié....c'est vieux !!!
🙂
Edit: Pour inotify, regarde ici:
http://kerlinux.org/2010/08/utilisation-de-inotifywait-dans-des-scripts-shell/
Prendre le dernier exemple; puis modifier la partie la partie "on_event()" (dans le fichier bash "/usr/local/bin/inotifywait.sh" ) rendu exécutable et le chemin surveillé "/home/commun/torrents" à la place de /tmp :
on_event() {
chown -R commun:sftpusers /home/commun/torents/*
chmod -R 755 /home/commun/torents/*
./.}
Lancer ce fichier par systemd avec ce fichier:
[Unit]
Description=inotifywait.sh
After=network.target
[Service]
ExecStart=/bin/bash /usr/local/bin/inotifywait.sh
PIDFile=/var/run/inotifywait.pid
ExecStop=/bin/kill -9 $MAINPID
Restart=always
[Install]
WantedBy=multi-user.target