'chmod u + x' versus 'chmod + x'

113

¿Cuál es la diferencia entre chmod u+xy just chmod +x? He visto un montón de tutoriales que dicen usar u+xpara hacer scripts ejecutables. Sin embargo, omitir el uno parece tener ningún efecto.

Nathan Schwermann
fuente

Respuestas:

150

La página del manual de chmodcubre eso.

  • U significa usuario.
  • g significa grupo.
  • o representa a los demás.
  • A representa a todos.

Eso significa que chmod u+x somefilesolo otorgará permisos al propietario de la ejecución de ese archivo, mientras que chmod +x somefilees lo mismo que chmod a+x somefile.

La página de manual de chmod dice:

El formato de un modo simbólico es [ugoa...][[+-=][rwxXstugo...]...][,...]. Se pueden dar múltiples operaciones simbólicas, separadas por comas.

Una combinación de las letras 'ugoa' controla qué acceso de los usuarios al archivo cambiará: el usuario que lo posee (u), otros usuarios en el grupo del archivo (g), otros usuarios que no están en el grupo del archivo (o), o todos los usuarios (a). Si no se da ninguno de estos, el efecto es como si se diera 'a', pero los bits que se establecen en la máscara de usuario no se ven afectados.

Octavian Damiean
fuente
Tengo una pequeña pregunta, ¿cuál es la diferencia entre a + x y digamos 111. Hace que ambos sean ejecutables
TheBro21
Esto se debe a que 1 es la notación octal que representa el permiso de ejecución. 111 significa ejecutable para usuario, grupo y otros.
Octavian Damiean
Gran respuesta limpia
m4heshd
El efecto umask es importante, chmod +x filediferenciándose de chmod a+x file: vea la respuesta de Ravexina para más detalles.
Cinnam
19

Simplemente +xse aplicará a todos los indicadores: [u] ser, [g] roup, [o] thers.

Escriba man chmodpara más información.

matpie
fuente
Prometo que revisé el manual primero pero no lo vi, ya que salté la descripción y salté a las opciones. Aunque los veo ahora :-)
Nathan Schwermann
14

Requisitos

En primer lugar, le sugiero que lea estas preguntas y las respuestas vinculadas a continuación:

Le ayuda a comprender todas las partes necesarias que necesita saber.


Version corta

  • chmod +xes igual a chmod ugo+x(Basado en el umaskvalor)
  • chmod a+xes igual a chmod ugo+x(Sin considerar el umaskvalor)

Explicación

El resultado de chmod a+xes establecer el bit ejecutable para todos (Propietario, Grupo, Otros), fácil ¿verdad?

Sin embargo, chmod +xcomo es un poco complicado, dice umaskvalor de uso y, en función de ese valor, agregue el valor xa todos los que están permitidos.

Entonces, si el umaskde mi entorno es 0002:

$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx

Se agregará xal usuario (propietario), grupo y otros, en esta situación (que es la situación predeterminada para la mayoría de los sistemas) es exactamente igual chmod ugo+xo igual que chmod a+x, o en una forma más detallada:

chmod u+x,g+x,o+x

¿Puedes detectar la conexión chmod u+x,g+x,o+xy la salida de umask -S?

Ahora cambiemos el umaskshell actual a 0003:

$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r

Como puede ver ahora, solo el propietario y el grupo obtendrán el bit ejecutable y no los demás. Significa chmod +xque ahora es igual a chmod u+x,g+xo chmod ug+x.


¡Hora de preguntar!

¿Qué sucede si ejecuto chmod +wun archivo después de configurarlo umasken 0003?

Igual que antes, solo afecta usery groupdel archivo porque 3 también elimina el permiso de escritura (2).


Prima

Tiene el mismo efecto cuando eliminas un bit como chmod -w:

$ mkdir test
$ stat -c %A test
drwxrwxr-x
$ umask
0002
$ chmod +w test
$ stat -c %A test
drwxrwxr-x
$ chmod a+w test
$ stat -c %A test
drwxrwxrwx
$ chmod -w test
chmod: test/: new permissions are r-xr-xrwx, not r-xr-xr-x
$ stat -c %A test
dr-xr-xrwx
Ravexina
fuente
7

chmod u+x hará que el archivo sea ejecutable para su usuario (solo lo agregará para su usuario, aunque ya puede ser ejecutable por el propietario del grupo u "otro").

chmod +xo chmod a+x('todo más bit ejecutable') hace que el archivo sea ejecutable por todos.

Si hace esto a un directorio, en su lugar, se puede buscar el directorio. Es decir, puede enumerar el contenido de un directorio para el que tiene permiso + x.

belacqua
fuente
lo siento, pero esto tampoco funcionó para mí. Lo probé con sudo y no funcionó en mi computadora. askubuntu.com/questions/178231/how-to-set-permission-in-ubuntu
Anirudha Gupta
@AnkitGupta No estoy seguro de lo que estás diciendo. Mi comentario no tenía la intención de solucionar un problema en un Q&A diferente. Intenta pedir una aclaración a las respuestas allí. Edite su pregunta para decir lo que ha intentado. Mostrar la salida.
belacqua
1
  • chmod u+x filesignifica agregar el bit ejecutable al propietario del archivo mientras se ignora el umask(Su mod se establecerá, sin duda).

  • chmod +x filesignifica agregar el bit ejecutable al propietario, el grupo y otros mientras considera el umask(Primero verifique y umaskluego aplique los mods, podría tener diferentes efectos según el valor de umask).


creemos dos archivos:

$ touch file1 file2
$ ls -l file1 file2
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:45 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:45 file2

Ahora me puse la umaskde "111" para eliminar los bits de ejecución: umask 111.

$ chmod u+x file1
$ chmod  +x file2
$ ls -l file1 file2
-rwxrw-rw- 1 ravexina ravexina 0 Aug  5 01:47 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:47 file2

Como puede ver, el chmodignorado umasky el archivo1 obtuvieron un bit ejecutable para su propietario, sin embargo, el segundo no hizo nada porque está considerando el valor de umask.

Ravexina
fuente