web-dev-qa-db-fra.com

Comment créer une partition ext4 pour tous les utilisateurs?

Je sais que cela ressemble à une double question, mais j’ai essayé ce qui suit et cela n’a pas aidé:

Mon lecteur est monté sous

/media/data

alors je suis entré

Sudo chown -R :users /media/data

Cependant, je ne peux toujours pas écrire sur cette partition en tant qu'utilisateur. J'ai aussi essayé de faire une entrée dans/etc/fstab

UUID=... /media/data ext4 rw,suid,dev,exec,auto,user,async 0 0

mais après cela, mon ordinateur ne pouvait plus démarrer car il ne pouvait pas trouver le disque.

J'ai Ubuntu 14.04 Server installé. La partition est répertoriée sous /dev/nvmeOn1p1 et n’apparaît pas dans le /etc/fstab (voir les images ci-dessous).

(le périphérique est un SSD 800 Go "Intel DC P3700")

Remarque supplémentaire: Puisque la partition est vide, je pourrais aussi la formater et la recréer en utilisant gparted par exemple. Existe-t-il un moyen dans gparted ou d’autres programmes graphiques de spécifier que la partition doit être utilisable par tous les utilisateurs?

4
mcExchange

J'ai finalement résolu le problème. J'ai découvert que j'avais une faute de frappe dans mon UUID. Donc, ma dernière entrée dans fstab était:

UUID=... /media/data ext4 defaults 0 0

ou même mieux:

/dev/sdb1 /media/data ext4 defaults 0 0

Je l'ai vérifié avant de redémarrer en appelant simplement:

Sudo umount /media/data
Sudo mount -a

Si l'entrée fstab est correcte, tout se montera correctement et chaque utilisateur de l'ordinateur aura accès à la partition (au moins aux dossiers qu'il a créés lui-même, ce qui est le comportement correct).

Un chat faire

Sudo chown -R UserNameOfSudo:users /media/data 
Sudo chmod -R g+rw /media/data 

pendant que la partition est toujours montée pour que tout le monde puisse accéder à la partition.

Si vous le faites, assurez-vous que l’utilisateur spécifique fait partie du groupe "utilisateurs" en tapant:

Sudo adduser yourSpecificUsername users

et déconnectez-vous et connectez-vous à nouveau!

Éditer
La partition après le montage par défaut appartient à root. Cela semble empêcher quiconque d'écrire sur la partition. Changer le propriétaire en "UserNameOfSudo" après le montage, comme indiqué ci-dessus, donne le comportement souhaité.

Edit2
Dans le cas du partage de l'ordinateur entre des utilisateurs locaux et des utilisateurs LDAP, une solution consiste à octroyer tous les droits à tous:

Sudo chmod 777 /media/data

et ensuite de définir un "sticky bit", ce qui signifie que seul l'utilisateur qui a créé un dossier/fichier est autorisé à le supprimer. Ce qui ajoute une sécurité sensible:

Sudo chmod o+t /media/data/
1
mcExchange

Peut-être que vous faites les choses dans le mauvais ordre. Lorsque vous créez un système de fichiers avec mkfs.ext4, tout ce qui s'y trouve appartient à l'utilisateur root et au groupe root avec les autorisations par défaut définies pour votre système.

Lorsque vous montez ce système de fichiers sur un répertoire, vous voyez les autorisations et le propriétaire du système de fichiers, quels que soient le propriétaire d'origine et les autorisations sur ce répertoire.

Donc, faire quelque chose comme ça ne marchera pas:

Sudo mkfs.ext4 /dev/some/data
Sudo mkdir /media/data
Sudo chown -R :users /media/data
Sudo chmod -R g+rw /media/data
Sudo mount /dev/some/data /media/data

La bonne chose à faire est de créer le système de fichiers, de le monter et de alors modifier les autorisations et la propriété de celui-ci. Peu importe ce que vous faites dans/etc/fstab.

La bonne façon de le faire est la suivante:

Sudo mkfs.ext4 /dev/some/data
Sudo mkdir /media/data
Sudo mount /dev/some/data /media/data
Sudo chown -R :users /media/data
Sudo chmod -R g+rw /media/data

Ceci devrait répondre à votre question. Si vous avez besoin de plus de détails, lisez la suite.


Pour mieux comprendre ce qui se passe, expérimentons un peu avec un fichier image

Créez un fichier vide à formater et à monter à l'aide de fallocate -l 100MB /tmp/filesystem.img. Ensuite, formatez-le en tant que système de fichiers ext4 avec Sudo mkfs.ext4 /tmp/filesystem.img (ce n'est pas un périphérique en mode bloc, mais si vous répondez oui, vous pouvez quand même y placer un système de fichiers ext4 opérationnel) et créez un répertoire à utiliser comme point de montage mkdir /tmp/experiment.

Maintenant, essayez de changer le propriétaire et les autorisations sur ce répertoire avec Sudo chown -R :users /tmp/experiment et Sudo chmod -R g+rw /tmp/experiment, et vérifiez les autorisations avec ls -la /tmp/experiment. Vous obtiendrez quelque chose comme ça:

 ls -la /tmp/experiment/
 total 0
 drwxrwx--x 2 gerlos users  40 feb 19 10:37 .
 drwxrwxrwt 8 root   root  180 feb 19 10:38 ..

Cela vous indique que/tmp/experiment appartient à l'utilisateur gerlos et aux utilisateurs du groupe, et que les membres du groupe peuvent lire, écrire et exécuter dessus. Vous pouvez y placer des fichiers, par exemple avec touch /tmp/experiment/somefile.

Maintenant, montez le système de fichiers sur ce répertoire avec Sudo mount /mnt/filesystem.img /tmp/experiment, et examinez à nouveau la sortie ls:

$ ls -la /tmp/experiment/
total 13
drwxr-xr-x 3 root root  1024 feb 19 10:41 .
drwxrwxrwt 8 root root   180 feb 19 10:41 ..
drwx------ 2 root root 12288 feb 19 10:41 lost+found

Comme vous pouvez le constater, maintenant/tmp/experiment semble appartenir à root, avec des autorisations différentes! Pourquoi? Parce que nous ne cherchons pas dans/tmp/experiment lui-même, mais dans le répertoire racine du système de fichiers contenu dans /mnt/filesystem.img, monté sur/mnt/experiment.

De plus, votre utilisateur normal ne pourra pas y placer de fichiers avec touch /tmp/experiment/anotherfile.

Si vous essayez maintenant d'exécuter à nouveau les noms chown et chmod comme ci-dessus, vous modifierez le propriétaire et les autorisations non pas sur le point de montage, mais sur le système de fichiers monté, et vos utilisateurs pourront utiliser le système de fichiers. . Pour confirmer ce regard sur la sortie de ls une dernière fois:

$ ls -la /tmp/experiment/
total 13
drwxrwxr-x 3 root users  1024 feb 19 10:41 .
drwxrwxrwt 8 root root    180 feb 19 10:45 ..
drwxrw---- 2 root users 12288 feb 19 10:41 lost+found

Comme vous pouvez le constater, les membres du groupe d'utilisateurs peuvent désormais placer des fichiers dans le système de fichiers! En fait, rien n'empêche votre utilisateur normal de créer un nouveau fichier avec touch /tmp/experiment/myfile:

$ ls -la /tmp/experiment/
total 13
drwxrwxr-x 3 root   users   1024 feb 19 11:05 .
drwxrwxrwt 8 root   root     180 feb 19 11:02 ..
drwxrw---- 2 root   users  12288 feb 19 10:41 lost+found
-rw-rw---- 1 gerlos gerlos     0 feb 19 11:02 myfile

Mission accomplie! :-)

6
gerlos