Autorisation d'écriture.
tablier
Membre
Pour utiliser une carte à puce NEOWAVE, je dois modifier le fichier
/usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/info.plist
J'ouvre le fichier avec Xcode. je le lis parfaitement, mais je ne peux jamais le déverrouiller (unlock) quoi que je fasse !
Alors, je l'ouvre avec TextWrangler. Là , aucun problème. TW me demande mon mot de passe, puis me demande l'autorisation d'apporter des modifications et je peux faire toutes les modifications que je veux!
C'est incompréhensible!
Quelles sont les autorisations qui me manquent pour que je puisse modifier ce fichier sous Xcode ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Le fichier est un fichier système, il faut les droits d'administrateur / sudoer pour le modifier. Quand tu l'ouvres avec Xcode en utilisant ton compte non-admin (en tout cas qui n'a pas les droits UNIX), normal donc que tu ne puisses pas l'écraser. Faudrait l'ouvrir avec un compte admin (sudoer), ou changer ses droits.
Le fichier n'est pas ce qu'on appelle "verrouillé" (comme quand tu fais Pomme-I sur un Fichier dans le Finder et que tu coches la case "Verrouillé" pour ce fichier), c'est que tu n'as pas les droits d'accès UNIX dessus.
Donc Xcode ne va pas te proposer de "le déverrouiller" comme il peut parfois le faire si le fichier est verrouillé, car là ce n'est pas ça qui se passe mais un problème de droits UNIX (chmod)
Quand tu l'ouvres avec TextWrangler, TW a un mode particulier que leur développeur ont codé, qui voit si les droits UNIX ne vont pas te permettre d'écraser le fichier, et dans ce cas te demandent ton mot de passe admin et ouvrent le fichier avec "sudo". Mais c'est un truc spécifique à TW, et surtout ça t'ouvre le fichier avec un autre utilisateur UNIX (celui pour lequel tu as rentré ton mot de passe admin). Ce que les autres logiciels tel que Xcode ne proposent pas en général.
Je l'ai déverrouillé sous finder dans la fenêtre d'info, ce n'est pas l'équivalent ?
Et Xcode propose le "Unlock" puis quand on clique Unlock, refuse de le faire.
Donc, si je me mets en su je pourrai l'éditer.
- Pourquoi faire du 777, et donc donner les droits, non seulement de lecture et d'écriture mais aussi d'exécution (droits d'exécution pour un fichier PLIST ?!) ? Et pourquoi aussi les donner au monde entier et pas juste à toi ?
- Si tu fais ça, il faut surtout penser avant à noter les droits appliqués au fichier avant de les changer, pour surtout les restaurer après tel qu'ils étaient
Sans quoi, soit tu vas te retrouver avec trop de droits d'accès ouverts sur ce fichier, et du coup une potentielle corruption et un risque de sécurité, soit tu quand tu vas restaurer les droits si tu en mets moins le système pourrait ne plus réussir à lire le fichier et ne plus pouvoir faire fonctionner la fonctionnalité liée à ce fichier.
Donc déjà , surtout pas chmod 777, mais plutôt à la limite "chmod u+w", et si tu fais ça, penser à faire "chmod u-w" une fois le fichier modifié pour restaurer les droits d'origine. Ou alors, tu laisses TextWrangler faire, c'est aussi simple.
- Un fichier peut être "Verrouillé" ou non. C'est la case à cocher dans la fenêtre d'info du Finder. Si un fichier est verrouillé, Xcode propose de le "Unlock" quand on l'ouvre.
- Un fichier a aussi des droits UNIX, et tu peux ne pas avoir les droits d'écriture sur ce fichier. Dans ce cas c'est pas impossible que Xcode soit confus et te propose quand même "Unlock" (il devrait pas, le problème n'est pas que le fichier est "verrouillé" mais que "tu n'as pas les droits de lecture", mais bon), mais si c'est le cas il n'y arrivera pas car il n'aura pas les droits UNIX pour modifier le fichier de toute façon.
Ce qu'il faut si tu n'as pas les droits d'écriture sur le fichier UNIX, c'est soit de l'ouvrir avec un utilisateur qui lui a les droits (sudo, utilisateur admin, etc), soit modifier ses droits pour l'utilisateur courant ("sudo chmod u+w"), le modifier, et restaurer ses droits ensuite ("sudo chmod u-w") pour éviter de garder la porte ouverte.
Si Xcode te propose "Unlock" mais n'y arrive pas, soit c'est parce que Xcode voit qu'il ne pourra pas écrire dans le fichier mais croit que c'est parce qu'il est "verrouillé" alors qu'en fait c'est juste qu'il n'a pas les droits d'écriture... soit qu'il y a les 2 (le fichier est à la fois verrouillé ET n'a pas les droits d'écriture), donc il te propose de le déverrouiller... mais il n'a pas les droits UNIX pour le faire, donc foire.
Je fais avec TextWrangler (que j'apprécie). Mais il est bon de savoir qu'il permet de faire des opérations qui sont interdites aux utilisateurs juste "admin". Je suis admin, mais pas root.