Modulo 15
Modulo 15
Modulo 15
1 Introducción
La propiedad de archivo es crítica para la seguridad de los archivos. Cada archivo tiene un
usuario propietario y un propietario de grupo.
Este capítulo se centrará en cómo especificar el usuario y grupo propietarios de un
archivo. Además, se explorará el concepto de los permisos de archivo y directorio,
incluyendo cómo cambiar los permisos de los archivos y directorios. Por defecto los
permisos son los permisos establecidos para los archivos y directorios cuando se crean
inicialmente.
Porqué obtener una certificación LPI?
LPI ofrece credenciales que son reconocidas a lo ancho de toda la industria como un
medio de validar habilidades a través de todas las distribuciones de Linux; para
proporcionarte conocimiento básico y el más amplio rango de oportunidades de trabajo.
Linux Essentials es un primer gran paso en acelerar tu carrera tecnológica.
sysadmin@localhost:~$ id
uid=500(sysadmin) gid=500(sysadmin) groups=500(sysadmin),10001(researc
h),10002(development) context=unconfined_u:unconfined_r:unconfined_t:s
0-s0:c0.c1023
El ejemplo anterior muestra que el usuario tiene un UID de 500 para la cuenta del usuario
sysadmin. Muestra que el grupo primario para este usuario tiene un GID de 500 para el
grupo sysadmin.
Ya que la cuenta de usuario y la cuenta del grupo primario tienen el mismo nombre y el
mismo identificador numérico, esto indica que este usuario está en un grupo privado de
usuario (UPG). Además, el usuario pertenece a dos grupos adicionales: el
grupo research(o «investigación» en español) con un GID de 10001 y el
grupo development (o «desarrollo» en español) con un GID de 10002.
Cuando se crea un archivo, éste pertenecerá al usuario actual y su grupo primario actual.
Si el usuario del ejemplo anterior ejecutara un comando como touch para crear un archivo
y luego ver los detalles de archivo, la salida sería como la siguiente:
sysadmin@localhost:~$ groups
sysadmin research development
La salida de groups puede no ser tan detallada como la salida del comando id, pero si
todo lo que necesitas saber es a qué grupos puedes cambiar utilizando el
comando newgrp, entonces el comando groups proporciona la información que necesitas.
La salida del comando id muestra tu grupo primario actual, por lo que es útil verificar que
el comando newgrp tuvo éxito.
Por ejemplo, si el usuario sysadmin quería tener un archivo que fuera propiedad del
grupo research, pero no era el grupo primario del usuario, el usuario podría utilizar el
comando newgrp y comprobar el grupo primario correcto con el comando id antes de
crear el nuevo archivo:
sysadmin@localhost:~$ id
uid=502(sysadmin) gid=503(sysadmin) groups=503(sysadmin),10001(researc
h),10002(development) context=unconfined_u:unconfined_r:unconfined_t:s
0-s0:c0.c1023
sysadmin@localhost:~$ newgrp research
sysadmin@localhost:~$ id
uid=502(sysadmin) gid=10001(research) groups=503(sysadmin),10001(resea
rch),10002(development) context=unconfined_u:unconfined_r:unconfined_t
:s0-s0:c0.c1023
De la salida de los comandos anteriores, primero puedes ver que el GID del usuario es
de 503 para el usuario sysadmin, y luego se ejecuta el comando newgrp research, y
después el GID primario del usuario es de 10001, el grupo research. Después de estos
comandos, si el usuario quiere crear otro archivo y ver sus detalles, el nuevo archivo
pertenecería al grupo research:
El comando stat también será útil más adelante en este capítulo cuando hablemos de los
permisos, ya que proporciona más detalles que el comando ls -l.
El siguiente gráfico muestra al usuario sysadmin cambiando la propiedad de grupo de un
archivo que posee el usuario:
A veces quieres no sólo cambiar los archivos en el directorio actual, pero también los
archivos en los subdirectorios. Cuando se ejecuta con la opción -R(recursivo), el
comando chgrp operará no sólo en el directorio actual, sino también en todos los
directorios que pueden estar anidados bajo el directorio especificado. La operación
también afectarán a todos los archivos en los subdirectorios, no sólo en los directorios.
El gráfico siguiente ilustra el uso de la opción -R:
sysadmin@localhost:~$ cp -r /etc/sound .
sysadmin@localhost:~$ ls -ld sound
drwxr-xr-x 1 sysadmin sysadmin 0 Dec 11 02:02 sound
sysadmin@localhost:~$ls -lR sound
sound:
total 4
drwxr-xr-x. 2 sysadmin sysadmin 4096 Oct 28 13:06 events
sound/events:
total 48
-rw-r--r--. 1 sysadmin sysadmin 27223 Oct 28 13:06 gnome-2.soundlist
-rw-r--r--. 1 sysadmin sysadmin 18097 Oct 28 13:06 gtk-events-2.soundl
ist
sysadmin@localhost:~$ chgrp -R development sound
sysadmin@localhost:~$ ls -ld sound
drwxr-xr-x. 3 sysadmin development 4096 Oct 28 13:06 sound
ls -lR sound
sound:
total 4
drwxr-xr-x. 2 sysadmin development 4096 Oct 28 13:06 events
sound/events:
-rw-r--r--. 1 sysadmin development 27223 Oct 28 13:06 gnome-2.soundlis
t
-rw-r--r--. 1 sysadmin development 18097 Oct 28 13:06 gtk-events-2.sou
ndlist
sysadmin@localhost:~$
El segundo método es cambiar ambos el usuario y el grupo; esto también requiere
privilegios de root. Para lograr esto, debes separar al usuario y el grupo por dos puntos o
un punto. Por ejemplo:
Si un usuario no tiene privilegios de root, puede utilizar el tercer método para cambiar el
grupo propietario de un archivo al igual que el comando chgrp. Para usa chown para
cambiar sólo la propiedad de grupo del archivo, usar dos puntos o un punto como un
prefijo para el nombre del grupo:
15.6 Permisos
Al ejecutar el comando ls -l, la salida resultante muestra diez caracteres al principio de
cada línea, que indican el tipo de archivo y los permisos del archivo:
Por ejemplo, considera la salida del siguiente comando:
root@localhost:~# ls -l /etc/passwd
-rw-r--r--. 1 root root 4135 May 27 21:08 /etc/passwd
Basándose en la salida del comando anterior, los primeros diez caracteres podrían ser
descritos por la siguiente tabla:
A pesar de que todos los tipos de archivos estan listados en la tabla anterior, lo más
probable es que nunca te encontrarás nada más que archivos regulares, directorios y
archivos de enlace, a menos que explores el directorio /dev.
Los caracteres de la parte de permisos de la salida tienen los siguientes significados:
Los permisos establecidos en estos archivos determinan el nivel de acceso que un usuario
va a tener en el archivo. Cuando un usuario ejecuta un programa y el programa accede a
un archivo, los permisos se comprueban para determinar si el usuario tiene los derechos
de acceso correctos en el archivo.
Los propios permisos son engañosamente simple y tienen un significado diferente
dependiendo de si se aplican a un archivo o un directorio:
Previous
Next
Previous
Next
Previous
Next
Previous
Next
Previous
Next
Previous
Next
Importante: Para cambiar los permisos de un archivo, necesitas ser el propietario del
archivo o iniciar la sesión como el usuario root.
Si quieres modificar algunos de los permisos actuales, el método simbólico probablemente
será más fácil de usar. Con este método especifícas que permisos quieres cambiar en el
archivo y los permisos de otros permanecen siendo como son.
Cuando se especifica el nuevo_permiso, comienzas por utilizar uno de los caracteres
siguientes para indicar qué conjunto de permisos quieres cambiar:
Debe especificar un + para agregar un permiso o un - para quitar un permiso. Por último,
especifica r para la lectura w para escritura y x para ejecución.
Por ejemplo, para conceder permiso de lectura al usuario propietario en un archivo
denominado abc.txt, podrías utilizar el siguiente comando:
Solamente se cambió el permiso del usuario propietario. Todos los otros permisos
permanecieron como estaban antes de la ejecución del comando chmod.
Puedes combinar los valores para realizar múltiples cambios en los permisos del archivo.
Por ejemplo, considera el siguiente comando que agregará permisos de lectura para el
usuario propietario y grupo propietario mientras quita el permiso de escritura para «otros»:
Por último, podrías utilizar el carácter = en lugar de - o + para especificar exactamente los
permisos que quieres para un conjunto de permisos:
Previous
Next
4 read (leer)
2 write (escribir)
1 execute (ejecutar)
6 rw-
5 r-x
4 r--
3 -wx
2 -w-
1 --x
0 ---
Cuando se utiliza el método numérico para cambiar los permisos, se deben especificar los
nueve permisos. Debido a esto, el método simbólico es generalmente más fácil para
cambiar unos pocos permisos, mientras que el método numérico es mejor para los
cambios más drásticos.
Por ejemplo, para establecer los permisos de un archivo llamado abc.txt a rwxr-xr-
- puedes utilizar el siguiente comando:
Previous
Next
Access: (0664/-rw-rw-r--) Uid: ( 502/sysadmin) Gid: ( 503/sysadmi
n)
Access: 2013-10-21 10:18:02.809118163 -0700
Modify: 2013-10-21 10:18:02.809118163 -0700
Change: 2013-10-21 10:18:02.809118163 -0700
Previous
Next
15.8 umask
El comando umask es una característica que se utiliza para determinar los permisos
predeterminados establecidos al crear un archivo o directorio. Los permisos
predeterminados se determinan cuando el valor de umask se resta de los permisos
máximos predeterminados permisibles. Los permisos máximos por defecto son diferentes
para los archivos y para los directorios:
archivo rw-rw-rw-
directorios rwxrwxrwx
sysadmin@localhost:~$ umask
0002
Desglose de la salida:
Ten en cuenta que los diferentes usuarios pueden tener diferentes umasks. Normalmente,
el usuario root tendrá una unmask más restrictiva que las cuentas de usuario:
root@localhost:~# umask
0022
Previous
Next
(valor predeterminado)
Umask -027
Resultado 640
La umask 027 significa que, por defecto los archivos nuevos recibirían los
permisos 640 o rw-r----- tal como se demuestra a continuación:
Debido a que los permisos predeterminados para los directorios son diferentes que para
los archivos, una umask 027 daría lugar a diferentes permisos iniciales sobre los nuevos
directorios:
(valor predeterminado)
Umask -027
Resultado 750
La umask 027 significa que, por defecto los directorios nuevos recibirían los
permisos 750 o rwxr-x----- tal como se demuestra a continuación:
sysadmin@localhost:~$ umask 027
sysadmin@localhost:~$ mkdir test-dir
sysadmin@localhost:~$ ls -ld test-dir
drwxr-x---. 1 sysadmin sysadmin 4096 Oct 28 20:25 test-dir
La nueva umask sólo se aplicará a un archivo y los directorios creados durante esa sesión.
Cuando arranque un nuevo shell, la umask por defecto será efectiva de nuevo.
Cambiar permanentemente la umask requiere la modificación del archivo .bashrc que se
encuentra en el directorio home del usuario.
Previous
Next