Quand il s'agit de faire un fichier exécutable quelle est la différence entre chmod 755
et chmod +x
quand devrais - je utiliser qui? Jusqu'ici, je n'ai fait qu'utiliser chmod +x
et je viens de lire quelque chose et c'est utilisé chmod 755
et je ne savais pas s'il était préférable d'utiliser chmod 755
ou non chmod +x
.
command-line
permissions
chmod
Darth4212
la source
la source
chmod +x
définit tous les indicateurs exécutables sans modifier les autres autorisations.chmod 755
rwxr-xr-xRéponses:
Version courte:
Pour pouvoir les comparer, il faut les regarder dans la même perspective, donc:
chmod +x
est égal àchmod ugo+x
(basé sur laumask
valeur)chmod 755
est égal àchmod u=rwx,go=rx
Explication:
Tout d'abord, vous devez savoir que:
+
signifie ajouter cette autorisation aux autres autorisations déjà présentes dans le fichier.=
signifie ignorer toutes les autorisations, les définir exactement comme je le fournis.read = 4, write = 2, execute = 1
Voici la logique binaire derrière tout ça (si ça vous intéresse):
En utilisant
+x
vous dites d'ajouter (+
) l'exécutable bit (x
) au propriétaire, au groupe et aux autres.ugo+x
ouu+x,g+x,o+x
x
il les considérera tous. Et comme l'a souligné @Rinzwind, c'est basé sur laumask
valeur, il ajoute le bit à celui qui leumask
permet. Rappelez-vous que si vous spécifiez la cible,o+r
elleumask
n'aura plus aucun effet.u+x
pour ajouter uniquement le bit exécutable au propriétaire.En utilisant,
755
vous spécifiez:u=rwx
(4 + 2 + 1 pour le propriétaire)g=rx
(4 + 1 pour le groupe)o=rx
(4 + 1 pour les autres)Donc,
chmod 755
c'est comme:chmod u=rwx,g=rx,o=rx
ouchmod u=rwx,go=rx
.la source
chmod 755
vous utilisez ces bits ET que vous effacez également tous les bits suid / sgid / sticky (qui ont peut-être été là) (par exemple: NEVERchmod 755 /tmp
). 755 devrait toujours être considéré comme 0755, c'est-à-dire que le premier ensemble octal de bits est également mis à 0.chmod +x
ajoute l'autorisation d'exécuter pour tous les utilisateurs aux autorisations existantes.chmod 755
définit l'755
autorisation pour un fichier.755
signifie des autorisations complètes pour le propriétaire et des autorisations de lecture et d'exécution pour les autres.la source
Une autre façon de voir les choses (que je trouve plus facile à comprendre)
chmod +x
est de définir les autorisations de manière relative , alors que de leschmod 755
définir de manière absolue .Après avoir
chmod 755
été exécuté sur un fichier, ses autorisations seront 755 ourwxr-xr-x
.chmod +x
va simplement prendre les autorisations existantes, et ajouter des autorisations d'exécution au fichier.la source
Je recommande de consulter la page de manuel chmod pour plus de détails. Vous ne voyez que deux modes d’opération différents disponibles avec la commande chmod pour effectuer la même tâche de modification des autorisations.
Le mode octal utilise des nombres et définit toutes les autorisations du fichier. Le mode caractère utilise les lettres et est généralement utilisé pour modifier simplement les autorisations existantes.
chmod 755
définitrwxr-xr-x
tandis quechmod +x
ajuste les autorisations afin que le propriétaire, le groupe et le monde aient tous des autorisations exécutables ajoutées. En supposant qu'une autorisation de fichier par défaut l’rwxr--r--
adapte aux mêmes autorisations que 755 ofrwxr-xr-x
.la source
La différence réside dans les autorisations 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. Ceci est appelé mode symbolique. Pour citer leman chmod
:Avec
chmod 755
vous utilisez des nombres octaux, dont la représentation binaire est utilisée pour définir des bits d’autorisations spécifiques. Les 3 premiers bits (à gauche) correspondent aux autorisations du propriétaire, les 3 derniers à ceux du groupe et les derniers (à l'extrême droite) aux autorisations de tous les autres utilisateurs. L'ordre des bits est toujours identiqueread,write,execute
ourwx
Ainsi, exactement parce que l'ordre est identique, un nombre individuel converti en représentation binaire définira les bits d'autorisation pour lesquels le bit de position correspondant dans le nombre est 1 et désactive celui qui est 0. . Plus précisément:7
est 111 en binaire, vous définissez donc tous les bits de lecture, d'écriture et d'exécution pour le propriétaire;rwx
est réglé.5
est 101 en binaire. Vous définissez donc lire et exécuter, mais vous désactivez les bits d'écriture. Comme il s'agit de 5 pour le groupe et les autres utilisateurs, ces deux catégories auront les mêmes autorisations. Ainsir-x
est réglé.Voici la petite démo:
la source
Une différence importante est que chmod + est soumis aux restrictions umask et que chmod <octal> ne l’est pas.
Prenons l'exemple suivant:
Par conséquent, si vous souhaitez modifier en delta les autorisations d'une manière qui convient à vos paramètres umask, utilisez la syntaxe '+'. Mais si vous voulez le définir absolument sans tenir compte de umask, utilisez le format <octal> et réalisez que vous devez spécifier tous les bits et pas seulement un delta.
la source
En plus de ces belles réponses, je souhaite mentionner une différence petite mais probablement importante. La commande
chmod 755 file
est équivalente àchmod 0755 file
. Si nous exécutons cette commande sur un fichier dont le bit SETUID ou SETGID-bit est défini, les bits SETUID / SETGID-bit seront supprimés.chmod +x file
laissera le bit SETUID / SETGID inchangé. Nous pouvons le voir dans l'exemple suivant:la source