tema 3 manejo suarios y permisos

Upload: fabianhurtado

Post on 06-Jul-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    1/36

     

    1

    MANEJO Ernesto Pérez (autor textos 2005-2008)

    DE USUARIOS

    Y PERMISOS

    Ricardo Ortega (redacción de textos y

    diseño gráfico 2010)

    http://aula.virtualepn.edu.ec

    [email protected]

    mailto:[email protected]:[email protected]

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    2/36

     

    2

    Capacitación en Modalidad Virtual

     Administración Linux I, Manejo de Usuarios y Permisos

    Ricardo Ortega

    Levantamiento de texto 2008: Ernesto PérezRedacción de textos 2010: Ricardo Ortega

    Registro de derecho autoral: en trámiteISBN de este volumen: en trámiteDepósito Legal: en trámite

    Publicado en http://aula.virtualepn.edu.ec desde Abril 2008

    CENTRO DE EDUCACIÓN CONTINUAESCUELA POLITÉCNICA NACIONALDIRECCIÓN DE CAPACITACIÓN Y CONSULTORÍACAPACITACIÓN EN MODALIDAD VIRTUAL

    Quito –Ecuador  

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    3/36

     

    3

     ADMINISTRACIÓN DE LINUX I

    Manejo de usuarios y permisos

    Material para la modalidad virtual

    Master Ricardo B. Ortega O.

    www.ricardoortega.com 

    Objetivos del capítulo 3 

    Crear, borrar y administrar usuarios en LinuxDar permisos de escritura lectura o ejecución a directorios y archivos

     Activar cuotasUtilizar el su y el sudo

    Prerrequisitos para el capítulo 3

    Tener instalado y funcionando un computador con Linux CENTOS.Conocer los comandos básicos de LinuxConocer el uso de un editor de texto

    Recursos necesarios para el capítulo 3

    Un computador con Linux CENTOS instalado y funcionando.

    La administración de usuarios se debe hacer desde el usuario root.

    Recomendaciones para el capítulo 3

    LINUX CENTOS De aquí en adelante, nos limitaremos a explicar el funcionamiento de CENTOS. Laspruebas en otras distribuciones quedan a su propia cuenta y riesgo.

    MODO TEXTO a menos que se indique otra cosa, todos los comandos se deben escribir desde una

    sesión de bash desde el usuario root. Si se dice escriba system-config-users se está diciendoprecisamente eso: desde el bash, escriba ese texto y presione ENTER.

    CLAVES FÁCILES DE RECORDAR PERO DIFÍCILES DE ADIVINAR: Para la creación de usuariosnecesitará asignarles claves fáciles para recordar, pero que no sean fácilmente adivinables por terceraspersonas.

    LEA LOS MENSAJES: Observe los mensajes que le aparecen. No pase por alto los mensajes de error.La mayoría de usuarios no lee los mensajes y cuando se le pregunta “qué decía el mensaje” la

    respuesta es “no sé, nunca leo los mensajes”. Por supuesto que esa actitud no es propia de aspirantes

    a administradores de redes.

    Contenidos

    http://www.ricardoortega.com/http://www.ricardoortega.com/http://www.ricardoortega.com/

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    4/36

     

    4

    OBJETIVOS DEL CAPÍTULO 3 ............................................................ ................................................................. ....... 3 

    PRERREQUISITOS PARA EL CAPÍTULO 3 ............................................... .............................................................. 3 

    RECURSOS NECESARIOS PARA EL CAPÍTULO 3 ........................................................ ........................................ 3 

    RECOMENDACIONES PARA EL CAPÍTULO 3 ................................................................................................ ....... 3 

    CONTENIDOS ................................................................................................................................................................. 3 

    3.1 USUARIOS Y GRUPOS .............................................................................. .............................................................. 4 

    3.1.1 Términos generales ......................................................... ................................................................. .................. 4 3.1.2 Creación de usuarios ................................................................................................. ........................................ 8 3.1.3 Proceso interno para crear un usuario............................................................................................................ 12 3.1.4 Cómo cambiar el shell predeterminado .......................................................... ................................................. 13 3.1.5 Consolas múltiples ................................................................................................................ ........................... 13 

    3.2 ADMINISTRACIÓN DE PERMISOS .................................................................. ................................................. 13 

    3.2.1 Interpretando los permisos .............................................................................................................................. 13 3.3.2 Los permisos en forma numérica .......................................................... ........................................................... 18 

    3.3.2 Cambio de usuario propietario (owner) .................................................................................................. ........ 19 Cambio de grupo propietario ................................................................................................................................... 20 Cambio de permisos ................................................................................................................................................. 21 Cambiar permisos a los directorios: ........................................................................................................................ 23 

    3.3 SUBSTITUIR USUARIO ........................................................ ................................................................. ................ 25 

    3.3.1 su ................................................................ ................................................................ ...................................... 25 3.3.2 su - ................................................................................................................................................................... 27  

    3.4 DELEGACIÓN DE PRIVILEGIOS DE SUPERUSUARIO ................................................................ ................ 29 

    3.4.1 Alternativas para delegar funciones de administración .......................................................................... ........ 29 3.4.2 El mecanismo sudo .......................................................................................................................................... 29 

    3.5 LIMITANDO EL ESPACIO (CUOTAS) DE DISCO ................................................................................... ........ 32 

    3.5.1 Manejo de quotas ............................................................ ................................................................. ................ 32 3.5.2 Activando las cuotas ........................................................................................................................................ 34 3.5.3 ¿Cómo hacemos para editar las cuotas? ........................................................ ................................................. 35 

    3.1 Usuarios y Grupos

    3.1.1 Términos generales

    ¿Qué es un usuario de Linux?

    Es la combinación de usuario, contraseña, carpeta de inicio, permisos y recursos que se asignan parautilizar un computador, de tal manera que este usuario se conserve independiente y separado de otros.

    Por ejemplo puedo crear usuarios llamados ricardo, juan, mariana, Ricardo.Ortega, etc. Recuerde que enLinux es distinto escribir Ricardo que ricardo o RICARDO, son tres usuarios distintos, así que mejor eviteeste tipo de nombres y adopte una única nomenclatura: o todo minúsculas, o sepárelos por puntos. No sepermiten espacios en blanco en los nombres de los usuarios.

    Qué es un grupo?

    Es un conjunto de usuarios a los cuales se les asigna permisos similares. Por ejemplo puedo tener un grupollamado estudiantes a los cuales les doy globalmente permisos sobre ciertos archivos o directorios y bastaagregar a un nuevo usuario al grupo respectivo y listo, no necesito volver a definir sus permisos.

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    5/36

     

    5

    Dónde se almacenan los nombres de usuarios y sus permisos?

    Esta pregunta es fácil de responder y muy interesante. Demuestra la filosofía de Linux. La información seguarda en archivos planos en la capeta /etc bajo los siguientes nombres:

    passwd

    group

    shadow

     Aunque no lo parezca, el sistema es bastante potente y al mismo tiempo sencillo de recordar y administrar.Si desea mirar los nombres de usuario creados, solo tiene que mirar el archivo /etc/passwd. Si desea mirarlos grupos, solo tiene que abrir el archivo /etc/group. El archivo /etc/shadow guarda las contraseñas que porsupuesto están cifradas para evitar que sean conocidas por terceros.

    ARCHIVO DESCRIPCI Npasswd El archivo /etc/passwd guarda la lista de usuarios junto con características como uso de

    contraseña, UID (User ID), nombre completo, directorio inicial y shell inicial.

    group El archivo /etc/group guarda la lista de grupos y su respectivo GID (Group ID) o

    identificador de grupo.

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    6/36

     

    6

    shadow El archivo /etc/shadow guarda la lista de cada usuario con la información de sus

    contraseñas (tiempo de caducidad, contraseña cifrada, etc.)

    Los tres archivos deben estar sincronizados, por lo cual es importante que el administrador los conozca y sepreocupe de sacar respaldos periódicos. Total son solo tres archivos relativamente pequeños.

    Un administrador cauteloso podrá borrar los usuarios y grupos que no planea utilizar. Pero esto lo deberáhacer luego de concluir el ciclo de cursos, para saber cuáles usuarios y grupos son los que realmente nonecesita. Si hoy borra un usuario importante, digamos proxy o sshd, simplemente NO podrá utilizar esasfacilidades. Si no planea usar la impresora, borre el usuario lp de los tres archivos.

     Adicionalmente, cada usuario tiene asignado un directorio inicial donde podrá colocar sus datos. Cadausuario solo tiene permisos para su respectivo directorio.

     Análisis detallado de estos archivos:

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    7/36

     

    7

    En Linux los usuarios se almacenan en el archivo /etc/passwd, donde no se almacenan las claves, aunquepor su nombre lo parezca (anteriormente sí se guardaban allí las claves, pero luego se pasaron al archivoshadow que significa sombra, con lo cual se dio mayor seguridad a Linux).

    La información que se guarda en /etc/passwd (para cada usuario, esto es, en cada línea) es la siguiente:

    username

    passwd (ya no se usa, por lo que aparece una x cuando el usuario tiene una clave en el archivo shadow, oestá en blanco si el usuario no tiene contraseña). Ojo, esta x es importante, porque basta quitar la x paradesactivar la clave del usuario.

    UID, o identificador de usuario. Es un número entre 1 y 65535, típicamente es único para cada usuario delsistema. El UID 0 se utiliza para el usuario administrador (root). Cualquier usuario que tenga UID 0 tendráderechos de root. Los UID de 1 a 499 son utilizados por el sistema para usuarios creados automáticamenteal instalarse paquetes. Del UID 500 en adelante se crean los usuarios propios de nuestro sistema. Estaasignación de UID es automática y siempre se toma el número más alto y va ascendiendo. Esto provocarávacíos y números no asignados.

    GID, o grupo primario de usuario. Típicamente un número entre 0 y 65535. El GID 0 indica que el usuariopertenece al grupo root (un grupo con privilegios)

    nombre del usuario (campo informativo)

    directorio base (home dir)

    shell que se ejecutará

    La información que se guarda en /etc/shadow (para cada usuario, esto es, en cada línea) es la siguiente:

    username

    clave encriptada

    día en que la clave fue cambiada por ultima vez

    días durante los cuales la clave no puede ser cambiada

    días a partir de los cuales la clave tiene que ser cambiada

    días de advertencia en los cuales la clave debe cambiarse

    días después de los cuales la clave expira y se deshabilita la cuenta

    día en que se deshabilitó la clave

    El archivo /etc/group es bastante sencillo, ya que solamente contiene el nombre del grupo y el GID(identificador de grupo).

    Es muy importante resaltar que los permisos y todo el funcionamiento de Linux NO se basa en el nombredel usuario o del grupo sino en su ID (UID y GID). Supongamos que se crea el usuario ricardo con el UID500 y luego de un tiempo lo borra y crea otro usuario juan. Es posible que el sistema le asigne el número

    500, o el administrador puede asignar el 500 manualmente (modificando los archivos indicados: shadow,group y passwd). Resultará que el nuevo usuario tendrá acceso a los archivos y carpetas que anteriormentetenía ricardo, por la sencilla razón de que ambos usuarios tienen el mismo UID que es 500.

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    8/36

     

    8

    Para evitar esto, el sistema no reutiliza los números anteriores y siempre toma el mayor y lo incrementa,pero ya dijimos que el administrador puede cambiar manualmente y puede provocar estos inconvenientes obeneficios (ya que puede ser que eso es precisamente lo que desea lograr, es decir que los archivos dericardo sean accedidos por juan).

    Esto nos lleva a la lógica conclusión de que si un usuario distinto de root tiene su UID o su GID en 0, tendráprivilegios similares a root. Esto puede ser beneficioso si el administrador lo aprovecha, pero puede ser

    perjudicial si lo aprovechan terceros. Deberá revisar periódicamente los archivos passwd, shadow y grouppara saber si alguien modificó los UID o GID y se tomó privilegios de administrador (puso 0 en la columna).

    Otra columna que debe vigilar es la segunda columna de /etc/passwd que generalmente tiene una x. Lafalta de una x significa que ese usuario tiene deshabilitada la clave. De hecho, una forma fácil de desactivarla clave de root cuando no la conocemos es quitar la letra x, o sea dejar root::etc. en vez de root:x:.. etc. Deesta forma, podemos ingresar como root sin que pida la clave.

    Linux es seguro, pero debe estar alerta frente a terceros que conozcan cómo vulnerar estas seguridades.No le estamos enseñando cómo hackear un servidor linux sino cómo evitar que su servidor sea hacheado.Es decir estamos formando administradores competentes.

    3.1.2 Creación de usuarios

    Existen varias formas de crear usuarios en Linux, el resultado es el mismo: la información se almacena enlos tres archivos ya indicados al inicio de este capítulo.

    Modo texto

    Comando adduser o useradd

    El mensaje BAD PASSWORD apareció porque para el password se utilizaron solamente letras, lo quesignifica que un ataque basado en diccionario o en fuerza bruta quebrará ese password en menos de lo quecanta un gallo. Hay que usar claves más complejas, pero fáciles de recordar.

    Modo web

    Para administrar usuarios en ambiente web se puede usar el programa webmin que se verá en el módulo 4.

    Modo gráfico

    No tenemos inconveniente en que use el modo gráfico para su aprendizaje, es más, lo recomendamos, pero

    para ejercer sus actividades de administrador, le recomendamos que utilice exclusivamente el modo texto.En modo gráfico escriba (en el bash, por supuesto) system-config-users y le aparecerá esto:

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    9/36

     

    9

     Aquí podrá apreciar las diferentes columnas del archivo /etc/passwd.

    Puede mostrar todos los usuarios si elije Editar -> Preferencias y quita la marca en Ocultar Usuarios yGrupos del sistema.

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    10/36

     

    10

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    11/36

     

    11

    Usando los botones superiores se puede añadir un usuario o un grupo. La información es la indicada.Normalmente el shell de conexión es el bash, aunque algunos podrían preferir otro. Normalmente se dejaque el sistema cree el directorio principal automáticamente (en este caso /home/juan), se creará un grupoprivado llamado juan (en /etc/group) y se asignará el siguiente UID a menos que elija Especificar IDmanualmente y escriba un UID no existente.

    Para crear el grupo solo debe indicar el nombre del grupo y el sistema le asignará el siguiente GID

    disponible, a menos que Ud. especifique el ID de grupo manualmente.

    En Propiedades Ud. puede modificar varias características del usuario (en este caso de juan), por ejemplolos grupos a los que pertenece o la información de caducidad de la cuenta.

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    12/36

     

    12

     Ahora el usuario juan pertenece a los grupos juan (privado) y estudiantes.

    Recuerde que todo esto va a parar a los archivos ya indicados, así que una buena manera de aprender elsignificado de esos archivos es usar el modo gráfico y luego mirarlos.

    El archivo /etc/group luego de crear desde el modo gráfico el usuario juan

    El archivo /etc/passwd

    Y el archivo /etc/shadow

    El significado de estas columnas ya fue explicado, pero le quedará más claro si utiliza el programa en modográfico y mira el resultado en los archivos indicados.

    Borrar usuarios

    Para borrar usuarios en modo texto se usa el comando userdel seguido del nombre de usuario.

    Este comando no borra la carpeta /home/ricardo, a menos que escriba userdel  –r seguido del nombre deusuario, con lo cual borará no solo los archivos dentro de home sino los correos en /var/spool/mail

    3.1.3 Proceso interno para crear un usuario

    El proceso completo para la creación de un usuario es el siguiente:

    1. Se lee /etc/defaults/useradd donde se encuentra la información sobre el shell por defecto a asignar a losusuarios nuevos (/bin/bash). Nosotros podemos ver /etc/defaults/useradd con el comando cat, paraenterarnos de qué dice.

    2. Se crea un nuevo grupo en /etc/group, con el nombre del usuario que se está creando; este GID será el

    que se asignará en /etc/passwd.

    3. Se agrega una línea en /etc/passwd, donde se almacenará el identificador de usuario (UID), el grupoprimario del usuario (GID), el directorio raíz, el shell que se ejecutará para el usuario.

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    13/36

     

    13

    4. Luego se crea una línea en /etc/shadow donde se indicará el username y la clave en formatodeshabilitado (!!), así como opcionalmente los tiempos de expiración de las claves, etc.

    5. A continuación se sigue con el directorio raíz del usuario (usualmente /home/username).

    6. Posteriormente se debe proceder a cambiar la clave del usuario por una válida, y se actualiza/etc/shadow con la nueva clave.

    3.1.4 Cómo cambiar el shell predeterminado

    La mayoría de los usuarios que se crean en un sistema Linux se usan solo como servidor de mensajería, esdecir que los usuarios no acceden directamente al shell del sistema, sino que usan sus contraseñas paraleer los correos y/o enviarlos, así como para potencialmente hacer otras tareas como acceder via ftp.

    Entre los usuarios que se tendrá (nivel gerencial, secretarias, ingenieros de otras áreas, etc.) casi nadieconoce el uso del shell, por lo tanto no es necesario que lo tengan. De esta forma hay un potencial ahorrode problemas a la hora de un ataque, pues muchos hacen lo que se conoce como un ataque de diccionario,mediante el cual intentan adivinar las claves de los usuarios de un sistema para poder entrar por esa vía.Una vez dentro intentarán otros métodos (que se explicarán en cursos más avanzados) mediante los cuales

    pueden obtener privilegios de root.

    Por lo tanto, para leer correos y usar ftp no es necesario que un usuario tenga asignado un shell como bash,pues ello más bien sería un potencial problema. Por eso es recomendable que siempre que se cree estetipo de usuarios se haga con un shell no válido o un shell que no deje entrar al usuario. Por ejemplo, sepuede cambiar, usando vi /bin/bash por /bin/false

     Ahora, cambiar en /etc/passwd unos 10 usuarios es algo posible, a diferencia de hacerlo con unos 50 ó 100.Es mejor crear todos los usuarios con un shell que no sea /bin/bash.

    Esto se puede lograr editando /etc/defaults/useradd. Se debe cambiar la línea que dice:

    SHELL=/bin/bashpor

    SHELL=/bin/false

    De esta forma cualquier usuario que se cree a partir de ahora será creado con el shell /bin/false, a menosque se indique otra cosa.

    Para verificarlo, se creará un usuario nuevo con el nombre eperez, hay que poner atención en que, una vezcreado el usuario eperez sea /bin/false su shell por defecto en /etc/passwd (verificar con cat /etc/passwd).

    3.1.5 Consolas múltiples

    Si el usuario tiene asignado el shell /bin/bash o algún otro distinto de /bin/false, puede entrar a nuestrosistema, por ejemplo desde la primera consola de texto (presionar CTRL ALT F1). Si quieres regresar alambiente gráfico puedes apretar CTRL-ALT-F7

    3.2 Administración de Permisos

    3.2.1 Interpretando los permisos

    En el capítulo anterior, al ejecutar el comando ls -l (listado extendido), se vio que las primeras columnas deese listado tenían algo así:

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    14/36

     

    14

    -rw-rw-r-- 1 eperez eperez 2748 Feb 22 19:01 nuestroserver.png

    drwxr-xr-x 3 eperez eperez 4096 Mar 4 14:15 Desktop

     Al leer esto con atención se podrían deducir algunos datos (se ha marcado en colores cada caso):

    1. nombre del archivo2. hora

    3. día y mes

    4. tamaño (en bytes)

    Pero las otras columnas ¿qué significan?, ¿por qué en el ejemplo aparece eperez eperez?

    Los nombres que aparecen son el usuario y el grupo de propietarios del archivo o directorio,respectivamente.

    Por ejemplo ll /home

    Se puede deducir que el dueño del directorio ricardo es el usuario ricardo, y el grupo ricardo. Igual ocurrecon el directorio juan.

    Esto impide que ricardo pueda alterar información de juan.

    Por omisión, en Linux cada usuario tiene su propio grupo, es por eso que cada archivo o directorio tiene unusuario y grupo con el mismo nombre.

     Ahora, los primeros diez caracteres (en amarillo en la tabla anterior) son los tipos de archivos y permisos:

    •  El primer caracter puede ser una - , que significa que es un archivo, o una d si fuera

    un directorio, también puede ser una l, que indicaría que es un link (enlace directo).•  Los siguientes nueve caracteres se dividen en 3 grupos de tres e indican

    o Los tres primeros: permisos para el usuario dueño (user).

    o El segundo grupo de tres: permisos para el grupo dueño(group).

    o El tercer grupo de tres: permisos para los otros (other).

    Por ejemplo:

    -rw-rw-r-- 1 eperez eperez 177341 Feb 22 20:17 bienvenidos

    drwxrwxr-x 2 eperez eperez 4096 Mar 6 08:04 bin

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    15/36

     

    15

    • En el primer caso, el archivo se llama bienvenidos y tiene 177341kb de tamaño, el usuario dueño es

    eperez, el grupo dueño es: eperez

    o Los permisos para el usuario dueño son rw-

    o Los permisos para el grupo dueño son: rw-

    o Los permisos para los demás (otros) usuarios son: r--

    •  En el segundo caso, el directorio se llama bin, y tiene 4k de tamaño, el

    usuario dueño es: eperez, el grupo dueño es: eperez.

    o Es un directorio porque el primer caracter es una d.

    o Los permisos para el usuario dueño son rwx.

    o Los permisos para el grupo dueño son: rwx.

    o Los permisos para los demás (otros) usuarios son: r-x.

    Pero ¿qué significan esas letras?

    •  r: permiso de lectura.

    •  w: permiso de escritura.

    •  x: permiso de ejecución (si es un directorio, el permiso indica que se puede entrar al

    directorio).

    La inexistencia de uno de los permisos (leer, escribir o ejectuar) se representa con un  –  (guión o signomenos). Esto dará siempre como resultado nueve caracteres para los permisos, dando un total de 10 si juntamos el primer carácter que indica el tipo de archivo.

     Ahora el alumno deberá reconocer, con esta notación, qué tipo de permisos habría en los siguientesejemplos:

    1. rwxrwxr--

    2. rwxrw-r--

    3. rw-r-----

    1.  El usuario dueño y el grupo tienen todos los permisos, los otros solo pueden

    leer.

    2. El usuario dueño tiene todos los permisos, el grupo puede leer y escribir, mas noejecutar, y los otros solo pueden leer.

    3. El dueño puede leer y escribir, el grupo sólo puede leer y los otros no pueden hacer

    nada.

    Como se ve, aquellas letras que parecían tan complicadas solamente explican qué tipo de permisos tienenlos archivos en cuestión.

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    16/36

     

    16

    Además de los permisos que se han explicado hay más, hay tres tipos más que todos los

    administradores deberían conocer. Son los permisos setuid, setgid y sticky.

    Estos permisos juegan un papel clave en ciertas operaciones UNIX puesto que facilitan

    funcionalidades que no se suelen permitir a los usuarios normales. Para comprenderlas totalmente

    hay que comprender la diferencia entre el ID real del usuario y el ID efectivo.

    El ID del usuario real es el UID que arranca (y el propietario) del proceso. El UID efectivo es el ID bajo el que se ejecuta el proceso. Veamos un ejemplo; el programa  passwd(1) se ejecuta con el ID

    real del usuario puesto que el usuario está cambiando su contraseña. Pero para poder manipular la

     base de datos de contraseñas debe ejecutarse con el ID efectivo del usuario root. De este modo es

     posible que los usuarios cambien su contraseña sin llegar a ver un error de “Permission Denied”(permiso denegado).

    Nota: La opción nosuid de mount(8) hace que estos binarios den errores silenciosos, es decir,fallarán pero el usuario no recibirá ningún mensaje de error por ello. Esta opción no funciona

    siempre, pues, según la página man de mount(8), un «wrapper» nosuid puede sortear esta

    limitación.

    El permiso setuid puede asignarse colocando un número cuatro (4) antes de los permisos. Se ve

    mejor con un ejemplo:

    # chmod 4755 ejemplosuid.sh

    Los permisos de ejemplosuid.sh deberían ser así:

    -rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 ejemplosuid.sh

    Fíjese atentamente en la s que ha aparecido en los permisos del fichero, en la parte de los permisosdel propietario; esa s está en donde estaría el bit de ejecución. Gracias a esto el funcionamiento de

    aplicaciones que necesitan permisos elevados, como passwd, pueden funcionar.

    http://www.freebsd.org/cgi/man.cgi?query=passwd&sektion=1http://www.freebsd.org/cgi/man.cgi?query=passwd&sektion=1http://www.freebsd.org/cgi/man.cgi?query=passwd&sektion=1http://www.freebsd.org/cgi/man.cgi?query=mount&sektion=8http://www.freebsd.org/cgi/man.cgi?query=mount&sektion=8http://www.freebsd.org/cgi/man.cgi?query=mount&sektion=8http://www.freebsd.org/cgi/man.cgi?query=mount&sektion=8http://www.freebsd.org/cgi/man.cgi?query=mount&sektion=8http://www.freebsd.org/cgi/man.cgi?query=mount&sektion=8http://www.freebsd.org/cgi/man.cgi?query=mount&sektion=8http://www.freebsd.org/cgi/man.cgi?query=mount&sektion=8http://www.freebsd.org/cgi/man.cgi?query=passwd&sektion=1

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    17/36

     

    17

    Si quiere ver un ejemplo con sus propios ojos abra dos terminales. En una arranque un proceso

    (ejecute) passwd con un usuario normal. Mientras la aplicación espera a que le de una nueva

    contraseña busque la información de usuario del proceso passwd en la tabla de procesos.

    En la terminal A:

    Changing local password for trhodes

    Old Password:

    En la terminal B:

    # ps aux | grep passwd

    trhodes 5232 0.0 0.2 3420 1608 0 R+ 2:10AM 0:00.00 grep passwd

    root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd

    Tal y como se ha dicho, un usuario normal puede ejecutar passwd, pero en realidad está utilizando

    el UID efectivo de root.

    El permiso setgid actúa del mismo modo que el setuid, pero afecta a los permisos del grupo.

    Cuando una aplicación funciona con esta configuración lo hace con los permisos del grupo al que

     pertenece el fichero, no los del usuario que ha arrancado el proceso.

    Si quiere utilizar el permiso setgid debe situar un núnmero dos (2) al principio de los permisos que

    vaya a asignar mediante chmod.

    # chmod 2755 ejemplosuid.sh

    La nueva configuración tiene un aspecto muy similar a la que tenía antes, pero observe que la s de

    antes está ahora en el campo de los permisos de grupo:

    -rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 ejemplosuid.sh

    Nota: En ambos ejemplos, incluso si el «script» en cuestión es ejecutable, no se va a ejecutar conun EUID distinto o un ID efectivo de usuario porque los «scripts» de shell no pueden acceder a la

    llama del sistema setuid(2). 

    Los dos permisos que acabamos de mostrar los bits de permisos (setuid y setgid) pueden reducir

    el nivel de seguridad haciendo que se escalen los permisos. Pero hay un tercer bit especial de permisos que puede ser de mucha ayuda para reforzar la seguridad del sistema: el sticky bit.

    El sticky bit( que podríamos traducir como «bit pegajoso») aplicado a un directorio hace que

    solamente el propietario de un fichero pueda borrarlo. Esto evita el borrado de ficheros ajenos en

    directorios públicos como /tmp. Si quiere usarlo coloque un uno (1) antes de los permisos. Veamosun ejemplo:

    # chmod 1777 /tmp

    Para ver el ;sticky bit en acción usamos ls:

    # ls -al / | grep tmp

    drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp

    http://www.freebsd.org/cgi/man.cgi?query=setuid&sektion=2http://www.freebsd.org/cgi/man.cgi?query=setuid&sektion=2http://www.freebsd.org/cgi/man.cgi?query=setuid&sektion=2http://www.freebsd.org/cgi/man.cgi?query=setuid&sektion=2

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    18/36

     

    18

    El sticky bit es la letra t al final de los permisos.

    Las nuevas versiones de Linux tienen 11 caracteres. El significado de los atributos de los archivos en laúltima columna (columna 11)

    Tabla 4.1: Atributos de los archivos en extXfs 

    Atributo Significado

    A Don´t update Atime

    S Synchronous updates

    a A ppend only

    c Compressed file

    i Immutable file

    d No Dump

    s Secure deletion

    u Undeletable file

    3.3.2 Los permisos en forma numérica

     Alguien que había recibido hace muchos años un curso de Unix, insistía en indicar que el profesor de aquelcurso usaba números en vez de las letras antes mencionadas, por ejemplo, este permiso:

    •  rwxrw-r-- él insistía en que se decía: 764

     Así que le pidieron explicara un poco más el proceso de numeración que reemplazaba a las 9 letras.

    Cada grupo de permisos constaba de 3 letras que totalizaban 9 caracteres, y al dividir el permiso anterior seve lo siguiente:

    •  rwx

    •  rw-

    •  r- Al asignar en notación binaria el valor de 1 cuando las letras están activas y el valor de 0 cuando no lo están(-) quedaría lo siguiente:

    •  rwx quedaría como: 111 (las tres letras están activas)

    •  rw- quedaría como 110

    •  r-- quedaría como 100

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    19/36

     

    19

    •  rwxrw-r-- se leería como: 764 (rwx es igual a 111, que es igual a 7; rw- es igual a 110,

    que a su vez es igual a 6; r —es igual a 100 y a su vez igual a 4).

    Ejercicios:

    •  rw -----

    •  r ------

    •  rw-rw-rw-

    •  r--r--r--

    •  rwxr--r-Respuestas:

    •  600

    •  400

    •  666

    •  444

    •  744

    Es un poco complicado de usar, pero increíblemente hay muchas personas que prefieren

    este formato, pues es más conciso para expresar un permiso.

    3.3.2 Cambio de usuario propietario (owner)

    El comando chown (change owner o cambiar propietario) sirve para cambiar al propietario de un archivo odirectorio.

    Para utilizar este comando primero se crea un archivo llamado prueba. Desde el usuario root se utilizará elya conocido comando touch:

    [root@eperez ~]# touch prueba

    [root@eperez ~]# ls -l prueba

    -rw-r--r--1 root ro ot 0 Mar 9 21:01 prueba

    Caracteres Binario Decimalrwx 111 7rw- 110 6r-x 101 5r-- 100 4 —   000 0

    Según la tabla

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    20/36

     

    20

    Resultó un archivo llamado prueba, con el dueño root y el grupo dueño root. Los permisos eran 644.

    Para cambiar el dueño de un archivo se utilizará el comando chown con la sintaxis como se explica acontinuación:

    chown nuevousuario nombredearchivo

    por ejemplo:

    [root@eperez ~]# chow n eperez pru eba

    [root@eperez ~]# ll pru eba

    -rw-r--r--1 eperez root 0 Mar 9 21:01 pru eba

    El comando chown hizo que el usuario eperez sea el dueño del archivo prueba. No alteró los

    permisos, que se mantienen como 644.

    Cambio de grupo propietario

    Si se quiere cambiar de grupo de usuarios propietarios hay dos opciones:

    a. El comando chgrp (change group), que cambia el grupo propietario Tiene la siguiente

    sintaxis:

    chgrp nuevogrupo nombredearchivo

    permite cambiar solamente el grupo, por ejemplo:

    [root@eperez ~]# ll prueba

    -rw-r--r--1 eperez root 0 Mar 9 21:01 pru eba

    [root@eperez ~]# chgrp eperez prueba

    [root@eperez ~]# ll prueba

    -rw-r--r--1 eperez eperez 0 Mar 9 21:01 pru eba

    En efecto, el archivo inicialmente pertenecía al grupo root y después de ejecutar el comando

    CHange GRouP este pasó a pertenecer al usuario eperez.

    b. El comando chown, con otra sintaxis, que cambia el grupo propietario y el usuario

    propietario a la vez.

    El formato para utilizar el comando chgrp con esta función es: chown

    nuevousuario.nuevogrupo nombredearchivo

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    21/36

     

    21

    Por ejemplo, para ponerle a este archivo el usuario root y el grupo root, ambos en un solo

    comando, se usaría:

    [root@eperez ~]# ll prueba

    -rw-r--r--1 eperez eperez 0 Mar 9 21:01 pru eba

    [root@eperez ~]# chown root.root prueba

    [root@eperez ~]# ll prueba

    -rw-r--r--1 root ro ot 0 Mar 9 21:01 pru eba

    Además del signo de punto (.) se puede usar el signo dos puntos (:) para separar usuario

    de grupo en caso de que el nombre de los usuarios y/o grupos contuvieran un punto (.) .

    Por ejemplo, con un usuario o grupo llamado: e.perez, si se usara el signo de . no se podría

    determinar bien dónde acababa el nombre del usuario y dónde comenzaba el del grupo. Es

    por esto que muchas personas prefieren usar los dos puntos siempre.

    En consecuencia, el siguiente comando es equivalente.

    [root@eperez ~]# ll prueba

    -rw-r--r--1 eperez eperez 0 Mar 9 21:01 pru eba

    [root@eperez ~]# chown root:root prueba

    [root@eperez ~]# ll prueba

    -rw-r--r--1 root ro ot 0 Mar 9 21:01 pru eba

    Cambio de permisos

    El comando chmod permite cambiar los permisos para cada grupo de usuario. Tiene dos

    formas:

    1. Mediante los números convertidos de binario (755, 600, etc).

    2. Mediante el uso de caracteres identificando a los usuarios/grupos y a los permisos.

    1- Números binarios:Para cambiar los permisos se pueden utilizar los números convertidos en binarios

    con el siguiente formato:

    chmod nuevopermiso nombredearchivo

    Por ejemplo:

    [root@eperez ~]# ll prueba

    -rw-r--r--1 root ro ot 0 Mar 9 21:01 prueba

    [root@eperez ~]# chmod 400 prueba[root@eperez ~]# ll prueba

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    22/36

     

    22

    -r-------- 1 roo t ro ot 0 Mar 9 21:01 pru eba

    El archivo inicialmente tenía de permisos rw-r--r-- (644) y al ejecutar el chmod 400

    prueba, se cambiaron a r --- (400).

    2- Uso de caracteres para identificar usuarios/grupos y permisos.

    Esta forma en cambio es muy cómoda porque permite identificar precisamente lo que se

    realiza. El formato es muy parecido:

    chmod nuevopermiso nombredearchivo

    La parte de nuevopermiso está formada a su vez por 3 partes:

      A quien se le asignará el permiso: usuario (u), grupo (g), otros (o) y/o todos(a)

    •  El permiso se quitará (-); pondrá (+); o se ignorará los permisos previos (=)

    •  ¿Sobre qué permiso se trabajará?: Lectura (r), Escritura (w), y/o ejecución (x) 

    Por ejemplo, si quisiera dar el permiso de lectura para todos, podría poner: [root@eperez

    ~]# ll prueba

    -r ........ 1 root root 0 Mar 9 21:01 prueba

    [root@eperez ~]# chmod a+r prueba

    [root@eperez ~]# ll prueba-r--r--r-- 1 root root 0 Mar 9 21:01 prueba

    En efecto, al poner a+r (Todos, darle, lectura), el archivo prueba se cambió a r--r--r-(666)

    Otra manera de hacer la misma acción es poniendo: chmod

    ugo+r prueba

    En la primera parte, en la que se señaló a quién se le darán los permisos, se puede poner

    más de una opción, como en el caso anterior: a (todos) es equivalente a ugo (usuarios, grupos y

    otros).

    De igual manera, en la parte en la que se específicó qué permisos se están modificando, se

    tiene más de una opción.

    Por ejemplo, si se busca dar derecho de escritura y ejecución al usuario dueño y al grupo,

    debería ponerse:

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    23/36

     

    23

    [root@eperez ~]# ll prueba

    -r--r--r-- 1 root root 0 Mar 9 21:01 prueba

    [root@eperez ~]# chmod ug+wx prueba

    [root@eperez ~]# ll prueba

    -rwxrwxr-- 1 root root 0 Mar 9 21:01 prueba

    El signo = sirve para ignorar los permisos previos y cambiar los permisos a los solicitados.

    Por ejemplo, darles a todos solamente permisos de lectura:

    [root@eperez ~]# ll prueba

    -rwxrwxr-- 1 root root 0 Mar 9 21:01 prueba

    [root@eperez ~]# chmod ugo=r prueba

    [root@eperez ~]# ll prueba-r--r--r-- 1 root root 0 Mar 9 21:01 prueba

    Al poner ugo=r se indica: a los usuarios, grupo y otros,(u g o) ponerles (=) permisos de

    lectura (r). Se ignoran los permisos que había antes y se modifican los permisos.

    Cambiar permisos a los directorios:

    Cualquiera de los comandos antes mencionados puede utilizarse para cambiar los

    permisos o dueños de un directorio. Si se quiere cambiar los permisos recursivamente se

    utilizará el ya conocido switch -R para que se cambien los permisos al directorio y a todoslos archivos y directorios que están dentro de él.

    Por ejemplo, al crear un directorio llamado: test que contenga un directorio llamado

    uno y otro llamado dos

    [root@eperez ~]# mkdir test[root@eperez ~]# mkdir test/uno[root@eperez ~]# mkdir test/dos[root@eperez ~]# ll test/total 8

    drwxr-xr-x 2 root root 4096 Mar 9 21:28 dos drwxr-xr-x 2 root root 4096 Mar 921:28 uno [root@eperez ~]# lldrwxr-xr-x 4 root root 4096 Mar 9 21:28 test

    Estos directorios eran propiedad de root y el grupo root.

    Para cambiarles el dueño y el grupo a eperez se haría:

    [root@eperez ~]# chown -R eperez.eperez test

    [root@eperez ~]# ll

    drwxr-xr-x 4 eperez eperez 4096 Mar 9 21:28 test

    [root@eperez ~]# ll test/

    drwxr-xr-x 2 eperez eperez 4096 Mar 9 21:28 dos drwxr-xr-x 2 eperez eperez 4096

    Mar 9 21:28 uno

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    24/36

     

    24

    El switch -R cambió el dueño y grupo al directorio y a todos los directorios y archivos que estaban dentro deese directorio.

    Este mismo switch puede ser utilizado con chmod y chgrp

    chmod

    Se usa para cambiar los permisos de los archivos y directorios. Los tipos de permisos son los tresanteriormente estudiados

    r :lectura

     w :escritura

    x :ejecución (acceso cuando se trata de un directorio) 

    Los permisos los podemos agrupar en

    u : usuario

    g : grupo

    o : otros

    Para añadir un permiso se utiliza el + mas y para quitarlo el - menos, y para asignar quitando otros cambiosse usa el =, con esto agregar a todos el permiso de lectura a un archivo sería así:

    chmod ugo+r archivo

    si deseamos que todos mis archivos y carpetas sean accedidas y leídas por las personas de mi grupo,puedo agregar la opción de recursividad -R

    chmod g+rx * -R

    Cambio de permisos utilizando números

    Es posible asignar un número identificatorio a cada tipo de permiso, considerando lo siguiente:

    r = 4 (lectura)

     w = 2 (escritura)

    x = 1 (ejecución)

    - = 0 (sin permisos)

    Cuando asignamos los permisos utilizando números debemos tener en cuenta que primero se sumarán losvalores y dicho resultado es el que se usará.

    Ejemplos

    rw------- (600) Sólo el propietario tiene el derecho de leer y escribir.

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    25/36

     

    25

    chmod 600 archivo.txt

    rw-r--r-- (644)  Sólo el propietario tiene los permisos de leer y escribir; el grupo y los demás sólo

    pueden leer.

    rwx------ (700) Sólo el propietario tiene los derechos de leer, escribir y ejecutar el archivo.

    rwxr-xr-x (755) El propietario tiene los derechos de leer, escribir y ejecutar; el grupo y los demás sólopueden leer y ejecutar.

    rwx--x--x (711) El propietario tiene los derechos de lectura, escritura y ejecución; el grupo y los demás

    sólo pueden ejecutar.

    rw-rw-rw- (666) Todo el mundo puede leer y escribir en el archivo. ¡No es una buena elección!

    rwxrwxrwx (777) Todo el mundo puede leer, escribir y ejecutar. ¡Tampoco es buena elección!

    chgrpCambia el grupo a un archivo o carpeta, su uso es simple, se especifica el grupo y de ahí a que se le deseacambiar, al igual que a chmod tiene la opción -R para cambiar el grupo de forma recursiva, por ejemplopodemos querer cambiar el grupo del directorio public_html y su contenido al grupo apache.

    chgrp apache public_html -R

    chown

    Cambia el usuario (owner) y opcionalmente el grupo a un archivo o directorio, su uso es similar a loscomandos anteriores, por ejemplo podríamos copiar una carpeta carpeta como root dentro del usuario

    gulixiano que pertenece al grupo gulix, el paso siguiente es que gulixiano pueda disponer de dicha carpeta yarchivos interiores, el comando que debería ejecutar es:

    chown gulixiano:gulix carpeta -R

    3.3 Substituir Usuario

    3.3.1 su

    El comando su permite cambiar rápidamente de un usuario a otro, esto es, sustituir la sesión de un usuariopor la sesión de otro usuario.

    su requiere de un parámetro opcional:

    su - usuario: permite cambiar a "usuario"

    su - : permite cambiar a "root"

    Por ejemplo, supongamos que estamos en un shell (por ejemplo en la primera consola de texto) con elusuario ricardo, y queremos cambiar de ricardo a juan (por supuesto, ambos usuarios deben estar creados ydeben tener una clave asignada).

    Primero se debe verificar qué usuario se está utilizando. Para ello se usará el comando whoami (who am I?,es decir, ¿quién soy?).

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    26/36

     

    26

     Así se ha verificado la entrada como usuario ricardo

    Entonces se escribe: su juan -

    (La clave que se debe poner es la del usuario al que se va a convertir, en este ejemplo será: prueba, porfavor verificar que tengamos creado ese usuario previo a hacer su - juan)

    Y en efecto, al escribir la clave y dar enter, el usuario se habrá convertido en juan. Se puede verificar en laimagen.

    whoami prueba

    Si quisiera cerrar la sesión del usuario prueba debería apretar control d, para regresar automáticamente alusuario ricardo, y salir del shell (o escribir exit).

     A continuación el usuario debería verificar esto apretando control d.

     Ahora el usuario se convertirá de ricardo en root:

    Hay que verificar que el nombre de usuario sea ricardo:

    whoami

    ricardo

    Para convertirse en root no es necesario poner el nombre, es suficiente escribir: su -

    Password:

    Es necesario recordar que la clave que se debe escribir es la clave de root.

    Es importante recordar que para salir del shell se escribes: control d y esto te regresará al usuario anterior(ricardo en este caso es el usuario anterior)

    Si se quiere cambiar desde el usuario root hacia otro usuario se lo puede hacer sin tener que conocer laclave del segundo, por ejemplo, entremos como el usuario root y pongamos:

    whoami root

    su - ricardo

    $

    En efecto, no hizo falta poner la clave de ricardo

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    27/36

     

    27

    En resumen:

    El usuario root se puede convertir en cualquier otro usuario sin necesidad de clave.

    Cada vez que ejecute el comando su, como un usuario no privilegiado, se solicitará la clave del usuario alque se quiera convertir.

     Al cambiar de usuario no se pierde el usuario anterior, sino que el nuevo se sobrepone al anterior, hastasalir, apretando control-d o escribiendo exit.

    3.3.2 su -

    Diferencia entre usar o no usar guión en el comando su

    Compare esta secuencia con la anterior. Cuál es la diferencia?

    Resulta que cuando NO se utiliza el guión en el comando su, lo único que se consigue es cambiar deusuario, pero se conserva el ambiente de trabajo (directorio actual, variables de ambiente, etc.)

    Cuando se usa el guión, observará que el directorio de trabajo (con el comando pwd o print working

    directory) cambia a /home/juan, que es el directorio que le corresponde a juan.

    Esto es importante si mira la siguiente secuencia:

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    28/36

     

    28

    ¿Por qué falló el comado ifconfig si el usuario root puede usarlo sin problema?

    Respuesta: el directorio /sbin que es donde reside el comando ifconfig NO está en la lista de directorios deroot. Y no está porque los usuarios restringidos como ricardo NO tienen ese directorio en su PATH (caminode búsqueda).

    La solución es agregar el guión al comando su, así:

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    29/36

     

    29

    Entonces no olvide agregar el guión si desea activar el ambiente completo que le corresponde al usuario,esto significa cambiar de directorio, de path y de otras variables de ambiente que se pueden mirar con elcomando set.

    Conclusión: el comando su es muy interesante, solo que es necesario conocer la clave de cada usuario enel que el usuario original se quiera convertir. Por ejemplo: para convertirse en root el usuario necesitaconocer su clave.

    3.4 Delegación de privilegios de superusuario

    3.4.1 Alternativas para delegar funciones de administración

    Hay ocasiones en que se precisa que un usuario no privilegiado (como el usuario eperez) realice laborescomo super usuario, pero no se quiere que conozca la clave de root, como en el caso de una persona queayude en la administración de un laboratorio y que deba realizar ciertas labores sin tener que conocer laclave de root.

    Existen algunos mecanismos para ello:

    1. Incluir a ese usuario en el grupo de root, con lo cual tiene todos los permisos de root, sin excepción

    2. Cambiar a 0 el ID del usuario y bloquearle a root el acceso a root. Esta es la opción recomendadaya que se consigue doble finalidad: impedir el acceso a root y usar un usuario distinto paraactividades de administración. Y mejor si ese usuario tiene nombre como $ri$car$do.Or$te$ga oalgo así que no sea fácilmente adivinable.

    3. Existe una tercera forma que tiene sus ventajas y desventajas (más son desventajas, pero ni modo,allí va): es el mecanismo sudo o Superuser Do. El problema de sudo es que la mayoría dedistribuciones lo traen activo pero no lo han asegurado, así que una forma fácil de ganar privilegiosde superusuario es poner sudo bash  y viola, estás adentro, has encontrado un hueco en la

    seguridad y tienes todos los permisos.

    3.4.2 El mecanismo sudo

    En estos casos esa persona podrá utilizar el mecanismo sudo, ya que es un comando que permite queusuarios autorizados ejecuten ciertas (o todas) tareas que pueda hacer el usuario root, sin la necesidad desaber la clave de éste. La clave que el sudo pedirá será la del usuario y no la de root.

    El sudo también lleva un registro histórico de qué comandos ejecutó un usuario como root y a qué hora.

    Para poder usar el comando sudo se debe editar el archivo donde se guardan los permisos de sudo, que sellama /etc/sudoers. Para editar el archivo sudoers se usará el comando visudo

    visudo

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    30/36

     

    30

    Se abrió el programa vi con el archivo /etc/sudoers, así que deberás lidiar con el vi.

    Podía haberse usado otro editor, pero tiene sus complicaciones ya que si miras el archivo /etc/sudores,verás que ningún usuario tiene permisos para ese archivo, así que habrá que primero usar chmod para darpermisos, editarlo y REGRESAR los permisos originales, ya que el comando sudo chequea (por cuestionesde seguridad) que el archivo sudoers tenga los permisos tal cual está diseñado.

    Formato del archivo de sudoers

    El archivo sudoers tiene el siguiente formato:

    La estructura es muy simple (se ha marcado en colores cada parte):

    [(usuario que ejecutará)]

    Hay algunas consideraciones que se deben seguir:

    En la primera columna (usernames/groups) se pondrá el nombre de los usuarios a quienes se les permitiráusar el comando sudo. Para añadirlos, solamente hay que escribirlos tal y como aparecen en /etc/passwd.Si se va a incluir a más de un usuario, se lo puede hacer escribiendo los nombres separados por por coma,por ejemplo: eperez,btapia.

    Cuando se quiera añadir grupos de usuarios se debe indicar su nombre anteponiéndole un %. Por ejemplo,el grupo users se representa como %users.

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    31/36

     

    31

    La segunda columna se usa para especificar desde qué servidor podrán utilizar el sudolos usuarios a los asignados. El comando sudo permite que se ejecute entre servidores. Normalmente sudose usa desde el mismo servidor, por lo que siempre utilizaremos la palabra clave ALL en la segundacolumna. Esta palabra clave puede ser usada en las tres últimas columnas. Significa todos o cualquiera,sean estos usuarios, servidores o comandos (según la columna donde se la ponga).

    La tercera columna indicará en qué usuarios podemos convertirnos. Típicamente se especifica ALL para

    indicar que nos podemos convertir en cualquier usuario (root es el objetivo que normalmente nos interesa).

    En la cuarta columna (comandos) se pueden especificar mútiples comandos, separándolos por coma, otodos los comandos, utilizando la palabra clave ALL.

    Para especificar algunos comandos se debe indicar la ruta completa de acceso, por ejemplo: /bin/cat.

    • Delante de los comandos a ejecutar se puede agregar la palabra: NOPASSWD : (es importante fijarse en elsigno de : al final) de forma tal que cuando el usuario necesite utilizar el sudo, no se le pedirá ninguna clave.

    o Ejemplo, se le dará al usuario eperez derecho a todos los comandos, sin necesidad de clave:

    eperez ALL=(ALL) NOPASSWD: ALL

    Dar acceso total a usuarios específicos:

    Con visudo se pueden intentar los siguientes comandos. visudo requiere que el usuario sea root, por lotanto se debe abrir dos consolas (dos shells), en una trabajaremos como root para dar el permiso y en laotra como el usuario no privilegiado para realizar las pruebas:

    En la consola que estamos como root se editará el archivo sudoers (visudo) y asignaremos a nuestrousuario eperez todos los derechos:

    eperez ALL=(ALL) ALL

    El usuario eperez podrá ejecutar como superusuario cualquier comando (es el último ALL el que especificacualquier comando).

    Desde la consola del usuario eperez, se ejecutará: cat /etc/shadow

    cat: /etc/shadow: Permission denied

    Como se puede observar en el mensaje de error, el usuario eperez no puede ver el

    archivo /etc/shadow (pues solo root tiene permiso para verlo).

    Usando sudo se debe recordar que si se pidiera clave, sería la clave de usuario sudo cat /etc/shadow

    root:$1$hXrruiLl$4p38ASaYPDEdQEnQuDVl70:13910:0:99999:7:::

    bin:*:13910:0:99999:7:::

    daemon:*:13910:0:99999:7:::

    adm:*:13910:0:99999:7:::

    lp:*:13910:0:99999:7:::

    sync:*:13910:0:99999:7:::

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    32/36

     

    32

    Como se puede observar, al ejecutar el comando cat a través de sudo el usuario se ha convertido en root,es por eso se puede ver el archivo /etc/shadow que solo root puede ver.

    Dar acceso a comandos específicos

    Con visudo se puede editar los permisos del usuario eperez, le ponemos así: eperez ALL=(ALL)/bin/cat,/sbin/

    El usuario eperez podrá ejecutar como super usuario el comando /bin/cat y/o cualquier comando que estédentro de /sbin/.

    Supervisar las acciones de los los usuarios a través de los logs de sudoers:

    Se pueden mirar dentro de /var/log/secure las acciones que los usuarios han realizado a través de sudo. Porejemplo las líneas finales del log eperez dicen: Feb 23 12:37:05 eperez sudo: eperez : TTY=pts/0 ;PWD=/home/eperez ; USER=root ; COMMAND=/bin/cat /etc/sudoers

    Feb 23 12:51:24 eperez sudo: eperez : TTY=pts/0 ; PWD=/home/eperez ; USER=root ; COMMAND=/bin/cat/etc/shadow

    Feb 23 13:00:05 eperez sudo: eperez : TTY=pts/0 ; PWD=/home/eperez ; USER=root ; COMMAND=/bin/su-

    Feb 23 13:00:05 eperez su: pam_unix(su-l:session): session opened for user root by eperez(uid=0)

    Como se puede analizar en los logs, el usuario eperez, el día 23 de febrero a las

    12:37:05, ejecutó con sudo el comando /bin/cat /etc/sudoers

     A las 12:51:24 ejectó /bin/cat /etc/shadow

     A las 13:00:05 ejecutó con sudo el comando su -

    Éste último comando es interesante, lo se hizo fue obtener el shell de root (con su -) pero sin conocer laclave de root sino mediante la del usuario específico. Así que hay que tener mucho cuidado con especificar ALL en la columna de los comandos, pues también se incluye el comando su.

    3.5 Limitando el espacio (cuotas) de disco

    3.5.1 Manejo de quotas

    Las cuotas son una de las características más interesantes y fundamentales de Linux. Mediante este

    sistema podemos manejar un correcto y adecuado uso del disco por parte de nuestros usuarios.

    Una de las mayores utilidades de las cuotas (y no la única) es para controlar la cantidad de espacio en discoque ocupan los correos de los usuarios. También se pueden usar en caso de que estemos manejando Linuxcomo servidor de archivos de windows (samba) para asignarle espacio a los directorios de usuario.

    Las cuotas se manejan en base a particiones, por lo que debemos definir en qué particiones lasactivaremos. NO ES RECOMENDABLE ACTIVAR CUOTAS a la partición / porque todo el sistema sevolverá lento, al comparar las cuotas por cada lectura al disco duro. Es mejor crear varias particiones yactivar cuotas solamente a las particiones que realmente serán utilizadas por los usuarios.

    Por ejemplo, para los usuarios que hacen POP3, podríamos activar las cuotas para la partición /var, pues esen /var/spool/mail donde se almacenan los mensajes de correo.

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    33/36

     

    33

    Otra definición importante de las cuotas es determinar qué espacio asignaremos a cada usuario, porejemplo, siempre sugerimos al menos asignar 20mb de espacio en disco para cada usuario de correo quetengamos, por lo tanto si tenemos 500 usuarios, debemos preveer que podemos tener un máximo de500*20=10000MB o lo que es lo mismo un disco de 10GB de tamaño. Por supuesto es un caso bien raro elque las cuotas de TODOS los usuarios se llenen a la vez, pero puede suceder.

    Las cuotas se pueden manejar de dos formas en linux:

    Cantidad de inodos por usuario

    Cantidad de Bloques por usuario

    La cantidad de inodos es la cantidad máxima de archivos (y carpetas) que podrá crear un usuario bajo sucontrol, bajo su propiedad. Es muy útil porque hay usuarios que por error crean programas que comienzan agenerar millones de pequeños archivos (posiblemente de 0bytes) que van consumiendo todos los inodos delsistema. No es un hecho intencionado, pero nos puede dar un buen trabajo determinar quién estáconsumiendo todos los inodos del sistema.

     Ahora en estos momentos, pocos usuarios son los que acceden directamente al shell a ejecutar sus

    "propios" programas, por lo que poner control en los inodos no es algo muy ventajoso. Las cuotas siemprese manejan para controlar el espacio en disco que consume el buzón de correo de los usuarios.. y el buzónconsta de un sólo inodo ya que generalmente se usa el formato mbox que consiste en un sólo archivodonde se almacenan secuencialmente todos los mensajes.

    Es por esto que no haremos mucho énfasis en los inodos (aunque pueda interesar a alguien), pero sí en lasegunda forma de controlar las cuotas por bloques, o espacio en disco.

    Control de espacio en disco es la forma que todo el mundo comprende, sencillamente podemos decir queun usuario no puede consumir más de 5mb o 20mb en disco y listo, si intentara consumir más espacio endisco, el sistema no le dejará. Así de simple.

    Las cuotas además tienen dos límites o techos:

    soft quotas (cuotas suaves)

    hard quotas (cuotas duras)

    La hard quota es mucho más fácil de entender y es sencillamente las que todos usamos, este es un valorque cuando el usuario alcance, el sistema no le dejará escribir más en el disco.

    La soft quota es una cuota que puede ser sobrepasada durante un determinado tiempo (llamado graceperiod o período de gracia y se mide en días), por ejemplo:

    Un usuario tiene una soft quota de 20 megas y una hard quota de 40 megas:El usuario puede usar en un determinado instante 25 megas, esto es, se ha pasado de la soft quota, elsistema activará instantáneamente un contador donde irá descontando el periodo de gracia que le da alusuario para respetar la soft quota.

    Este periodo de gracia es por defecto 7 días, es decir, este usuario durante 7 días podrá excederse de 20megas (pero nunca sobrepasar los 40 de la hard quota), si durante algún momento de estos 7 días , elusuario baja a menos de 20 megas, el sistema resetea el contador y no ha pasado nada. Si el usuarioalcanza los 7 días sobrepasado de cuota, el sistema no le dejará escribir nada más hasta que no baje suuso de disco a menos de lo establecido en la soft quota.

    Las softquotas es un sistema bonito e interesante, para manejar ciertos picos esporádicos que puedansuceder. Sin embargo, es muy difícil de explicarle a un usuario no conocedor, esto es, cómo decirle a ungerente o al contador de la empresa que sí pudo escribir la semana pasada, pero ahora tiene que bajar a 20

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    34/36

     

    34

    megas de los 35 que está usando porque la soft quota o la hard quota, etc, etc.. ellos no lo comprenderánmuy bien y podemos buscarnos más problemas que soluciones.

    Por lo tanto, sugerimos que la soft quota siempre sea igual o muy parecido a la hard quota, esto es, alalcanzarse un valor predeterminado sencillamente el sistema no dejará escribir al usuario y listo, no hay queexplicarles más, ellos sí entienden de las cuotas duras (hard quotas).

    3.5.2 Activando las cuotasPor favor no se limite a copiar estos ejemplos en su computador. Primero deberá leer el texto y hacer loscambios que sean necesarios para que funcionen en su sistema. Si se limita a copiar lo que está aquí,dejará su sistema inestable y no sería nada raro que deba reformatear o ejecutar Linux rescue.

     Activar las cuotas es un proceso bastante simple, pero antes hablemos de un archivo muy importante ennuestro sistema llamado /etc/fstab

    En términos generales esto es lo que se debe hacer. Los detalles vienen luego:

    Instalar el soporte para cuotas: sudo yum install quota quotatool

    Iniciar CENTOS en runlevel 1, modo de recuperación: init 1

     Activar el soporte para cuotas en las particiones deseadas, agregando en el fichero /etc/fstab losparámetros usrquota y grpquota a las líneas que definen la configuración de las particiones /var y /home:

    Mire su archivo fstab (no se limite a copiar esto, ya que su particionamiento seguramente será distinto):

    ........ /var ext3 defaults,usrquota,grpquota 1 2

    ........ /home ext3 defaults,usrquota,grpquota 1 2

    Lo que se debe hacer es agregar las palabras “,usrquota,grpquota” luego de de faults. Observe que es usr y

    grp, es decir no corrija poniendo user y group, eso no es correcto.

    Volver a montar las particiones para que surtan efecto los cambios:

    mount -o remount /var

    mount -o remount /home

    Crear los archivos aquota.user, aquota.group, quota.user y quota.group, los cuales se utilizarán almacenarla información y estado de las cuotas en cada partición.

    cd /var

    touch aquota.user aquota.group quota.user quota.group

    cd /home

    touch aquota.user aquota.group quota.user quota.group

    Chequear la configuración: quotacheck -avug

     Activar las cuotas de disco recién configuradas ejecutando:

    quotaon /var

    quotaon /home

    ReiniciaR a fin de aplicar cuota de disco a algunos usuarios.

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    35/36

     

    35

    fstab contiene todas las particiones que son montadas en nuestro sistema, de la forma:

    partición punto montaje tipo de fs opciones del fs dump/check

    por ejemplo hagamos: cat /etc/fstab y veremos varias lineas parecidas a esta:

    LABEL=/var /var ext3 default 1 2

    esto le pedirá a Linux que monte la partición llamada (etiquedata): "/var" en /var que tiene un formato ext3,que lo monte con las opciones por defecto (lectura, escritura: r/w) y que chequee (numero 2) en caso decaerse intempestivamente el sistema (dump, la penúltima columna, no se usa).

    Recuerde que el fstab que mostramos aquí puede (y seguro será) diferente al suyo, así que no lo copie talcual. Primero guarde una copia de su archivo fstab y realice los cambios aquí indicados.

    Volvemos a sugerir que no active cuotas a la partición raíz /

    Lo mejor es que por el momento utilice una máquina virtual donde pueda crear nuevos discos duros yasignar cuotas a cada nuevo disco duro o partición.

    Para activar las cuotas, debemos poner dos opciones más al filesystem que debemos activar. Esto se haceagregando una opción que le indicará al kernel que active las cuotas de usuario y grupo al filesystem. Porejemplo: LABEL=/var /var ext3 default,usrquota,grpquota 1 2

    Entonces debemos reiniciar el sistema para que las cuotas queden activadas.

     Al reiniciar el sistema este procederá a revisar el sistema y activar el archivo donde se guardan las cuotas.

    Verificando las quotas

    El comando para verificar las quotas de los usuarios es:

    quota usuario nos indicaría algo así: Disk quotas for user eperez (uid 500): Filesystem blocks quota limitgrace files quota limit grace /dev/hdd2 28 32000 32000 7 0 0

    estamos usando 28 bloques (28kb) de un total de 32000 kb permitidos (32megas)

    Por supuesto los usuarios que hayamos creado y no les hayamos asignado las cuotas nos indicarán que lacuota es ilimitada. Por ejemplo, el usuario root NUNCA debe tener cuotas, pues maneja diferentes archivosde sistema: [root@eperez ~]# quota root Disk quotas for user root (uid 0): none Otro comando para revisarlas quotas de los usuarios es: repquota -a

    El cual nos dará un reporte de las quotas de TODOS y cada uno de los usuarios del sistema, mostramosuna breve página: *** Report for user quotas on device /dev/hda7 Block grace time: 7days; Inode grace time:

    7days Block limits File limits

    User used soft hard grace used soft hard grace

    root -- 8485596 0 0 44422 0 0 SITE154-logs -- 3808 0 0 1 0 0 SITE227-logs -- 4904 0 0 721 0 0 acomercial2-- 64 20480 21504 13 0 0 sistemas -- 9756 20480 21504 44 0 0

    Por ejemplo el usuario sistemas tiene consumidas 9756KB (bloques) de los 20480 kb (bloques) permitidosen suave, 21504 bloques (duros). Tiene 44 archivos utilizados pero no tiene límites (0) suaves ni duros.

    3.5.3 ¿Cómo hacemos para editar las cuotas?

    Cada nuevo usuario que creemos viene sin cuotas predefinidas (uso ilimitado), por lo tanto debemos

    definirle estas para que comiencen a funcionar.

    El comando edquota nos permite manejar las cuotas de usuarios:

  • 8/17/2019 Tema 3 Manejo Suarios y Permisos

    36/36

     edquota -u eperez

    Nos mostrará en el vi, un resumen de las cuotas, de ahi podemos cambiar el valor que aparece debajo desoft y debajo de hard, y poner un valor en KB, correspondiente a las cuotas, por ejemplo, pongamos:

    20000 en cada uno de ellos, esto sería una cuota de 20megas al usuario.

     Aprovechemos la oportunidad para comentar que los valores no tienen que quedar precisamente ajustadosdebajo de la cuota (suave o dura), una vez grabado el sistema ajustará las posiciones.

     Al finalizar salvamos los cambios y listo, la cuota está preparada.

    Podemos hacer un su - a este usuario (su - eperez, en mi caso) y tratar de copiar algunos archivos desde/usr ( cp -a /usr . ) y veremos que cuando se cumpla el espacio de cuota asignado por nosotros, esta fallarácon un error descriptivo.

     Ajustando las cuotas masivamente

    Si tuviéramos muchos usuarios a los que quisiéramos editar las cuotas, podemos usar este pequeño scriptque por defecto cambiará las cuotas de todos los usuarios por las cuotas que tenga asignado el usuarioeperez (cambiar por el usuario tipo, o plantilla de uds):

    edquota -p eperez "awk -F: '$3 > 499 {print $1}' /etc/passwd" esto significa algo así:

    edita las cuotas de todos los usuarios que existen en /etc/passwd, cuyos uid sea mayor a 499, y toma comoplantilla las cuotas del usuario eperez. Por supuesto, primero tendremos que haber habilitado algún usuariocon sus cuotas (eperez en mi caso) para tomar a ese usuario de base para replicar los valores en el restode usuarios.

    En el siguiente capítulo: Manejo de usuarios y permisos de Linux.

    Fin de esta sección.