empêche les erreurs de refus d'accès avec chown / chmod avec le montage cifs


2

J'ai un répertoire utilisateur monté sur Ubuntu 12.04 avec cifs. / etc / fstab contient une ligne;

//cb/share /home/cb cifs user=ubuntu,password=abc123,uid=cb,gid=users 0 0

Le partage monte et fonctionne bien, sauf pour les commandes chown / chmod, qui échouent avec;

$ sudo touch /home/cb/foo
$ sudo chown cb /home/cb/foo
chown: changing ownership of `/home/cb/foo': Permission denied

Oubliez que cifs écrase déjà uid et gid aux valeurs correctes (cb: utilisateurs). Il y a des scripts et des utilitaires préexistants que je dois utiliser et qui échouent à cause du statut de sortie non nul renvoyé par chown / chmod.

J'ai naïvement essayé de monter ailleurs (/ mnt / cb), puis d'utiliser bindfs pour le remonter, mais cela ne fonctionnait pas non plus.

sudo bindfs -o perms=0750,mirror=cb,group=users /mnt/cb /home/cb

Notez que la seule solution que je recherche ici est un moyen de configurer le serveur / montage de sorte que chmod / chown échoue discrètement - c.-à-d., Renvoie un état de sortie nul.

Réponses:


0

Eh bien, la réponse triviale est de préempter le réel chmod et chown avec d'autres programmes cela n'échoue pas. Ceux-ci peuvent être des scripts. Dans /home/cab/bin (ou tout autre répertoire pratique accès complet à), créez des scripts appelés chmod et chown qui dit juste

#!/bin/sh

Vous pouvez ajouter exit 0 si tu veux, mais 0 sera le statut de sortie par défaut si le script ne fait rien. Et puis, bien sûr, ajoutez /home/cab/bin au début de votre PATH variable d'environnement.

Si tu veux pouvoir chmod et chown quand vous pouvez, dites aux scripts
[Modifier]

#!/bin/sh
/bin/"$(basename "$0")" "$@"
exit 0

remplaçant /bin avec le répertoire que le réel chmod et chown sont dans. Ceci exécute la commande réelle avec les arguments du script, puis quitte avec un statut égal à 0 quel que soit le statut de sortie du programme.

Et puisque les deux scripts sont identiques (tant que le vrai chmod et chown les commandes sont dans le même répertoire sur votre système), vous pouvez en écrire un et faire de l’autre un lien.


Intéressant. Existe-t-il un moyen de détecter si un fichier / répertoire est monté? Ensuite, je pourrais protéger l'appel du vrai chown / chmod.
CAB

Je ne sais pas exactement ce que vous voulez dire, mais essayez de regarder $(df "$filename").
Scott
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.