Hola a todos y bienvenidos a un nuevo artículo. En esta ocasión vamos a estar viendo un tema muy importante. La lectura, interpretación y gestión de permisos.
La lectura, interpretación y gestión de permisos es una de las partes más importantes para cualquier usuario de Linux. El conocimiento de los mismos nos va a permitir entender mejor el funcionamiento del árbol de directorios de GNU/Linux, la gestión de usuarios, etc.
Vamos a comenzar viendo la creación de nuevos usuarios:
Creación de un nuevo usuario:
Para poder crear usuarios, necesitaremos usar el comando
useradd
Con -d se le indica el directorio personal, y con -s se le indica que, en cuanto a shell, quiero que tenga una bin bash.
useradd -d /home/usuarioNuevo -s /bin/bash nuevoUsuario
Para comprobar que se ha creado correctamente podemos mirar las características del usuario en el archivo passwd. En este archivo están registradas las cuentas de usuarios, las claves de acceso y los privilegios.
usuario:+M+/WYGuZYhApg/UWuBm8rmobFpimoAv:1001:1001::/home/usuario : /bin/bash
usuario: nombre del usuario
+M+/WYGuZYhApg/UWuBm8rmobFpimoAv: contraseña de acceso
1001: UID del usuario
1001: GID del grupo principal al que pertenece el usuario
/home/usuario: Directorio de trabajo
/bin/bash: Shell del usuario
cat /etc/passwd |grep "sh$"
(el $ indica que termine por esa palabra, en este caso todo lo que termina por SH).
La salida es:
nuevoUsuario:x:1001:1001::/home/usuarioNuevo:/bin/bash
Siguiendo el esquema anterior podemos ver que la salida concuerda con todos los parámetros que habíamos especificado. El directorio personal, el tipo de shell…
Si ahora quisiéramos asignarle una contraseña al usuario:
passwd nuevoUsuario
En nuestro caso vamos a usar 1234
Para indicar que el directorio «usuarioNuevo» tenga como owner al usuario nuevoUsuario y como grupo a nuevoUsuario usamos el comando:
chown nuevoUsuario:nuevoUsuario usuarioNuevo
Y podemos comprobarlo con
ls -la
drwxr-xr-x 2 nuevoUsuario nuevoUsuario 4096 jun 16 13:09 usuarioNuevo
Si ahora queremos migrar al usuario, hacemos su e indicamos la contraseña.
Para ver los grupos a los que pertenece el nuevoUsuario usamos el comando id
La salida es:
uid=1001(nuevoUsuario) gid=1001(nuevoUsuario) grupos=1001(nuevoUsuario)
Como podemos ver el nuevoUsuario no está dentro de ningún grupo privilegiado. Al no estar dentro del grupo sudoers no tiene privilegios para ser ROOT por lo que si hacemos:
sudo su
y ponemos la contraseña. .
nuevoUsuario is not in the sudoers file. This incident will be reported.
Lectura permisos
Para leer los permisos que tiene un directorio o archivo primero tenemos que listarlo, por ejemplo, usando el comando:
ls -la
y la salida será algo así:
drwxr-xr-x 2 nuevoUsuario nuevoUsuario 4096 jun 16 13:51 usuarioNuevo
La d indica que es un directorio.
r = read
w = write
x = si es para un directorio indica que se puede acceder al directorio y si es un fichero indica que se puede ejecutar
Para poder leer los permisos hay dividirlo en bloques de tres.
El primer bloque hace referencia al propietario. En este caso podemos ver como el propietario tiene capacidad de lectura (r), de alterar y de crear archivos (w) y también puede atravesar el directorio (x).
Con el segundo bloque ocurre lo mismo, pero hace referencia al grupo. Como tiene (r-x) significa que los usuarios del grupo tienen capacidad de lectura(r), no tienen capacidad de alterar y crear archivos (-) y sí pueden atravesar el directorio (x).
El tercer y último bloque hace referencia a «otros«. Cualquier otro usuario a nivel de sistema a excepción de root. La lectura de permisos es la misma que para los grupos.
Si, por ejemplo, yo fuese el usuario DiegoAltF4 (no propietario), podría hacer un ls de lo que hay en el directorio, es decir, podría leer los archivos y también podría acceder al directorio (cd), pero no podría crear contenido en la carpeta (no tiene permiso w).
Vamos a poner un ejemplo para que quede más claro.
Iniciamos sesión como nuevoUsario y en el directorio home creamos una carpeta:
mkdir carpeta
Si miramos los permisos de la carpeta veremos que son:
drwxr-xr-x 2 nuevoUsuario nuevoUsuario 4096 jun 16 14:05 carpeta
Como el último bloque es un
r-x
significa que «otros» solo podrán leer y entrar al directorio, pero no podrán crear ningún archivo.
Vamos a comprobarlo.
Accedemos a la ruta:
/home/usuarioNuevo/carpeta
e intentamos hacer un:
touch nuevoArchivo
Nos sale el siguiente mensaje: «touch: no se puede efectuar `touch’ sobre ‘nuevoArchivo’: Permiso denegado» y, efectivamente, se cumple lo que habíamos visto al principio
Si quisiéramos modificar estos permisos podríamos acceder como root haciendo un:
sudo su
desde el usuario DiegoAltF4, que sí que se encuentra dentro del grupo sudoers. Con el comando chmod podemos modificar los permisos. Ejemplo: si queremos añadir el permiso de escritura para otros, podemos hacer:
chmod o+w carpeta
y con:
ls -la
vemos como ahora tienen
drwxr-xrwx 2 nuevoUsuario nuevoUsuario 4096 jun 16 14:05 carpeta
Para quitar los permisos es igual, cambiando el + por un –
chmod o-w carpeta
Vamos a poner otro ejemplo:
Vamos a acceder a la carpeta:
cd carpeta
Creamos un archivo de texto y escribimos algo:
nano archivo
si hacemos un:
ls -la
podemos ver los permisos que tiene ese nuevo archivo:
-rw-r--r-- 1 nuevoUsuario nuevoUsuario 62 jun 16 14:05 archivo
Vemos que para «otros» solo está permitida la lectura por lo que si nos registramos como DiegoAltF4 y accedemos a la ruta:
/home/usuarioNuevo/carpeta
solo podremos leer el archivo, no podremos cambiarlo
┌──(diegoaltf4㉿voldemort)-[/home/usuarioNuevo/carpeta] └─$ cat archivo HOLA QUE TAL, SI LEES ESTO ES QUE TIENES PERMISOS DE LECTURA
pero si intentamos modificarlo, por ejemplo, con nano, nos advierte de que es solo de lectura.
[ El fichero «archivo» no es de escritura ]
Asignación de permisos de forma decimal
La asignación de permisos también puede hacerse de forma decimal. Es decir, hay una conversión de las letras que hemos estado viendo hasta ahora, a decimal.
Si, por ejemplo, un archivo tiene los siguientes permisos
rwx r-- r-x
Para hacer la conversión, donde tenemos un – equivale un 0. En caso contrario, si tenemos un carácter es un 1.
En el ejemplo anterior el resultado sería:
111 100 101
y ahora solo falta pasarlo a decimal:
7 4 5
para comprobarlo hacemos:
chmod 745 archivo
y vemos los permisos con:
ls -la
drwxr--r-x 2 nuevoUsuario nuevoUsuario 4096 jun 16 14:05 carpeta
El resultado es exactamente el que habíamos calculado:
Por tanto, podemos modificar los permisos en Linux de las dos maneras.
Espero que hayáis entendido el artículo. Que la lectura, interpretación y gestión de permisos en Linux no sea un problema para vosotros y, sobre todo, que os haya gustado.
Que la Fuerza os acompañe
DiegoAltF4
Otros artículos de interés:
Inicio
Deja una respuesta