Lorsqu'il s'agit de rendre un fichier exécutable, quelle est la différence entre chmod 755
y chmod +x
et quand dois-je les utiliser ? Jusqu'à présent, je n'ai utilisé que chmod +x
et je viens de lire quelque chose et ça utilisait chmod 755
et je ne pouvais pas dire s'il était préférable ou non d'utiliser chmod 755
o chmod +x
.
Réponses
Trop de publicités?Version courte :
Pour pouvoir les comparer, nous devons les considérer sous le même angle, donc :
-
chmod +x
est égal àchmod ugo+x
(Basé surumask
valeur) -
chmod 755
est égal àchmod u=rwx,go=rx
Explication :
Tout d'abord, vous devez savoir que :
-
+
signifie ajouter cette permission aux autres permissions dont dispose déjà le fichier. -
=
signifie ignorer toutes les permissions, les définir exactement comme je le fournis.- Ainsi, tous les éléments "read, write, execute, sticky bit, suid et guid" seront ignorés et seuls ceux fournis seront activés.
-
lecture = 4, écriture = 2, exécution = 1
-
Voici la logique binaire qui la sous-tend (si cela vous intéresse) :
Symbolic: r-- -w- --x | 421 Binary: 100 010 001 | ------- Decimal: 4 2 1 | 000 = 0 | 001 = 1 Symbolic: rwx r-x r-x | 010 = 2 Binary: 111 101 101 | 011 = 3 Decimal: 7 5 5 | 100 = 4 / / / | 101 = 5 Owner ---/ / / | 110 = 6 Group ------/ / | 111 = 7 Others ---------/ | Binary to Octal chart
-
Utilisation de +x
vous dites d'ajouter ( +
) le bit exécutable ( x
) au propriétaire, au groupe et aux autres.
- c'est égal à
ugo+x
ou+x,g+x,o+x
- Lorsque vous ne précisez pas lequel des propriétaires, groupes ou autres est votre cible, en cas de
x
il les considère tous. Et comme @Rinzwind l'a souligné, elle est basée surumask
il ajoute le bit à ceuxumask
permet. rappelez-vous que si vous spécifiez la cible commeo+r
puisumask
n'a plus d'effet. - Il ne touche pas les autres mods (permissions).
- Vous pouvez également utiliser
u+x
pour ajouter uniquement le bit exécutable au propriétaire.
Utilisation de 755
que vous spécifiez :
- 7 -->
u=rwx
(4+2+1 pour le propriétaire) - 5 -->
g=rx
(4+1 pour le groupe) - 5 -->
o=rx
(4+1 pour les autres)
Así que chmod 755
c'est comme : chmod u=rwx,g=rx,o=rx
o chmod u=rwx,go=rx
.
Une autre façon de voir les choses (que je trouve plus facile à comprendre) est que chmod +x
est de définir les permissions relativement alors que chmod 755
les met en place absolument .
Après chmod 755
est exécuté sur un fichier, ses permissions sera soit 755, ou rwxr-xr-x
.
chmod +x
prendra simplement les permissions existantes, et ajouter les droits d'exécution sur le fichier.
Je recommande de revoir le chmod pour plus de détails. Vous voyez simplement deux modes de fonctionnement différents disponibles avec la commande chmod pour accomplir la même tâche de modification des permissions.
Le mode octal utilise des chiffres et définit l'ensemble des permissions du fichier. Le mode caractère utilise les lettres et est généralement utilisé pour modifier les autorisations existantes.
chmod 755
fixe rwxr-xr-x
tandis que chmod +x
ajuste les permissions de sorte que le propriétaire, le groupe et le monde aient tous des permissions d'exécution ajoutées. En supposant que l'autorisation de fichier par défaut est de rwxr--r--
il l'ajusterait aux mêmes permissions que 755 des rwxr-xr-x
.
La différence réside dans les autorisations qui sont définies et dans le mode que vous utilisez pour les définir.
Avec chmod +x
vous définissez le bit exécutable pour tous - le propriétaire, le groupe de propriétaires et les autres utilisateurs. C'est ce qu'on appelle le mode symbolique. Pour citer le man chmod
:
L'opérateur + fait en sorte que les bits de mode de fichier sélectionnés soient ajoutés aux bits de mode de fichier existants de chaque fichier ; - fait en sorte qu'ils soient supprimés ; et = les ajoute et supprime les bits non mentionnés, sauf que les bits d'identification d'utilisateur et de groupe non mentionnés d'un répertoire ne sont pas affectés. ne sont pas affectés.
Avec chmod 755
vous utilisez des nombres octaux, dont la représentation binaire est utilisée pour définir des bits de permissions spécifiques. Les 3 premiers bits (à gauche) correspondent aux permissions du propriétaire, les 3 du milieu aux permissions du groupe, et les derniers (les plus à droite) correspondent aux permissions de tous les autres utilisateurs. L'ordre des bits est toujours le même, read,write,execute
o rwx
Ainsi, exactement parce que l'ordre est le même, un nombre individuel, lorsqu'il est converti en représentation binaire, activera les bits de permission pour lesquels le bit positionnel correspondant dans le nombre est 1 et désactivera celui qui est 0. Plus précisément :
- Nombre octal
7
est 111 en binaire, donc vous mettez tous les bits de lecture, d'écriture et d'exécution pour le propriétaire ;rwx
est réglé. - Nombre octal
5
est 101 en binaire, donc vous définissez les bits de lecture et d'exécution mais désactivez les bits d'écriture, et comme c'est 5 pour le groupe et les autres utilisateurs, ces deux catégories auront les mêmes permissions. Ainsi,r-x
est réglé.
Voici la petite démo :
bash-4.3$ touch file1 file2
bash-4.3$ chmod +x file1
bash-4.3$ chmod 755 file2
bash-4.3$ ls -l file1 file2
-rwxrwxr-x 1 xieerqi xieerqi 0 7 6 13:54 file1
-rwxr-xr-x 1 xieerqi xieerqi 0 7 6 13:54 file2
- Réponses précédentes
- Plus de réponses