Cuando se trata de hacer un archivo ejecutable ¿cuál es la diferencia entre chmod 755y chmod +xy cuando iba a utilizar lo que? Hasta ahora solo he usado chmod +xy acabo de leer algo y se usó chmod 755y no podía decir si era mejor usarlo chmod 755o no chmod +x.
command-line
permissions
chmod
Darth4212
fuente
fuente

chmod +xestablece todos los indicadores ejecutables sin cambiar otros permisos.chmod 755establece rwxr-xr-xRespuestas:
Version corta:
Para poder compararlos, debemos mirarlos desde la misma perspectiva, entonces:
chmod +xes igual achmod ugo+x(Basado en elumaskvalor)chmod 755es igual achmod u=rwx,go=rxExplicación:
En primer lugar debes saber que:
+significa agregar este permiso a los otros permisos que el archivo ya tiene.=significa ignorar todos los permisos, configurarlos exactamente como proporciono.lectura = 4, escritura = 2, ejecución = 1
Aquí está la lógica binaria detrás de esto (si está interesado):
Al usar,
+xle está diciendo que agregue (+) el bit ejecutable (x) al propietario, grupo y otros.ugo+xou+x,g+x,o+xxque los considere a todos. Y como señaló @Rinzwind, se basa en elumaskvalor, agrega el bit a los permitidosumask. recuerde que si especifica el objetivo como,o+rentoncesumaskya no tiene ningún efecto.u+xpara agregar solo bits ejecutables al propietario.Usando
755usted está especificando:u=rwx(4 + 2 + 1 para el propietario)g=rx(4 + 1 para grupo)o=rx(4 + 1 para otros)Entonces
chmod 755es como:chmod u=rwx,g=rx,o=rxochmod u=rwx,go=rx.fuente
chmod 755, establece esos bits Y también borra todos los bits suid / sgid / sticky (que pueden haber estado allí) (por ejemplo: NUNCAchmod 755 /tmp). 755 siempre debe pensarse como 0755, es decir, el primer conjunto octal de bits también se establece en 0.chmod +xagrega el permiso de ejecución para todos los usuarios a los permisos existentes.chmod 755establece el755permiso para un archivo.755significa permisos completos para el propietario y permisos de lectura y ejecución para otros.fuente
Otra forma de verlo (lo cual me resulta más fácil de entender)
chmod +xes establecer los permisos de forma relativa , mientraschmod 755que los configura absolutamente .Después de
chmod 755ejecutarse en un archivo, sus permisos serán 755, orwxr-xr-x.chmod +xsolo tomará los permisos existentes y agregará permisos de ejecución al archivo.fuente
Recomiendo revisar la página de manual de chmod para más detalles. Solo está viendo dos modos de operación diferentes disponibles con el comando chmod para realizar la misma tarea de cambiar los permisos.
El modo octal usa números y establece todos los permisos del archivo. El modo de caracteres usa las letras y generalmente se usa para modificar solo los permisos existentes.
chmod 755establecerwxr-xr-xmientraschmod +xajusta los permisos para que el propietario, el grupo y el mundo tengan todos los permisos ejecutables agregados. Asumir un permiso de archivo predeterminadorwxr--r--lo ajustaría a los mismos permisos que 755 derwxr-xr-x.fuente
La diferencia es qué permisos se configuran y qué modo utiliza para configurarlos.
Con
chmod +xusted establece el bit ejecutable para todos: el propietario, el grupo de propietarios y los demás usuarios. Esto se conoce como modo simbólico. Para citar elman chmod:Con el
chmod 755uso de números octales, cuya representación binaria se usa para establecer bits específicos de permisos. Los primeros 3 bits (a la izquierda) corresponden a los permisos del propietario, los 3 medios a los permisos del grupo y los últimos (a la derecha) corresponden a los permisos de todos los demás usuarios. El orden de los bits es siempre el mismoread,write,executeo , por lorwxtanto, exactamente porque el orden es el mismo, el número individual cuando se convierte en representación binaria establecerá los bits de permiso para los que el bit posicional correspondiente en el número es 1 y desarma el que es 0 Específicamente:7es 111 en binario, por lo que está configurando todos los bits de lectura, escritura y ejecución para el propietario;rwxEstá establecido.5es 101 en binario, por lo que está configurando leer y ejecutar pero deshabilitar los bits de escritura, y dado que es 5 para el grupo y otros usuarios, esas dos categorías tendrán los mismos permisos. Asír-xse establece.Aquí está la pequeña demostración:
fuente
Una diferencia importante es que chmod + está sujeto a las restricciones de umask y chmod <octal> no.
Considere el siguiente ejemplo:
Por lo tanto, si desea realizar un cambio delta a los permisos de una manera apropiada para la configuración de umask, use la sintaxis '+'. Pero si desea configurarlo absolutamente sin tener en cuenta umask, use el formato <octal> y tenga en cuenta que debe especificar todos los bits y no solo un delta.
fuente
Además de estas hermosas respuestas, quiero mencionar una pequeña pero probablemente importante diferencia. El comando
chmod 755 filees equivalente achmod 0755 file. Si ejecutamos este comando en un archivo que tiene el bit SETUID o el bit SETGID establecido, eliminará el bit SETUID / SETGID.chmod +x filedejará el bit SETUID / SETGID intacto. Podemos ver esto en el siguiente ejemplo:fuente