web-dev-qa-db-fra.com

comment donner à tous les utilisateurs l'autorisation de lecture / écriture pour les fichiers d'un répertoire commun

J'ai installé le système Ubuntu sur un disque SS et je souhaite que les utilisateurs accèdent aux partitions du deuxième disque (mécanique) en tant que dépôts courants avec des autorisations de lecture/écriture/suppression complètes pour chaque fichier. Et je souhaite que chaque utilisateur voie une telle partition (par exemple/dev/sdb7) comme un répertoire avec un nom fixe (par exemple/home/the_user/F). On m'a conseillé ( Est-il possible de monter une partition en tant que dépositaire commun pour les utilisateurs ayant le même chemin relatif? ) pour monter la partition lors du démarrage et pour créer un lien symbolique entre ce point de montage et quelque part dans la maison de l'utilisateur. Cependant, dans le manuel de

lien
‘-D’ 
 ‘- F’ 
 ‘- directory’ 
 Autorisez les utilisateurs disposant des privilèges appropriés à tenter de créer des liens difficiles 
 Avec des répertoires. Toutefois, notez que cela échouera probablement 
 En raison de restrictions du système, même pour le super-utilisateur. 
1
Tomáš Pečený

Vous n'avez pas besoin d'utiliser de liens physiques. En fait, nous ne pouvons pas créer de lien physique vers un répertoire car il crée une boucle dans la hiérarchie du système de fichiers.

Vous devez utiliser l'option -s pour créer un lien symbolique (lien symbolique):

Disons que j'ai monté /dev/sda7 sur /media/some/mount/point. Pour créer un lien vers ce chemin, je dois exécuter:

ln -s [target] [symlink]

Comme:

ln -s /media/some/mount/point  /home/username/F

L'autorisation de link serait de 777, mais un lien symbolique est un fichier différent de votre répertoire réel. Il accorde uniquement l'accès au lien symbolique lui-même et l'utilisateur doit disposer des autorisations appropriées pour pouvoir utiliser les fichiers de /media/some/mount/point.

1
Ravexina

En ce qui concerne votre préoccupation concernant la liaison au répertoire monté, il semble que vous ayez simplement trouvé le mauvais programme. Selon votre message, il vous a été conseillé de créer des liens symboliques (c'est-à-dire des liens symboliques). Cependant, la commande link ne crée que des liens durs. Pour créer des liens symboliques, vous pouvez utiliser la commande ln à la place, par exemple:

ln -s /path/to/mount/point  /home/the_user/F

En ce qui concerne l’accès partagé, vous pouvez le configurer à l’aide de ACL (listes de contrôle d’accès), par exemple:

Sudo setfacl -Rm g:mount-group:rwx /path/to/mount/point
Sudo setfacl -Rdm g:mount-group:rwx /path/to/mount/point

Pour montrer à quoi cela pourrait ressembler et vous donner un point de départ pour expérimenter, voici un exemple plus long: bind-monte un répertoire (vous devez le remplacer par le montage que vous souhaitez), définit sa propriété et ses autorisations (avec listes de contrôle), puis crée un lien symbolique vers ce répertoire dans un autre répertoire:

# Create a group to own the shared mount
Sudo groupadd mount-group

# Create a user that belongs to this group
Sudo adduser mount-user
Sudo usermod -a -G mount-group mount-user

# Create a directory to mount
mkdir /tmp/mount-source

# Create the mount-point
mkdir /tmp/mount-target

# Bind-mount the directory onto the mount point
Sudo mount --bind /tmp/mount-source /tmp/mount-target

# Set the group owner for the mounted volume
Sudo chown :mount-group /tmp/mount-target

# Set the group permissions to match the user permissions
Sudo chmod -R g=u /tmp/mount-target

# Set the setgid bit on the mounted volume
Sudo chmod g=u,g+s /tmp/mount-source

# Set the ownership and permissions for the mounted volume using an ACL
Sudo setfacl -Rm g:mount-group:rwx /tmp/mount-target

# Set the default ownership and permissions for files created inside the mount-point
Sudo setfacl -Rdm g:mount-group:rwx /tmp/mount-target

# Login as the test user
su -l mount-user

# Link a subdirectory inside the user's home folder to the mounted volume
ln -s /tmp/mount-target ~/link-to-mount-target

# Create a new file inside the mounted volume
echo 'Hello world!' > ~/link-to-mount-target/hello.txt

# Check the permissions on the new file
getfacl ~/link-to-mount-target/hello.txt
0
igal

Je pense que votre question appelle une double réponse: d’abord sur le montage de l’appareil dans le système de fichiers et d’autre part sur la liaison d’un emplacement de destination.

Avant de commencer

Les explications suivantes nécessitent un programme terminal (raccourci clavier: Ctrl+Alt+t) pour taper les commandes dans.

Vous aurez également besoin d'un privilège de superutilisateur. En règle générale (en tant que premier utilisateur après la nouvelle installation), vous obtenez les privilèges en tapant Sudo à l’avant de la commande. Après cela (généralement, si vous êtes le premier utilisateur après la nouvelle installation), vous devez fournir votre propre mot de passe avant l'exécution de la commande.

Votre disque dur (le disque "mécanique") doit déjà être connecté à votre ordinateur et formaté correctement avec un système de fichiers (comme ntfs ou ext4).

Attention! En modifiant votre fichier fstab, vous travaillez sur des internes qui peuvent empêcher votre ordinateur de démarrer. Ce n'est pas un dommage permanent, mais il faudra du temps et des compétences pour le réparer. Travailler avec elle avec soin.

Si vous avez des doutes sur l'un des prérequis ci-dessus, veuillez demander dans le commentaire.

Monter le disque au démarrage

Le montage des disques au démarrage est effectué dans le fichier /etc/fstab. Pour cela, vous devez connaître l’UUID de votre disque "mécanique" ou au moins son nom dans le répertoire /dev.

Recherchez l'UUID et le nom (similaire à /dev/sdb5) de votre disque:

ls -l /dev/disk/by-uuid

Il sera listé ici. Déterminez maintenant le système de fichiers. Il sera répertorié dans la dernière colonne de la ligne appropriée de

Sudo fdisk -l | less

Ensuite, choisissez le chemin de montage et créez-le:

Sudo mkdir -p /media/shareddrv

Connaissant l'UUID du disque, son nom et le type de système de fichiers, votre ligne de configuration pour /etc/fstab se présente comme suit:

UUID=481aba75-c8a7-4b70-bdc4-fab4de7c1410  /media/shareddrv  ext4  errors=remount-ro  0  2

UUID=481aba75-c8a7-4b70-bdc4-fab4de7c1410 peut être quelque chose comme /dev/sdb5 si vous avez des problèmes pour déterminer ce qu'est l'UUID. La partie /media/shareddrv correspond à l'emplacement que vous avez choisi et ext4 correspond au type de partition et diffère en fonction du disque. Le reste reste de préférence tel quel.

Vous devez ajouter cette ligne entière à votre /etc/fstab. Comme il existe de nombreuses façons de le faire, une solution très pratique consiste à utiliser Sudo nano /etc/fstab et à taper/coller la ligne à la fin du fichier.

Maintenant, faites en sorte que vos modifications fonctionnent pour vous: la méthode la plus simple consiste à redémarrer votre ordinateur (par exemple, Sudo init 6 ou Sudo shutdown -h now). Si tout fonctionne, vous verrez votre disque "mécanique" et son point de montage après avoir tapé: df -h dans le terminal.

Lier le disque dans les répertoires de l'utilisateur

Cette partie peut être réalisée utilisateur après utilisateur, semi-manuellement. Pour un utilisateur "alice", lancez:

TMPUNAME=alice;  Sudo -u $TMPUNAME ln -s /media/shareddrv /home/$TMPUNAME/F

Et répétez ceci pour chaque utilisateur. À la fin, vous pouvez unset TMPUNAME mais pas nécessairement.

J'espère que tout fonctionne pour vous. Si vous trouvez ce mini-tutoriel utile, veuillez relire ma réponse et la marquer comme utile. Je vous remercie! Posez également plus de questions si quelque chose n'est pas clair ou ne fonctionne pas!

0
Patryk Mazurkiewicz