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 alumno 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
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