Herramientas de usuario

Herramientas del sitio


sistema:linux:howto

¡Esta es una revisión vieja del documento!


Sistema Linux

Gestión de usuarios y grupos

Gestión de usuarios

Comandos:

  • adduser usuario Como root añade un usario al sistema preguntandote sus características. Puedes crear un usuario sin necesidad de que te vaya preguntando sus características con useradd.
    • -d Directorio personal
    • -s Shell
    • -p Password
    • -g Grupo principal
    • -G Otros grupos
    • -m Crear el directorio personal ahora (si no cuando inicie)
  • usermod usuario Con los mismos parámetros que useradd puedes modificar un usuario.
  • userdel usuario Elimina un usuario.
  • passwd Cambia la contraseña del usuario actual.
  • passwd usuario Como root, cambia la contraseña del usuario
  • id usuario Devuelve información de los identificadores de usuario\grupo del indicado
  • groupadd grupo Añade un grupo al sistema
  • groupdel grupo Elimina un grupo del sistema
  • chsh Cambia de shell con el que inicia un usuario

Ficheros

  • /etc/passwd Donde se guarda la info del usuario
  • /etc/shadows Donde se guardan los passwords
  • /etc/group Donde se guarda la relación grupos-usuarios
  • /etc/skel Directorio que se copia en la home del usuario al crearse esta
  • /etc/shells Donde se encuentran todos los shells que pueden ser asignados a un usuario

Gestión de permisos

Comandos:

  • chown usuario fichero\directorio Cambia de propietario el fichero o directorio
    • -R para un árbol de directorios
  • chgroup grupo fichero\directorio Cambia de grupo el fichero o directorio
  • chmod modo fichero\directorio Cambia los permisos de un fichero\directorio
    • -r Hace el cambio para todo el árbol de directorios
    • El modo se refiere a qué permisos se darán; generalmente se dan de forma octal, 3 números octales del 0 al 7. Uno de estos tres números es como un binario del 000 (0) al 111 (7), es decir, que contiene tres 1\0 dentro, estos 1s o 0s significan activo\inactivo, el primero es de lectura, segundo de escritura y tercero de ejecución. Y estos octales se dan (primero) usuario, (segundo) grupo, (tercero) otros.
    • El modo también puede indicarse cómo +r, +w, +x o -r, -w, -x, si se quiere (+) dar (lectura, escritura o ejecución) o quitar (-).
chmod 777 fichero -> dá todos los permisos al fichero (111 111 111)
chmod 700 fichero -> dá todos los permisos al usuario, a los demás nada (111 000 000)
chmod 760 fichero -> dá todos los permisos al usuario, al grupo todos excepto ejecución y ninguno a los demás (111 110 000)
chmod 655 fichero -> dá todos los permisos al usuario excepto el de ejecución, al grupo y a los demás permite leer y ejecutar.

Notas

  • Para crear un usuario sin shell ni directorio:
adduser smbadmin --shell /sbin/nologin --no-create-home

Samba

  • Podemos volver a la pantalla donde configuramos Samba cuando lo instalamos mediante el comando sambaconfig.

Demonios

  • smdb Maneja los recursos compartidos cliente-servidor Samba (impresión, visualización, compartición…).
  • nmbd Servidor de nombres que emula la funcionalidad de un servidor WINS y NetBIOS.

smb.conf

  • /etc/samba/smb.conf es el fichero de configuración de Samba.
  • Los # y los ; son los comentarios.
  • Una vez modificado necesitarás reiniciar el sistema con: /etc/init.d/samba restart

Zonas

  • [global], donde irá la información usada por todos los usuarios.
    • workgroup, grupo de trabajo.
    • encrypt passwords, si vamos a usar en redes con windows de versión mayor a la 98.
    • netbios name, nombre netbios.
    • hosts allow indica el rango de ips permitidas para conectarse a la máquina. Para indicar un rango se hace '192.168.1.' y de esta forma entrarían todos con ip 198.168.1.x:
      • hosts allow = 192.168.1. 127.
  • [etiqueta directorio], para cada directorio que decidamos compartir.
    • path, ruta del directorio que compartiremos.
    • read only = [yes|no] indicará si el directorio usado es de solo lectura.
    • guest ok = [yes|no] indicará si permitimos o no al usuario invitado entrar en nuestro sistema.
    • browsable = [yes|no] si podrá ser visto en la lista de recursos compartidos.

Ejemplo

[global]
workgroup = MICASA
encrypt passwords = yes
netbios name = arturito
hosts allow = 192.168.1. 127.
[docs]
path = /home/alfred/myDir
browseable = no
read only = yes
guest ok = no

Programas relacionados

  • smbclient es un programa que, al estilo ftp, puedes conectarte a recursos samba. Por ejemplo, lo usariamos: smbclient \\\\192.168.1.2\\Downloads o lo que es lo mismo: smbclient //192.168.1.2/Downloads
  • smbstatus es un programa que te reporta el estado de las conexiones samba actuales.
  • testparm es un programa que valida la sintaxis del fichero de configuración de samba.
  • smbpasswd programa para enlazar usuarios\contraseñas del sistema samba. (smbpasswd -a <usuario>) El usuario será creado para samba y debe existir en windows.

smbclient

Internamente, dentro de smbclient podemos utilizar distintos comandos:

  • get <nombre de archivo> copia un archivo a local.
  • put <nombre de archivo> copia un archivo desde local al ordenador accedido.
  • mget <mascara>, la máscara puede ser, por ejemplo, un *, recoge los archivos que coinciden con la máscara.
  • ls, cd moverse por los directorios.

Pasos para acceder desde windows a un recurso compartido

  1. Editar el fichero smb.conf
  2. Configurar la máquina local
  3. Configurar los directorios compartidos
  4. Añadir un usuario al sistema
  5. Reiniciar el servicio

Montar carpetas compartidas

Para poder hacer esto necesitamos tener instalado el paquete smbfs, luego, para desmontar podemos usar de igual manera el umount.

El paquete nos instala un nuevo comando: smbmount que es el que nos permite montar mediante la siguiente sintaxis:

  • smbmount //192.168.1.2/Downloads /mnt -o password=hola.
  • smbmount //192.168.1.2/Downloads /mnt -o passwd=hola.

Aunque también nos permite añadir (o utilizar en el archivo fstab) un nuevo tipo: el smbfs.

  • mount -t smbfs -o password=hola //192.168.1.2/Downloads /mnt

Luego, con hacer umount /mnt ya estaría desmontada.

Para montar al iniciar el sistema tendremos que añadir una línea al /etc/fstab:

//192.168.1.2/Downloads    /mnt/smb    smbfs     credentials=/etc/cred 0 0

Y, por lo tanto en este caso, crear el fichero /etc/cred con lo siguiente:

username = alfred
password = alfredspass

CIFS

A dia de hoy el smbfs parece estar en desuso, para montar una carpeta de red utilizaremos el Common Internet File System: cifs.
La utilización de este es idéntica a la del smbfs; también necesitaremos tener instalados los paquetes de samba.

mount -k cifs //192.168.1.10/APPS /mnt
mount.cifs //192.168.1.10/WWW /mnt -o credentials=/cred
mount.cifs //oz/WWW /home/alfred/public_html -o uid=alfred,pass=thepass

SWAT

Es una interfaz web para configurar SAMBA de una forma gráfica.

Instalar

apt-get install swat

Reiniciamos máquina.

Acceder

http://<ip>:901

El nombre de usuario y el password tendrán que ser uno de la máquina que se está administrando. Los permisos para ese usuario serán los mismos que tenga para modificar el fichero smb.conf.

Como...

Crear usuario exclusivo de administración

Imaginemos que el usuario que queremos crear es smbadmin para acceder a esta config (desde Ubuntu):

adduser smbadmin --shell /sbin/nologin --no-create-home
chgrp smbadmin /etc/samba/smb.conf
chmod g+w /etc/samba/smb.conf
  • :!: Es posible que le tengamos que dar permisos con smbpasswd -a user.

Añadir una carpeta compartida

  1. Vamos al menú Shares.
  2. Creamos el share que queremos, el nombre que pongamos será con el que se comparta.
  3. En path indicamos la ruta de la carpeta.
  4. Indicamos “available”, “guest ok” y “browsable” como yes.

La carpeta tendrá que tener los siguientes permisos:

chown nobody:nogroup smbtest/
chmod 555 smbtest

O si queremos que también sea modificable:

chmod 755 smbtest

Notas

  • En la máquina windows debería de tener activo el puerto 445 para una conexión más ágil.
  • Si quisiesemos ver los recursos compartidos de un host: smbclient -L //192.168.1.2
  • Para utilizar nombres de máquina en vez de ip's (smbclient -L //alfredsp4) ha de existir el archivo /etc/samba/lmhosts y en él una referencia como la siguiente:
192.168.1.2	alfredsp4

Ejecutar como administrador

su

Es una utilidad que permite a los usuarios independientemente administrar la máquina cual root se tratase. Su sintaxis es sudo comando; en el archivo /etc/sudoers encontramos su configuración, que se basa en indicar qué usuarios pueden hacer qué cosas (puede ser configurado mediante el comando visudo).

/etc/sudoers

  • Sintaxis: [usuarios|grupos] [Nombre de servidor]= comandos
  • Tanto los comandos como los usuarios van separados por comas. (Para indicar nombres de grupo pondremos antes un %, por ejemplo: %users).
  • Podemos cambiar tanto usuarios, grupos, comandos por ALL, que significan que son todos los usuarios del sistema o todos los comandos.
  • Si quieres seguir en otra línea, deberás acabar esa línea con \.
  • NOPASSWD : delante de los comandos indica que no tendrá que introducir el password del root.

Ejemplos

peter, %operator ALL= /sbin/, /usr/sbin, /usr/local/apps/check.pl
%operator ALL= NOPASSWD: /sbin/
ALL ALL=NOPASSWD: ALL
  • El primer ejemplo permite a peter y a los usuarios del grupo operator (en todos los servidores) ejecutar con sudo los comandos de: /sbin/, /usr/sbin, /usr/local/apps/check.pl
  • El segundo a los usuarios del grupo operator en todos los servidores y sin necesidad de introducir el password los comandos de /sbin
  • El tercero tal vez sea la peor idea de la larga y triste historia de las malas ideas.

Notas

  • Un grep sudo /var/log/messages te permitirá ver los comandos ejecutados con sudo
  • Si queremos conectar como su a partir de sudo haremos: sudo su.

Configuración de red

ifconfig

El comando ifconfig -a nos dará información de las tarjetas instaladas, la ip que tienen asignada, las IRQs que utilizan, sus puertas de enlace… Pero este comando también nos permite cambiar la ip e indicar una estática: ifconfig <interface de red> <ip> netmask <mascara> up

ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up

Añadir puerta de enlace

route add default gw <ip> <interfaz de red>
route add default gw 192.168.1.1 eth0

Ver tu routing table

netstat -nr

/etc/hosts

Este archivo enlaza IPs con nombres de máquina. Por ejemplo si queremos hacer un ping a “winPC” pondremos: <ip> winPC. Por ejemplo, en mi actual linux tengo:

127.0.0.1       localhost.localdomain   localhost       arturito

De esa forma, cuando voy a localhost o a arturito (por http, ping, telnet…) me lo reconoce como la máquina propia (127.0.0.1 - También llamada interface loopback).

/etc/network/interfaces

Este fichero únicamente existe en distribuciones Debian\Ubuntu. Corresponde a la configuración principal para estas distribuciones de las interfaces de red. Se divide en las siguientes “stanzas”, apartados:

  • auto: Interfaces que se inicializarán cuando se inicialice el sistema
auto eth0
  • mapping: [Mapea la red según un script]
  • iface: Se definen las características de una interface. Para ello se usa la siguiente sintaxis: iface <interface> <protocolo> <tipo de direccionamiento> [características] Donde:
    • Interface corresponde al nombre (eth0, eth1, wlan0…)
    • Protocolo es inet si hablamos de una IP normal, inet6 si es IPv6 o ipx para IPX.
    • El tipo de redireccionamiento: static (estático) o dhcp (por dhcp)
    • Las características se refieren a las direcciones de los distintos elementos: address, netmask, network, broadcast, gateway, dns-nameservers.

Ejemplo para red TCP/IP dada por DHCP:

auto eth0
iface eth0 inet dhcp

Ejemplo para una interface con ip estática:

auto eth1
iface eth1 inet static
        address 216.10.119.240
        netmask 255.255.255.224
        network 216.10.119.224
        broadcast 216.10.119.255
        gateway 216.10.119.241
        dns-nameservers 216.10.119.241

Notas

  • ifup eth0 y ifdown eth0, activan y desactivan (respectivamente) la interface eth0
  • /etc/inetd.conf es el fichero de configuración de servicios de red

Instalación de software

apt

Utilizamos el apt, un sistema de Debian para administrar los paquetes de instalación (.deb). Su sintaxis es la siguiente: apt[-get|-cache…] <opción> <paquete>

  • Instalar: apt-get install paquete
  • Desinstalar: apt-get remove paquete
  • Desinstalación total (hasta archivos de configuración): apt-get –purge remove paquete (fíjate: - - purge)
  • Actualización: apt-get upgrade paquete
  • Acutalización del sistema: apt-get upgrade y apt-get dist-upgrade

apt utiliza el fichero /etc/apt/sources.list para almacenar las direcciones de los paquetes que tiene disponibles y resolver así las dependencias de estos. Cada una de las direcciones apuntan a una carpeta donde existe un archivo override (un indice de los archivos). Por ejemplo:

deb http://192.168.1.2:468/debian/disk1/ sarge contrib

Una vez editado este archivo deberemos hacer un apt-get update para actualizar la caché de instalables registrados.

Para buscar paquetes de instalación o inspeccionar sus características:

  • Buscar: apt-cache search paquete
  • Detalles: apt-cache show paquete
  • Limpiar chaché: apt-get clean

Si queremos reparar\finalizar instalaciones inacabadas:

  • apt-get -f install

dpkg

  • Listar paquetes instalados: dpkg -l
  • Instalar: dpkg -i paquete
  • Eliminar: dpkg -r paquete
  • Eliminar (todo, hasta archivos de configuración): dpkg –purge paquete (fíjate, es: - - purge)
  • Ver qué archivos corresponden a un paquete: dpkg -S paquete
  • Volver a lanzar la aplicación de configuración: dpkg-reconfigure paquete

Otros

  • aptitude es un programa que, de forma más avanzada, también gestiona los archivos instalados.
  • alien es un programa que convierte un archivo .rpm o .tgz a .deb
    • alien -d fichero
    • alien -i fichero - Lo convierte y lo instala.
  • apt-rdepends: Muestra el arbol de dependencias de un paquete.

Programar tareas

Cron

CRON es el daemon (crond) usado para lanzar acciones de forma cronológica.
Para cada usuario existe un fichero de configuración que se encuentra en /var/spool/cron, el global del sistema en /etc/crontab. Puede que los usuarios tengan o no tengan un archivo de cron propio. Esto está indicado en los archivos /etc/cron.allow y /etc/cron.deny, si existe cron.allow los usuarios que estén incluidos en él SI podrán tener archivo de configuración propio, en cambio, si existe cron.deny, los usuarios incluidos NO podrá tener su archivo de configuración propio. Estos archivos no están pensados para que se editen directamente, por lo que hay que usar una orden más adecuada crontab:

  • crontab [ -u usuario ] fichero indica qué fichero especifica cuando se realiza la acción.
  • crontab [ -u usuario ] { -l | -r | -e }, las diferentes opciones que se pueden realizar sobre el fichero.

Si somos root podremos elegir la primera opción, mediante crontab -u usuario podremos modificar los valores del archivo de configuración del usuario escogido.
Cuando hacemos -e estamos creando\editando un archivo de configuración.
Con -r eliminamos el registro del archivo de configuración.
Y -l muestra dicho archivo.

Para generar órdenes de configuración se hace a partir de un archivo en modo texto con 6 columnas:

  1. [Número], el minuto [0-59]
  2. [Número], la hora [0-23]
  3. [Número], el día del mes [1-31]
  4. [Número], el mes [1-12]
  5. [Número], el día de la semana [0-7] (El 0 y el 7 son el domingo)
  6. [Ruta], la dirección del script que se ejecutará

En los números podemos indicar un * que significa “todos los posibles”.
Es decir, una vez tubiesemos el archivo ya creado utilizariamos el comando crontab <archivo> para que se registrase.

Podremos poner un sólo valor para indicar un valor fijo, una lista de valores separados por comas, un rango: dos números separados por guión. O un */num para indicar “cada x tiempo”:

0 0 * * *       <script> # Ejecutado a las 12 de cada día
30 6 */2 * *    <script> # Cada dos días a las 12:30
*/10 * * * 1    <script> # Cada lunes cada 10 minutos
0 * * * 1-5     <script> # De lunes a viernes, a la hora en punto
0 2 1 * * /var/bckscripts/bckwapps_m > /var/bckscripts/m_wapps.log # Cada primer dia de mes a las 2 de la mañana, la salida del script se guardará en un archivo

También existen carpetas que ejecutan en las que los archivos ejectuables que hay ahí se ejecutan cada x tiempo. /etc/cron.hourly (cada hora), /etc/cron.dail (cada día), /etc/cron.weekly (cada semana) y /etc/cron.monthly (cada mes).

atd

Utilizado para que, en un instante concreto, se lance una instrucción.

Notas

  • Para cambiar el editor por defecto del crontab -e haremos:
export EDITOR=vi 

El inicio de Linux y sus demonios

Inicio del sistema

El arranque del operativo, tras el inicio del hardware, carga siempre los siguientes elementos y en el siguiente orden:

  1. BIOS
  2. MBR
  3. BootLoader
  4. Kernel
  5. init

La BIOS y el MBR

Una vez la máquina arranca se carga en memoria la BIOS, esta gestiona al nivel más bajo todos los periféricos y busca el dispositivo adecuado para iniciar el sistema (diskette, CD-ROM, HD…). Si puede, carga el programa que reside en el primer sector del dispositivo (MBR), este es de 512 bytes y contiene instrucciones para el arranque del sistema (bootloader); una vez cargado el control del arranque pasa a ser suyo.

El bootloader

En Linux los dos bootloaders más utilizados son el LILO y el GRUB. Un bootloader se divide en dos fases, la primera consiste únicamente en la carga de la segunda, las instrucciones para ello son las que carga el MBR y una vez localizada la segunda parte del bootloader se carga y comenzará la gestión.
Para que el bootloader pueda cargar el kernel ha de tenerlo localizado, generalmente es un binario del directorio /boot denominado vmlinuz-version. Y antes de cargarlo necesita, también, lanzar el initrd (initial RAM disk), una herramienta que necesitará el propio kernel.

El kernel

Una vez la imágen del initrd ha sido cargada en memoria vuelca sobre esta los drivers necesarios; configura la memoria, procesadores, sistemas de I/O…; e inicializa los dispositivos de almacenaje para cargar el sistema de ficheros. Luego libera el espacio ocupado por el initrd.
El el dispositivo con la raíz del sistema y libera la memoria en desuso.
Una vez llegados a este punto el kernel ya es operativo, pero no ha cargado ningún programa ni nada para poder decir que hace algo significativo. Entonces, lo que hace, es lanzar el /sbin/init.

El /sbin/init

El init se encarga de configurar el entorno del sistema para la interacción con el usuario. Es el primer proceso que se carga en la máquina y sobre este se cargarán los demás.
Lo primero que el init hace es cargar los scripts del /etc/rc.d, estos configuran el relog del sistema, el puerto serie… Luego lanza el script /etc/inittab, este define como el sistema actúa frente a cada nivel de ejecución y lanza el nivel por defecto.
Lo siguiente que hace es ejecutar los scripts localizados en /etc/rc.d/init.d/, estos son una serie de programas que se lanzan según el nivel cargado; para definir los programas para cada nivel existen dentro de esta ruta unos directorios con nombre rcX.d, donde X es el nivel de ejcución concreto, y en ellos existen enlaces a los scripts de /etc/rc.d/init.d/ (por ejemplo, las referencias a los scripts que se cargan en el nivel de ejecución 5 estarán localizadas en /etc/rc.d/rc5.d). Los nombres de cada enlace comienzan por S (si son programas que se lanzarán al inicio del nivel) o por K (programas que se lanzarán cuando se cierre ese nivel). Tras la S o la K los nombres de los enlaces contienen un número, ese número es el orden que se usará para elegir qué script se ejecutará primero.
Cuando un script\programa localizado en /etc/rc.d/init.d/ se lanza al principio de un nivel de ejecución se hace utilizando el parámetro start y cuando se lanza al finalizar dicho nivel se utiliza el parámetro stop. Esto significa que nosotros también podríamos relanzar o parar estos ejecutables una vez iniciado el sistema haciendo una llamada del estilo: /etc/rc.d/httpd stop.
Podemos también cerciorarnos del estado de un programa que esté en /etc/rc.d/init.d/ llamandolo con el parámetro status.
En el nivel de ejecución 5 se lanza el /etc/X11/prefdm, este ejecuta el gdm, el kdm, o el xdm que son los manejadores del sistema gráfico X de linux y su configuración en /etc/sysconfig/desktop.

Módulos

  • Para mostrar los módulos cargados en el sistema haremos: lsmod

Scripts de inicio en Debian

Debian lanza también el programa init al iniciar el sistema, el archivo que configura este es /etc/inittab. Luego se ejecutan los scripts que hay en /etc/init.d, pero no directamente, utiliza para ellos los enlaces existentes en /etc/rcX.d (donde X es el nivel de init que arranca).
Los nombres de los enlaces en /etc/rcX.d empiezan por 'S' o 'K' según sean de entrado o de salida en el nivel de init respectivamente y el orden en el que se ejecutarán será dado por un número que sigue a esta letra (mientras más pequeño sea dicho número, antes será ejecutado); luego, tras la letra y el número viene el nombre del script original. Cuando un script 'S' es llamado se le pasa como parámetro start, cuando lo es un 'K' se pasará un stop.
Para facilitar esto Debian proporciona un comando llamada update-rc.d, este funciona usando un script existente en /etc/init.d. Se llama a update-rc.d seguido del nombre del script y de una opción, si por ejemplo esta opción es defaults pondrá el link para iniciarlo en los niveles 2 a 5 (los usados al iniciar la máquina) y para detenerlo en 0 y 1 (los usados al parar la máquina).

update-rc.d myScript defaults

Como...

  • …Saber el nivel de ejecución por defecto? En el /etc/inittab encontrarás línias parecidas a la siguiente, la que indique initdefault será la que corresponda al nivel por defecto.
id:5:initdefault:

* …Saber el nivel de ejecución actual? Lanzando el comando runlevel.

Otros

Control del tiempo

A parte del comando date, que te devuelve la hora actual hay pequeñas cosas que debemos saber respecto al manejo del tiempo en Linux…

Sincronizar el reloj

Podemos sincronizar el reloj de nuestro sistema con el de un servidor NTP, de esos que te indican la hora actual exacta. Para ello existe el comando ntpdate, su sintaxis: ntpdate -u <servidor>. Servidores que pueden servirnos: swisstime.ethz.ch, hora.uv.es o gong.uv.es.

sistema/linux/howto.1274291853.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)