USUARIOS Y GRUPOS EN LINUX
Linux es un sistema multiusuario y permite que varios usuarios puedan acceder, incluso simultáneamente. Cada usuario podrá tener su configuración y sus archivos independientes.
Añadir un nuevo usuario
La herramienta primaria para añadir usuarios en debian es adduser: # adduser victor
adduser elegirá el siguiente uid libre (identificador de usuario), creará un directorio homellamado victor, copiará /etc/skel a /home/victor y luego pregunta por un nuevo password para victor. Esta contraseña se guardará encriptada en el archivo /etc/passwd o en shadow (dependiendo de la configuración).
Borrar un usuario
El comando userdel, eliminara un usuario de /etc/passwd. Si se quiere también borrar toda la información de su directorio personal se usara la opción -r:
# userdel -r victor
userdel no elimina la entrada en /etc/group por lo que habria que hacerlo a mano. Cambiar la contraseña de un usuario
Se utiliza el comando passwd. # passwd victor Se solicitará dos veces la contraseña para verificarla.
Acceso con privilegios de root
Además de entrar en el login del sistema como root, hay dos formas para ampliar los privilegios de un usuario y adquirir los de root. Los dos programas para hacer esto son su y sudo.
El comando su
El comando su hace que un usuario que se haya identificado con su propia cuenta pueda cambiar su uid al de root. Por supuesto debe saber el password del root.
El comando sudo
En este caso no es necesario que el usuario conozca la contraseña de root.Este programa permite que un usuario pueda ejecutar determinados comandos con privilegios de root.Estos usuarios y los comandos permitidos para él deben de estar en el fichero /etc/sudoers.Por ejemplo para que el usuario victor pueda hacer un shutdown del sistema debe haber una entrada en el fichero sudoers como:victor /sbin/shutdown -[rh] now
Grupos
Los grupos permiten asignar permisos de ficheros y directorios a muchos usuarios de una vez. A un grupo pueden pertenecer varios usuarios y un usuario puede pertenecer a varios grupos.
Un usuario tiene asignado un grupo principal o por defecto.
Añadir un nuevo grupo
Para añadir un nuevo grupo:# addgroup nuevogrupo
Eliminar un grupo
Para eliminar un grupo:# groupdel nombre_de_grupo
Asignar un usuario a un grupo
Para cambiar el grupo por defecto de un usuario:# usermod -g grupo usuario
Para añadir el usuario a otros grupos:# usermod -G lista_de_grupos
Quitar un usuario de un grupo
Para eliminar un grupo al que ya no pertenece ningún usuario:# groupdel grupo
1.- Estructura básica de permisos en archivos
Hay 3 atributos básicos para archivos simples: lectura, escritura y ejecutar.
>> Permiso de lectura (read)
Si tienes permiso de lectura de un archivo, puedes ver su contenido.
Si tienes permiso de lectura de un archivo, puedes ver su contenido.
>> Permiso de escritura (write)
Si tienes permiso de escritura de un archivo, puedes modificar el archivo. Puedes agregar, sobrescribir o borrar su contenido.
Si tienes permiso de escritura de un archivo, puedes modificar el archivo. Puedes agregar, sobrescribir o borrar su contenido.
>> Permiso de ejecución (execute)
Si el archivo tiene permiso de ejecución, entonces puedes decirle al sistema operativo que lo ejecute como si fuera un programa. Si es un programa llamado “foo” lo podremos ejecutar como cualquier comando.
O un script (interprete) que necesita permiso de lectura y ejecución, un programa compilado solo necesita ser lectura.
Si el archivo tiene permiso de ejecución, entonces puedes decirle al sistema operativo que lo ejecute como si fuera un programa. Si es un programa llamado “foo” lo podremos ejecutar como cualquier comando.
O un script (interprete) que necesita permiso de lectura y ejecución, un programa compilado solo necesita ser lectura.
Los caracteres atribuidos a los permisos son:
r quiere decir escritura y viene de Read
w quiere decir lectura y viene de Write
x quiere decir ejecución y viene de eXecute
r quiere decir escritura y viene de Read
w quiere decir lectura y viene de Write
x quiere decir ejecución y viene de eXecute
Usando chmod para cambiar los permisos
chmod (change mode) es el comando utilizado para cambiar permisos, se pueden agregar o remover permisos a uno o mas archivos con + (mas) o – (menos)
chmod (change mode) es el comando utilizado para cambiar permisos, se pueden agregar o remover permisos a uno o mas archivos con + (mas) o – (menos)
Si quieres prevenirte de modificar un archivo importante, simplemente quita el permiso de escritura en tu “archivo” con el comando chmod
$ chmod -w tuArchivo
si quieres hacer un script ejecutable, escribe
$ chmod +x tuScript
si quieres remover o agregar todos los atributos a la vez
$ chmod -rwx archivo
$ chmod +rwx archivo
también puedes usar el signo = (igual) para establecer los permisos en una combinación exacta, este comando remueve los permisos de escritura y ejecución dejando solo el de lectura
$ chmod =r archivo
Cuidado con editar los permisos de tus archivos, si los editas no olvides dejarlos como estaban originalmente
2.- Estructura básica de permisos en directorios
En el caso de los directorios tenemos los mismo permisos, pero con un significado diferente.
>> Permiso de lectura en un directorio
Si un directorio tiene permiso de lectura, puedes ver los archivos que este contiene. Puedes usar un “ls (list directory)” para ver su contenido, que tengas permiso de lectura en un directorio no quiere decir que puedas leer el contenido de sus archivos si no tienes permiso de lectura en esos.
Si un directorio tiene permiso de lectura, puedes ver los archivos que este contiene. Puedes usar un “ls (list directory)” para ver su contenido, que tengas permiso de lectura en un directorio no quiere decir que puedas leer el contenido de sus archivos si no tienes permiso de lectura en esos.
>> Permiso de escritura en un directorio.
Con el permiso de escritura puedes agregar, remover o mover archivos al directorio
Con el permiso de escritura puedes agregar, remover o mover archivos al directorio
>> Permiso de ejecución en un directorio.
Ejecución te permite usar el nombre del directorio cuando estas accediendo a archivos en ese directorio, es decir este permiso lo hace que se tome en cuenta en búsquedas realizadas por un programa, por ejemplo, un directorio sin permiso de ejecución no seria revisado por el comando find
Ejecución te permite usar el nombre del directorio cuando estas accediendo a archivos en ese directorio, es decir este permiso lo hace que se tome en cuenta en búsquedas realizadas por un programa, por ejemplo, un directorio sin permiso de ejecución no seria revisado por el comando find
3.- Usuarios, Grupos y Otros
Ahora conocemos los 3 permisos y como agregar o remover estos, pero estos 3 permisos son almacenados en 3 lugares diferentes llamados.
Usuario (u) proviene de user
Grupo (g) proviene de group
Otros (o) proviene de other
Usuario (u) proviene de user
Grupo (g) proviene de group
Otros (o) proviene de other
Cuando ejecutas
$ chmod =r archivo
Cambia los permisos en 3 lugares, cuando haces una lista de directorios con “ls -l” veras algo parecido a.
-r--r--r-- 1 wada users 4096 abr 13 19:30 archivo
nota esas 3 “r”s para los 3 diferentes tipos de permisos
donde:
x-------------x-------------x
| permisos | pertenece |
x-------------x-------------x
| rwx------ | usuario |
| ---r-x--- | grupo |
| ------r-x | otros |
x-------------x-------------x
podemos remover permisos para cada dueño; supongamos que tenemos un archivo:
-rwxr-xr-x 1 wada users 4096 abr 13 19:30 archivo
Para remover los permisos de ejecución a grupos y otros basta con usar:
$ chmod g-x,o-x archivo
nuestro archivo quedara con estos permisos
-rwxr--r-- 1 wada users 4096 abr 13 19:30 archivo
si deseas remover a usuario el permiso de escritura:
$ chmod u-x archivo
-r-xr--r-- 1 wada users 4096 abr 13 19:30 archivo
Agregando y removiendo dos permisos a la vez:
$ chmod u-x+w archivo
-rw-r--r-- 1 wada users 4096 abr 13 19:30 archivo
¿muy simple verdad? 

4.- chmod en octal
La representación octal de chmod es muy sencilla
Lectura tiene el valor de 4
Escritura tiene el valor de 2
Ejecución tiene el valor de 1
Escritura tiene el valor de 2
Ejecución tiene el valor de 1
Entonces:
x-----x-----x-----------------------------------x
| rwx | 7 | Lectura, escritura y ejecución |
| rw- | 6 | Lectura, escritura |
| r-x | 5 | Lectura y ejecución |
| r-- | 4 | Lectura |
| -wx | 3 | Escritura y ejecución |
| -w- | 2 | Escritura |
| --x | 1 | Ejecución |
| --- | 0 | Sin permisos |
x-----x-----x-----------------------------------x
Por lo tanto:
x------------------------x-----------x
|chmod u=rwx,g=rwx,o=rx | chmod 775 |
|chmod u=rwx,g=rx,o= | chmod 760 |
|chmod u=rw,g=r,o=r | chmod 644 |
|chmod u=rw,g=r,o= | chmod 640 |
|chmod u=rw,go= | chmod 600 |
|chmod u=rwx,go= | chmod 700 |
x------------------------x-----------x
Rutas relativas y absolutas
Una ruta o path es donde se localiza un fichero o archivo dentro de nuestro sistema de ficheros que es como fuera su dirección. Todos los comandos que hagamos sin especificar una ruta lo hará donde este situado, como nos informa en cmd en la línea de comando. Hay dos tipos de ruta que debemos diferenciar:
- Ruta absoluta: se indica toda la ruta del archivo incluyendo el directorio raíz. Por ejemplo, C:\carpeta1\carpeta2\archivo1.doc
- Ruta relativa: se indica la ruta a partir de donde este en ese momento situado. No se incluye el directorio raíz. Por ejemplo, si estamos en la ruta C:\carpeta1 y queremos acceder al archivo1 que esta dentro de la carpeta2, seria carpeta2\archivo1. Para ir al directorio padre, usamos dos puntos seguidos (..)
En los ejemplos citamos rutas de Windows, pero también se aplica con Linux, aunque cambiando el directorio raíz. En Linux, el directorio raíz es / y los directorios y archivos se separan con / también. No confundirse con las barras separadoras de Windows.
Trucos Consola Linux: Manejando la consola
Como es la primera entrega de esta serie, vamos a empezar con las órdenes básicas para el control de la consola. Veremos una serie de comandos básicos junto una explicación y ejemplo de cómo se usa.
- ls: Lista el contenido del directorio en el que te encuentras. Si se añade la opción -la lista algunos detalles más de los ficheros y directorios. Además, lo habitual será que los ficheros/directorios sigan un determinado código de colores, pudiendo diferenciar los diferentes tipos de ficheros/directorios por el color en que aparecen:
- Color azul: Directorios
- Color rojo: Ficheros comprimidos: zip, .tar.gz, .deb, . . .
- Color morado: Ficheros de imagen
- Color verde: Ficheros ejecutables
- cd : Cambia de directorio
- cd “nombre_directorio”: Cambia inmediatamente al directorio “nombre_directorio”, el cual deberá encontrarse directamente por debajo del actual.
- cd .. : Cambia al directorio que está inmediatamente por encima del actual
- cd: Cambia directamente al directorio personal del usuario actual (Habitualmente será/home/usuario/)
- mkdir “nombre_directorio” : Crea un directorio con el nombre “nombre_directorio”.
- cp: Copia un fichero/directorio a otro directorio
- cp “nombre_fichero” “nombre_directorio“: Copia “nombre_fichero” a“nombre_directorio”. Ambos se encuentran accesibles directamente desde el directorio actual. Si se quiere copiar un fichero a una ruta concreta se puede especificar ésta como nombre del directorio destino.
- cp -r “nombre_directorio1″ “nombre_directorio2“: La opción -r permite copiar directorios completos a otros directorios, tal y como se indica en este ejemplo.
- mv: Mueve un fichero/directorio a otro directorio. Esto significa que copia el fichero/directorio y posteriomente lo elimina de su ubicación origen. También se utiliza para renombrar ficheros/directorios
- mv “nombre_fichero” “nombre_directorio”: Mueve “nombre_fichero” al directorio“nombre_directorio”.
- mv “nombre_directorio1″ “nombre_directorio2″: Mueve “nombre_directorio1″ al directorio “nombre_directorio2″. Hay que darse cuenta que en este caso no se usa la opción -r para tratar con directorios completos
- mv “fichero_origen” “fichero_destino”: Renombra el fichero de “nombre_origen” a“nombre_destino” dentro del directorio actual.
- rm: Elimina ficheros/directorios de manera definitiva
- rm “nombre_fichero” : Elimina el fichero “nombre_fichero”. Hay que destacar que elSistema Operativo no preguntará (normalmente) antes de llevar a cabo la operación.
- rm -i “nombre_fichero” : Eliminar el fichero “nombre_fichero” previa confirmación.
- rm -rf “nombre_directorio” : Es la forma habitual de borrado de directorios completos. La opción -r permite acceder de forma recursiva a todos los ficheros/directorios que pudiera contener el directorio que se quiera borrar, y la opción -f permite realizar un borrado forzoso de cada uno de ellos, evitando que se pida confirmación antes de entrar a cada uno de los directorios
- pwd: Indica el directorio actual
En cualquier caso, conviene saber distinguir entre rutas relativas y absolutas para un correcto manejo de estos comandos sobre la consola
Se dice que una ruta es absoluta cuando se específica de forma completa y única dentro del sistema de ficheros. Por ejemplo, en Windows, la ruta C:\Mis Documentos\Fotos del viaje\Paisaje.jpg sería una ruta absoluta porque especifica un fichero concreto del disco duro de manera única sea cual sea el directorio en el que yo me encuentro
Por otro lado, la ruta Mis Documentos\Paisaje.jpg ya no es absoluta porque dependerá siempre de donde se encuentra el usuario. Unas veces será “cierta” pero otras veces no. Por ejemplo, si el usuario se encuentra en el directorio C:\ la apunta a un fichero del disco duro mientras que si se encuentra en D:\, será correcto decir que esa ruta no existe. Es, por tanto, una ruta relativa porque depende de la ubicación del usuario en el sistema de ficheros.
Después de esto, conviene tener en cuenta además, que el sistema de ficheros de los sistemas Linuxno entiende de unidades, puesto que todos los directorios del sistema parten de lo que se conoce como directorio raíz, denominado con /. Asi, todas las rutas absolutas comienzan con /. Por ejemplo, si queremos referirnos de forma absoluta a un fichero que está dentro de una carpeta de nuestra carpeta personal sería /home/astable/mis_fotos/paisaje.jpg. De forma relativa podría indicarla como mis_fotos/paisaje.jpg, que será “cierta” si yo me encuentro en /home/astable. Además, hay que tener en cuenta que la barra utilizada para indicar los directorios en Linux (/) es la contraria a la de Windows (\)
Así, si estoy en el directorio /home y quiero copiar el fichero otro_paisaje.jpg a la carpeta anterior, tengo dos opciones:
- cp otro_paisaje.jpg astable/mis_fotos: Si quiero hacerlo utilizando ruta relativa
- cp otro_paisaje.jpg /home/astable/mis_fotos: Si quiero hacerlo utilizando ruta absoluta
Si por el contrario me encontrará en la carpeta /home/astable/otras_cosas/, seguiría siendo válida la segunda forma, pero si quisiera copiarlo utilizando rutas relativas, debería cambiarla puesto que mi posición ha cambiado: cp otro_paisaje.jpg ../mis_fotos sería el comando correcto ahora, utilizando ruta relativa.
Se podría decir, que si me encuentro en una carpeta “a mitad de camino” del directorio a donde quiero copiar/mover/borrar, sería más conveniente utilizar rutas relativas puedo que hay que escribir menos. En otro caso, sólo es posible utilizar rutas absolutas.
Por ahora, podemos hacer algunas pruebas con todo esto. El lunes que viene explicaré como se distribuye el sistema de ficheros de Linux y algunos trucos más para manejarse con ficheros y directorios
0 comentarios:
Publicar un comentario