Cuando se trata de hacer un archivo ejecutable ¿cuál es la diferencia entre chmod 755
y chmod +x
y cuando iba a utilizar lo que? Hasta ahora solo he usado chmod +x
y acabo de leer algo y se usó chmod 755
y no podía decir si era mejor usarlo chmod 755
o no chmod +x
.
command-line
permissions
chmod
Darth4212
fuente
fuente
chmod +x
establece todos los indicadores ejecutables sin cambiar otros permisos.chmod 755
establece rwxr-xr-xRespuestas:
Version corta:
Para poder compararlos, debemos mirarlos desde la misma perspectiva, entonces:
chmod +x
es igual achmod ugo+x
(Basado en elumask
valor)chmod 755
es igual achmod u=rwx,go=rx
Explicació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,
+x
le está diciendo que agregue (+
) el bit ejecutable (x
) al propietario, grupo y otros.ugo+x
ou+x,g+x,o+x
x
que los considere a todos. Y como señaló @Rinzwind, se basa en elumask
valor, agrega el bit a los permitidosumask
. recuerde que si especifica el objetivo como,o+r
entoncesumask
ya no tiene ningún efecto.u+x
para agregar solo bits ejecutables al propietario.Usando
755
usted está especificando:u=rwx
(4 + 2 + 1 para el propietario)g=rx
(4 + 1 para grupo)o=rx
(4 + 1 para otros)Entonces
chmod 755
es como:chmod u=rwx,g=rx,o=rx
ochmod 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 +x
agrega el permiso de ejecución para todos los usuarios a los permisos existentes.chmod 755
establece el755
permiso para un archivo.755
significa 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 +x
es establecer los permisos de forma relativa , mientraschmod 755
que los configura absolutamente .Después de
chmod 755
ejecutarse en un archivo, sus permisos serán 755, orwxr-xr-x
.chmod +x
solo 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 755
establecerwxr-xr-x
mientraschmod +x
ajusta 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 +x
usted 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 755
uso 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,execute
o , por lorwx
tanto, 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:7
es 111 en binario, por lo que está configurando todos los bits de lectura, escritura y ejecución para el propietario;rwx
Está establecido.5
es 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-x
se 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 file
es 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 file
dejará el bit SETUID / SETGID intacto. Podemos ver esto en el siguiente ejemplo:fuente