Después de obtener mi pregunta respondida aquí e investigar un poco sobre el resultado, encontré un artículo que lo explica todo muy bien. Me gustaría compartir algunas partes de este artículo aquí para futuras referencias.
Ver permisos
Para chmod
cambiar los permisos de un archivo o directorio, primero deberá saber cuál es el modo de acceso actual. Puede ver el contenido de un directorio en la terminal cd
en ese directorio y luego usar:
$ ls -l
El -l
cambio es importante porque usarlo ls
sin él solo mostrará los nombres de archivos o carpetas en el directorio.
A continuación se muestra un ejemplo de uso ls -l
en mi directorio de inicio:
total 128
drwxr-xr-x 2 peter users 4096 Jul 5 21:03 Desktop
drwxr-xr-x 6 peter users 4096 Jul 5 17:37 Documents
drwxr-xr-x 2 peter users 4096 Jul 5 13:45 Downloads
drwxr-xr-x 2 peter users 4096 Jun 24 03:36 Movies
drwxr-xr-x 2 peter users 4096 Jun 24 03:38 Music
drwxr-xr-x 2 peter users 4096 Jun 26 00:09 Pictures
-rw-r--r-- 1 peter users 354 Jul 6 17:15 chmodtest
Que significan las columnas
La primera columna es el tipo de cada archivo:
-
denota un archivo normal.
d
denota un directorio, es decir, una carpeta que contiene otros archivos o carpetas.
p
denota una tubería con nombre (también conocido como FIFO).
l
denota un enlace simbólico.
Las letras después de eso son los permisos, esta primera columna es lo que más nos interesará. La segunda es cuántos enlaces hay en un archivo, podemos ignorarlo con seguridad. La tercera columna tiene dos valores / nombres: el primero (en mi ejemplo 'peter') es el nombre del usuario que posee el archivo. El segundo valor ('usuarios' en el ejemplo) es el grupo al que pertenece el propietario (Lea más sobre los grupos).
La siguiente columna es el tamaño del archivo o directorio en bytes y la información posterior son las fechas y horas en que el archivo o directorio se modificó por última vez y, por supuesto, el nombre del archivo o directorio.
Qué significan los permisos
Las primeras tres letras, después de la primera -
o d
, son los permisos que tiene el propietario. Las siguientes tres letras son permisos que se aplican al grupo. Las últimas tres letras son los permisos que se aplican a todos los demás.
Cada conjunto de tres letras está compuesto por r
w
y x
. r
siempre está en la primera posición, w
siempre está en la segunda posición y x
siempre está en la tercera posición. r
es el permiso de lectura, w
es el permiso de escritura y x
es el permiso de ejecución. Si hay un guión ( -
) en el lugar de una de estas letras, significa que el permiso no se otorga, y si la letra está presente, se otorga.
Carpetas
En el caso de las carpetas, los bits de modo se pueden interpretar de la siguiente manera:
r
(leer) significa la capacidad de leer la tabla de contenido del directorio dado,
w
(escribir) significa la capacidad de escribir la tabla de contenido del directorio dado (crear nuevos archivos, carpetas; renombrar, eliminar archivos existentes, carpetas) si y solo si se establece el bit de ejecución. De lo contrario, este permiso no tiene sentido.
x
(ejecutar) representa la capacidad de ingresar al directorio dado con el comando cd y acceder a los archivos, carpetas en ese directorio.
Cambiar permisos usando el comando chmod
chmod
es un comando en Linux y otros sistemas operativos tipo Unix. Le permite cambiar los permisos (o modo de acceso) de un archivo o directorio.
Puede modificar los permisos de dos maneras diferentes: - Basado en texto - Basado en chmod
númerochmod
Método de texto
Para cambiar los permisos o el modo de acceso de un archivo, utilizamos el comando chmod en un terminal. A continuación se muestra la estructura general del comando:
chmod who=permissions filename
Dónde Quién es cualquiera de una gama de letras, y cada una significa a quién le va a dar permiso. Son los siguientes:
u - The user that owns the file.
g - The group the file belongs to.
o - The other users i.e. everyone else.
a - all of the above - use this instead of having to type ugo.
Los permisos son los mismos que ya se ha discutido ( r
, w
y x
).
El comando chmod nos permite sumar y restar permisos de un conjunto existente usando + o - en lugar de =. Esto es diferente a los comandos anteriores, que esencialmente reescriben los permisos (es decir, para cambiar un permiso de r--
a rw-
, aún debe incluirlo r
así como w
después =
del chmod
comando. Si se lo perdiera r
, le quitaría el r
permiso como se están reescribiendo con =. Usando + y - evite esto agregando o quitando el conjunto actual de permisos).
Método de número
chmod
También puede establecer permisos usando números.
El uso de números es otro método que le permite editar los permisos para los tres propietarios, grupos y otros al mismo tiempo. Esta estructura básica del código es esta:
chmod xxx file/directory
Donde xxx es un número de 3 dígitos donde cada dígito puede ser del 1 al 7. El primer dígito se aplica a los permisos para el propietario, el segundo dígito se aplica a los permisos para el grupo y el tercer dígito se aplica a los permisos para todos los demás.
En esta notación numérica, los valores r, w y x tienen su propio valor numérico:
r=4
w=2
x=1
Para obtener un número de tres dígitos, debe considerar qué permisos desea que tenga un propietario, un grupo y un usuario, y luego sumar sus valores. Por ejemplo, supongamos que quería otorgarle al propietario de un directorio permisos de lectura-escritura y ejecución, y quería agrupar a todos los demás para que solo leyeran y ejecutaran permisos. Se me ocurrirían los valores numéricos de esta manera:
Owner: rwx = 4+2+1=7
Group: r-x = 4+0+1=5 (or just 4+1=5)
Other: r-x = 4+0+1=5 (or just 4+1=5)
Final number = 755
$ chmod 755 filename
Esto es equivalente a usar lo siguiente:
chmod u=rwx filename
chmod go=rx filename
La mayoría de las carpetas / directorios están configurados en 755 para permitir la lectura y escritura y la ejecución al propietario, pero niegan la escritura a todos los demás, y los archivos normalmente son 644 para permitir la lectura y escritura para el propietario, pero solo la lectura para todos los demás, consulte el último Nota sobre la falta de permisos x con archivos no ejecutables: es el mismo trato aquí.