Forum Linux.debian/ubuntu [résolu] Forcer permissions utilisateur/groupe sur les nouveaux fichiers/dossiers

Posté par  . Licence CC By‑SA.
-2
5
sept.
2019

Bonjour tout le monde.

Situation :
Le dossier /var/www/html/test/ doit être partagé par plusieurs utilisateurs.
Pour ce faire il doit avoir comme utilisateur et groupe www-data, et comme permission pour les users:groups R+W

Trucs déjà testé :

(à chaque fois le fichiers test.txt a été supprimé puis recréé (via CLI sans passer par apache2) après passage du chmod)

chmod 0770 = -rw-r--r--  1 www-data2 www-data  0 Sep  5 13:07  test.txt ( anciens fichiers = rwxrwx---)
chmod 1770 = -rw-r--r--  1 www-data2 www-data  0 Sep  5 13:15  test.txt ( anciens fichiers = rwsrws--T)
chmod 2770 = -rw-r--r--  1 www-data2 www-data  0 Sep  5 13:18  test.txt ( anciens fichiers = rwxrws---)
chmod 3770 = -rw-r--r--  1 www-data2 www-data  0 Sep  5 13:17  test.txt ( anciens fichiers = rwxrws--T)
chmod 4770 = -rw-r--r--  1 www-data2 www-data  0 Sep  5 13:09  test.txt ( anciens fichiers = rwsrwx---)
chmod 5770 = -rw-r--r--  1 www-data2 www-data  0 Sep  5 13:11  test.txt ( anciens fichiers = rwsrwx--T)
chmod 6770 = -rw-r--r--  1 www-data2 www-data  0 Sep  5 13:10  test.txt ( anciens fichiers = rwsrws---)
chmod 7770 = -rw-r--r--  1 www-data2 www-data  0 Sep  5 13:11  test.txt ( anciens fichiers = rwsrws--T)

chown -R www-data:www-data /var/www/html/test/ ; chmod u+rws -R /var/www/html/test/ ; chmod g+rws -R /var/www/html/test/
ls -l
-rw-r-----  1 www-data2 www-data  0 Sep  5 13:21  test.txt

Un grand merci à toute aide et infos apportées.

Edit (section éditée au fur et a mesure):
Ça avance (ou pas), les permissions sont bien bloquées sur la machine locale (sauf pour SSHFS) mais pas le propriétaire qui continue d'être le créateur du fichier. Reste donc soit à verrouiller le groupe propriétaire, soit à forcer SSHFS à respecter l'umask, soit les deux (monde idéal). Le tout sans jeter le serveur par la fenêtre 😁

    # sur EXT4
chown www-data:www-data -R /var/www/
chmod 2770 -R /var/www/
setfacl -dRm u::rw,g::rw /var/www/
touch /var/www/test.txt
ls /var/www/test.txt -l
-rw-rw---- 1 root www-data 0 Sep  5 15:03 /var/www/test.txt


    # sur ZFS
zfs set acltype=posixacl NomPool
zfs umount NomPool
zfs mount NomPool
chown www-data:www-data -R /media/NomPool/test
chmod 2770 -R /media/NomPool/test
setfacl -dRm u::rw,g::rw /media/NomPool/test
touch /media/NomPool/test/plop.txt
ls -l /media/NomPool/test/plop.txt
-rw-rw---- 1 root www-data 0 Sep  5 14:56 /media/NomPool/test/plop.txt
    # test création sur ZFS depuis SSHFS avec l'option -u 0007 dans sshd_config
touch /remote_sshfs/test/plop.txt
    # le ls se fait depuis le serveur local
ls -l /media/NomPool/test/plop.txt
-rw-r-----   1 www-data2 www-data  0 Sep  5 15:48  test.txt

PFFFFFffffffffff, à quand de la simplification dans Linux ! (carrément abusé qu'un truc aussi con que partager un dossier soit aussi prise de tête)

  • # les bons partages aux bons endroits

    Posté par  . Évalué à 4.

    PFFFFFffffffffff, à quand de la simplification dans Linux ! (carrément abusé qu'un truc aussi con que partager un dossier soit aussi prise de tête)

    parce qu'il faut faire les bons partages aux bons endroits.

    umask permet de figer les droits (umask = 022 => chmod 755 sur le fichier)
    les sticky bit chmod Xabc X = 1, 2, 4 permet de figer l'appartenance d'un dossier

    chmod 1775 /var/www/ledossier

    fera qu'il va garder son groupe propriétaire (www-data)
    ainsi tout fichier deposer dedans appartiendra à
    utilisateur:www-data

    avec le bon umask sur le systeme de fichier,
    le fichier sera 775, donc modifiable par n'importe qui du groupe www-data (dont le serveur apache)

    • [^] # Re: les bons partages aux bons endroits

      Posté par  . Évalué à 1.

      parce qu'il faut faire les bons partages aux bons endroits.

      Pour l'umask ce dernier point est assez galère. (si je suis mon tuto (parce que de tête y a pas): /etc/apache2/envvars , /etc/init.d/apache2 , /etc/profile , /home/$USER/.profile et celui du logiciel de sync)
      Il me semble que l'umask et les perms sont bons côté "filesystem", c'est du côté de SSHFS que l'umask est mauvais.

      Quand je crée un fichier depuis le client sshfs (en CLI, pas via apache2), sur le serveur je vois

      ls -l /path/test/
      -rw-r-----   1 www-data2 www-data  0 Sep  5 19:56  test.txt
      

      J'ai essayé avec (dans le fichier /etc/ssh/sshd_config) côté serveur

      Subsystem      sftp    /usr/lib/openssh/sftp-server -u 0007
      

      et

      Subsystem sftp internal-sftp -u 0007
      

      Côté client j'ai tenté en ajoutant dans /etc/fstab , default_permissions,umask=0007 au point de montage.

    • [^] # Re: les bons partages aux bons endroits

      Posté par  (site web personnel) . Évalué à 3. Dernière modification le 06 septembre 2019 à 08:19.

      les sticky bit chmod Xabc X = 1, 2, 4 permet de figer l'appartenance d'un dossier

      Non. Le sticky bit, c'est pour X=1 seulement, et ça permet d'empêcher qu'un autre utilisateur puisse supprimer les fichiers des copains. Utilisation classique : /tmp/.

      X=2 et 4, ce sont les setuid et setgid. Le setgid permet d'affecter le groupe en question automatiquement aux nouveaux fichiers. Le bit setuid n'a aucun effet sur un répertoire sur la plupart des Unix (d'après Wikipedia, il fait à peu près la même chose que setuid chez FreeBSD mais je n'ai pas testé).

  • # UMASK

    Posté par  . Évalué à 4.

    man umask

    il faut lui passer l’inverse de se que tu veux. Si tu veux par défaut r-x-wxr-- soit chmod 534 il faut faire umask 243.

    La commande change l’umask de l’appelant. Donc il faut le mettre au bon endroit dans ton <shell>rc, .profile, etc.

    umask seul te donne le mask actuel.

    • [^] # Re: UMASK

      Posté par  . Évalué à 1.

      Il y a une différence entre un umask 007 et 0007 ?

      • [^] # Re: UMASK

        Posté par  . Évalué à 2.

        pour moi le umask sur 3 digits ne modifie que les droits UGO (User, Group, Other)
        là ou le umask sur 4 digits va aussi modifier les stickybit/setuid/setguid (le X des chmod expliqués plus haut)

  • # sshfs et umask

    Posté par  . Évalué à 1.

    L'un de vous a-t-il déjà réussi a régler l'umask avec un montage sshfs ?

    • [^] # Re: sshfs et umask

      Posté par  . Évalué à 1.

      SOLVED !

      Donc voici la liste de tout ce que j'ai du modifier juste pour l'umask sur le partage (donc sans la partie logiciel). Certains trucs sont peut-être optionnels ou oublié.

      Côté clients :
      - ~/.profile
      - ~/.bashrc
      - /etc/fstab (marche pas pour l'umask)

      Côté serveur :
      - /etc/ssh/sshd_config
      - ~/.profile
      - /etc/pam.d/sshd (inutile à première vue)

      infos : https://wiki.gilug.org/index.php/How_to_mount_SFTP_accesses

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.