Quelle est la différence entre "chmod + x" et "chmod 755"?

41

Quand il s’agit de rendre un fichier exécutable, quelle est la différence entre chmod 755 et chmod +x et quand utiliser? Jusqu'à présent, je n'ai utilisé que chmod +x et je viens de lire quelque chose qui utilise chmod 755 et je ne pouvais pas dire s'il était préférable d'utiliser chmod 755 ou chmod +x .

    
posée Darth4212 06.07.2017 - 21:48
la source

6 réponses

102

Version courte:

Pour pouvoir les comparer, nous devrions les regarder du même point de vue, alors:

  • chmod +x est égal à chmod ugo+x
  • chmod 755 est égal à chmod u=rwx,go=rx

Explication:

Tout d’abord, sachez que:

  1. + signifie que vous ajoutez cette autorisation aux autres autorisations que le fichier contient déjà.
  2. = signifie ignorer toutes les autorisations, définissez-les exactement comme je vous le demande.

    • Tous les "read, write, execute, sticky bit, suid et guid" seront ignorés et seuls ceux fournis seront définis.
  3. read = 4, write = 2, execute = 1

    • Voici la logique binaire (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
      

En utilisant +x , vous dites d’ajouter ( + ) le bit exécutable ( x ) au propriétaire, au groupe et aux autres.

  • il est égal à ugo+x ou u+x,g+x,o+x
  • Lorsque vous ne spécifiez pas lequel du propriétaire, du groupe ou des autres est votre cible, dans le cas de x , il les considérera tous. Et comme @Rinzwind l'a fait remarquer, c'est basé sur umask value, cela ajoute le bit à celui que umask autorise. rappelez-vous si vous spécifiez la cible comme o+r alors umask n'a plus d'effet.
  • Il ne touche pas les autres mods (permissions).
  • Vous pouvez également utiliser u+x pour ajouter uniquement un bit exécutable au propriétaire.

En utilisant 755 , vous spécifiez:

  • 7 - & gt; u=rwx (4 + 2 + 1 pour le propriétaire)
  • 5 - & gt; g=rx (4 + 1 pour le groupe)
  • 5 - & gt; o=rx (4 + 1 pour les autres)

Donc chmod 755 est comme: chmod u=rwx,g=rx,o=rx ou chmod u=rwx,go=rx .

    
réponse donnée Ravexina 06.07.2017 - 22:05
la source
34

chmod +x ajoute l'autorisation d'exécution pour tous les utilisateurs aux autorisations existantes.

chmod 755 définit l'autorisation 755 pour un fichier.

755 signifie des autorisations complètes pour le propriétaire et lit et exécute les autorisations pour les autres.

    
réponse donnée Pilot6 06.07.2017 - 21:51
la source
7

Une autre façon de le voir (que je trouve plus facile à comprendre) est que chmod +x définit les autorisations relativement , tandis que chmod 755 les définit absolument .

Après que chmod 755 ait été exécuté sur un fichier, ses autorisations seront 755 ou rwxr-xr-x .

chmod +x prendra simplement les autorisations existantes, et ajoutez des autorisations d'exécution au fichier.

    
réponse donnée Baptiste Candellier 07.07.2017 - 11:19
la source
6

Je recommande de consulter la page de manuel chmod pour plus de détails. Vous voyez juste deux modes de fonctionnement différents disponibles avec la commande chmod pour accomplir la même tâche de modification des autorisations.

Le mode octal utilise des nombres et définit l'intégralité des autorisations du fichier. Le mode caractère utilise les lettres et est généralement utilisé pour modifier les autorisations existantes.

chmod 755 définit rwxr-xr-x lorsque chmod +x ajuste les autorisations pour que le propriétaire, le groupe et le monde aient tous des autorisations exécutables ajoutées. En supposant une autorisation de fichier par défaut de rwxr--r-- , cela l'ajusterait aux mêmes autorisations que 755 de rwxr-xr-x .

    
réponse donnée TopHat 06.07.2017 - 21:57
la source
5

La différence réside dans les autorisations obtenues et 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 propriétaire et les autres utilisateurs. Ceci est connu comme mode symbolique. Pour citer le man chmod :

  

L'opérateur + entraîne l'ajout des bits du mode fichier sélectionné aux bits du mode fichier existant de chaque fichier; - provoque leur retrait; et   = provoque leur ajout et provoque la suppression des bits non mentionnés, à l'exception du fait que les bits non spécifiés de l'utilisateur et de l'ID de groupe d'un répertoire sont   pas affecté.

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. Premier (à gauche) 3 bits correspondent aux autorisations du propriétaire, au milieu 3 aux autorisations du groupe et le dernier (le plus à droite) correspond aux autorisations de tous les autres utilisateurs. L'ordre des bits est toujours le même, read,write,execute ou rwx Ainsi, exactement parce que l'ordre est le même, un numéro individuel converti en représentation binaire définira les bits de permission pour le bit de position correspondant dans le nombre 1 et Désactiver celui qui est 0. Spécifiquement:

  • Le nombre octal 7 est 111 en binaire, vous définissez donc tous les bits en lecture, écriture et exécution pour le propriétaire; rwx est défini.
  • Le nombre octal 5 est 101 en binaire, vous définissez donc read et execute mais désactivez les bits d'écriture, et comme il s'agit de 5 pour le groupe et les autres utilisateurs, ces deux catégories auront les mêmes autorisations. Ainsi, r-x est défini.

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éponse donnée Sergiy Kolodyazhnyy 06.07.2017 - 21:57
la source
3

Une différence importante est que chmod + est soumis aux restrictions umask, et que chmod & lt; octal & gt; n'est pas.

Considérez l'exemple suivant:

$ ls -l foo bar
---------- 1 gowenfawr users 0 Jul  7 16:40 bar
---------- 1 gowenfawr users 0 Jul  7 16:39 foo
$ umask
0022
$ chmod +w bar
$ umask 0002
$ chmod +w foo
$ ls -l foo bar
--w------- 1 gowenfawr users 0 Jul  7 16:40 bar
--w--w---- 1 gowenfawr users 0 Jul  7 16:39 foo
$

Donc, si vous voulez apporter un changement de delta aux autorisations d'une manière appropriée à vos paramètres umask, utilisez la syntaxe '+'. Mais si vous voulez le définir absolument sans vous soucier de umask, utilisez le & lt; octal & gt; format, et se rendre compte que vous devez spécifier tous les bits et pas seulement un delta.

    
réponse donnée gowenfawr 07.07.2017 - 18:45
la source

Lire d'autres questions sur les étiquettes