Pour ce qui est de la première partie de votre question, vous ne pouvez pas annuler les changements, il n'y a pas de Z ou la commande undo, mais vous pouvez définir les permissions à une bonne estimation de ce qu'elles étaient avant. Plus d'informations à ce sujet dans le premier point ci-dessous.
Pour installer un logiciel dans /usr/local
vous devez avoir autorisations d'écriture dans le répertoire (et ses sous-répertoires). Il existe plusieurs façons d'y parvenir :
-
Fixez le propriétaire à vous-même . C'est ce que vous avez fait avec sudo chown -R $USER /usr/local
. Mon expérience d'administrateur système Linux me dit que ce n'est pas la méthode standard, car /usr/local
est en dehors de votre répertoire personnel et ne devrait pas vous appartenir. Mais je ne dirais pas que vous avez endommagé quelque chose de façon irréparable.
-
Utilisez sudo
mais vous ne voulez pas être obligé de l'utiliser.
(De mon point de vue, le 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 . C'est une bonne façon de séparer les autorisations d'origine de celles que vous avez ajoutées. (Voir http://en.wikipedia.org/wiki/Access_control_list pour plus d'informations sur les ACL).
-
Configurer les groupes . Ajoutez vous au groupe qui possédait /usr/local
et changez les permissions pour g+rwx
/ g+rw
. Encombrant. Ne faites pas cela.
Vous avez fait 1. et vous voulez revenir sur les changements, 2. vous ne voulez pas, et je ne recommande pas 4., donc je vais expliquer 3 :
-
Commençons par "rétablir" les changements que vous avez effectués. /usr/local
a probablement appartenu à l'utilisateur root
groupe wheel
. Vous pouvez le régler comme suit :
$ cd /usr/local
$ sudo chown -R root:wheel .
-
Définissez les ACL de façon à ce que vous ayez toutes les permissions :
$ 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 man chmod
, section ACL MANIPULATION OPTIONS
pour plus de détails).
-
Vous verrez que tous les fichiers ont un +
annexé, ls -e
montre les ACLs :
$ 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. Je vous recommande d'exécuter les commandes ci-dessus dans un répertoire de test. . Vous pourriez faire mkdir ~/tmpacl
. Ensuite, cd ~/tmpacl
y sudo rsync -av /usr/local/ .
pour copier le contenu de /usr/local
a ~/tmpacl
. Puis sauter cd /usr/local
dans chaque section ci-dessus pour appliquer les commandes à ~/tmpacl
. Lorsque vous avez terminé, rm -rf ~/tmpacl
.)
Maintenant, vous pouvez installer des logiciels (ou faire quoi que ce soit, d'ailleurs) en /usr/local
sans sudo
.
Notez que tout fichier que vous créez dans /usr/local
vous appartiendra (comme myACLtestfile
dans le listing ci-dessus), vous verrez donc que certains fichiers sont la propriété de root
et d'autres par vous.
(Si vous changez d'avis et que vous voulez retourner dans le monde merveilleux des sudo
, supprimez les ACLs comme suit :
sudo chmod -R -N /usr/local
et définir les permissions pour root:wheel
:
sudo chown -R root:wheel /usr/local
)
** EDIT **
Si la routine d'installation du logiciel que vous voulez installer utilise /usr/bin/install
il s'agit peut-être d'une solution beaucoup plus simple. Ajoutez :
alias install="sudo /usr/bin/install"
à ~/.bashrc
. Ensuite, faites . ~/.bashrc
pour que les changements prennent effet.
Puis modifier /etc/sudoers
avec commande sudo visudo
, ajoutez :
<your username> ALL=(ALL) NOPASSWD:/usr/bin/install
puis enregistrez et fermez le fichier avec :x
.
(Si vous utilisez d'autres install
ailleurs dans le système de fichiers, comme GNU install, 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
.
** /EDIT **