Permisos en GNU/Linux#
El sistema de permisos en Linux se basa en un esquema de usuarios/grupos. A estos usuarios y grupos se les asignan distintos derechos sobre los archivos y directorios. Todos los archivos y directorios en Linux tienen permisos que verifican quien puede hacer o no alguna acción con él. Copia en tu cuaderno el siguiente esquema de permisos:
Existen tres tipos diferentes de permisos:
r: read (lectura)
w: write (escritura)
x: execute (ejecución)
Existen tres tipos diferentes de identidades:
u: usuario propietarios del archivo
g: grupo al que pertenece
o: otros usuarios
a: todos los usuarios
$ ls -la fecha.sh
- rw- rw- r-- 1 alumno GA 5 ene 4 19:02 fecha.sh
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
1 2 3 4 5 6 7 8 9 10
1 : Tipo de archivo = - es un archivo regular [d = directorio; l = enlace simbólico; ...]
2 : Permisos = los permisos para el propietario son de lectura y escritura
3 : Permisos = el grupo tiene permiso de sólo lectura
4 : Permisos = los otros usuarios tienen el permiso de sólo lectura
5 : Enlace Físico = tiene un enlace físico
6 : Propietario = el usuario alumno es el propietario de este archivo
7 : Grupo = este archivo pertenece al grupo alumno
8 : Tamaño = su tamaño es de 246417 bytes
9 : Fecha = fecha en el que fue creado
10 : Nombre = el archivo se llama fecha.sh
chmod cambia los permisos de lectura, escritura y ejecución del archivo o directorio
chmod a+x fecha.dat # damos permisos de ejecución a todos chmod u+rw fecha.dat # damos permisos de lectura y escritura a usuarios propietario chmod o-r fecha.dat # quitamos permisos de lectura a otros usuarios chmod o+w fecha.dat # damos permisos de escritura a los usuarios del grupo chmod -R a+rwx carpeta # -R cambiar los permisos de forma recursiva
Notación binaria
Octal Binario Permisos efectivos 0 0 0 0 - - - 1 0 0 1 - - x 2 0 1 0 - w - 3 0 1 1 - w x 4 1 0 0 r - - 5 1 0 1 r - x 6 1 1 0 r w - 7 1 1 1 r w x r : read = 4 = 100 w : write = 2 = 010 x : execute = 1 = 001 rwx = 100 + 010 + 001 = 111 = 4+2+1 = 7 r-x = 100 + 001 = 101 = 4+1 = 5 chmod a+rwx = chmod 777 chmod a-rwx = chmod 000 chmod a+rw = chmod 666 rwxr-x--- (750) r–x r--r-- (544)
chown cambia el propietario y el grupo del archivo o directorio
chown alumno2:GB foto.jpg
chgrp cambia el grupo del archivo o directorio
chgrp smr2 foto.jpg
umask cambia el valor por defecto de los permisos que se definen para un nuevo archivo.
Permisos especiales (setuid, setgid, sticky bit)#
setuid permite que un fichero ejecutable se ejecute con los permisos del propietario del fichero
$ chmod u+s /bin/su $ ls -l /bin/su -rwsr-xr-x 1 root root 40128 mar 29 11:25 /bin/su $ ls -la /usr/bin/passwd -rwsr-xr-x 1 root root 54256 mar 29 11:25 /usr/bin/passwd
Puedes ver el vídeo
setgid permite que un fichero ejecutable se ejecute con los permisos del grupo al que pertenece el fichero, por ejemplo asignamos el bit setgid la carpeta /compartido, le asignamos permisos totales para el propietario y el grupo (770) y el bit segid (2):
$ ls -la drwxrwx--- 6 usuario1 GA 4096 sep 18 09:37 carpetaGA $ chmod g+s carpetaGA/ drwxrws--- 2 usuario1 GA 4096 sep 18 09:46 carpetaGA $ su $ cd carpetaGA/ $ touch test $ ls -la -rw-r--r-- 1 root GA 0 sep 18 09:47 test $ whoami root
sticky permite que cualquier usuario pueda modificar un archivo o directorio, pero solo su propietario pueda borrarlo, este bit se asigna siempre en /tmp y /var/tmp
/tmp tiene permisos 777, el bit sticky se asignaría del siguiente modo:
chmod 1777 /tmp #otra forma: chmod o+t /tmp #Si hacemos un ls veremos la “t” asignada: $ls -la / | grep tmp drwxrwxrwt 13 root root 4096 2011-04-24 20:55 tmp
Puedes ver el vídeo