En ce qui concerne la première partie de votre question, vous ne pouvez pas ⌘
Zannuler les modifications, il n'y a pas de commande ou d'annuler, mais vous pouvez définir les autorisations de manière à deviner ce qu'elles étaient auparavant. Plus à ce sujet dans la première puce ci-dessous.
Pour installer un logiciel, /usr/local
vous devez disposer d' autorisations d'écriture dans le répertoire (et ses sous-répertoires). Il y a plusieurs façons d'y parvenir:
- Définissez le propriétaire pour vous-même . C'est ce que tu as fait avec
sudo chown -R $USER /usr/local
. Mon arrière-plan d’administrateur système Linux me dit que ce n’est pas la méthode standard, car elle se /usr/local
trouve en dehors de votre répertoire personnel et ne devrait pas vous appartenir. Mais je ne dirais pas que vous avez endommagé quoi que ce soit de façon irréparable.
Utilisez sudo
, mais vous ne voulez pas être obligé de l'utiliser.
(De mon point de vue, la meilleure solution . Pourquoi? sudo
Vous protège de vous-même. Vous réfléchissez à deux fois si vous devez taper sudo
(sauf si vous suivez un tutoriel de http://howtonode.org :-)
).)
- Définir les ACL . Un bon moyen de séparer les autorisations d'origine de vos autorisations ajoutées. (Voir http://en.wikipedia.org/wiki/Access_control_list pour plus d'informations sur les ACL.)
- Configurez des groupes . Ajoutez-vous au groupe qui possédait
/usr/local
et modifiez les autorisations en g+rwx
/ g+rw
. Lourd. Ne fais pas ça.
Vous avez fait 1. et voulez annuler les modifications, 2. vous ne voulez pas, et je ne recommande pas 4., alors je vais expliquer 3 .:
Commençons par "annuler" les modifications que vous avez apportées. /usr/local
appartenait probablement à l'utilisateur root
, au groupe wheel
. Vous pouvez le définir comme suit:
$ cd /usr/local
$ sudo chown -R root:wheel .
Définissez les ACL de sorte que vous ayez toutes les autorisations:
$ cd /usr/local
$ sudo chmod -R +a "$USER allow delete,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,list,search,add_file,add_subdirectory,delete_child,file_inherit,directory_inherit" .
(voir la man chmod
section ACL MANIPULATION OPTIONS
pour plus de détails.)
Vous verrez que tous les fichiers ont une +
annexe, ls -e
affiche les ACL:
$ cd /usr/local
$ ls -la .
total 0
drwxr-xr-x+ 11 root wheel 374 Oct 10 21:57 .
drwxr-xr-x+ 12 root wheel 442 Sep 22 13:44 ..
drwxr-xr-x+ 3 root wheel 3774 Oct 10 21:57 bin
-rw-r--r--+ 1 jaume wheel 0 Oct 25 14:53 myACLtestfile
drwxr-xr-x+ 3 root wheel 136 Jul 26 18:55 include
drwxr-xr-x+ 4 root wheel 442 Jul 26 18:55 lib
(...)
$ ls -led bin
drwxr-xr-x+ 3 root wheel 3774 Oct 10 21:57 bin
0: user:jaume allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit
$ ls -le myACLtestfile
-rw-r--r--+ 1 jaume wheel 0 Oct 25 14:53 myACLtestfile
0: user:jaume inherited allow read,write,execute,delete,append,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown
(J'ai testé les commandes ci-dessus, mais j'ai peut-être fait une faute de frappe. Comme meilleure pratique, je vous recommande d'exécuter les commandes ci-dessus dans un répertoire de test . Vous pouvez le faire mkdir ~/tmpacl
. Ensuite cd ~/tmpacl
, sudo rsync -av /usr/local/ .
copiez le contenu de /usr/local
dans ~/tmpacl
. Ensuite, passez cd /usr/local
chaque ci-dessus pour appliquer les commandes ~/tmpacl
. Lorsque vous avez terminé, rm -rf ~/tmpacl
).
Maintenant, vous pouvez installer des logiciels (ou faire n'importe quoi, d'ailleurs) /usr/local
sans sudo
.
Notez que tout fichier que vous créez dans vous /usr/local
appartiendra (comme myACLtestfile
dans la liste ci-dessus), de sorte que vous verrez que certains fichiers sont la propriété de root
et d’autres par vous.
(Si vous changez d'avis et souhaitez revenir dans le monde merveilleux de sudo
, supprimez les ACL comme suit:
sudo chmod -R -N /usr/local
et définissez les autorisations sur root:wheel
:
sudo chown -R root:wheel /usr/local
)
** MODIFIER **
Si la routine d'installation du logiciel que vous souhaitez installer utilise/usr/bin/install
cette solution, cela peut s'avérer une solution beaucoup plus simple. Ajouter:
alias install="sudo /usr/bin/install"
à ~/.bashrc
. Ensuite, faites . ~/.bashrc
en sorte que les modifications prennent effet.
Puis éditez /etc/sudoers
avec la commande sudo visudo
, ajoutez:
<your username> ALL=(ALL) NOPASSWD:/usr/bin/install
et enregistrez et fermez le fichier avec :x
.
(Si vous utilisez une autre install
commande ailleurs dans le système de fichiers, telle que l'installation de GNU, modifiez le chemin ci-dessus de manière appropriée.)
Pour que cela fonctionne, le logiciel doit utiliser /usr/bin/install
. C'est généralement le cas avec make install
.
** /MODIFIER **