Herramientas de usuario

Herramientas del sitio


sistema:linux:howto

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
sistema:linux:howto [2010/05/19 17:53]
alfred
sistema:linux:howto [2020/05/09 09:25] (actual)
Línea 1: Línea 1:
-====== Sistema Linux ======+====== Sistema Linux (old) ======
  
  
-===== Gestión de usuarios y grupos ​=====+===== mount & fstab ===== 
 +El fichero ///​etc/​fstab//​ es un archivo de texto que se lee al inicio del sistema, en él se indican los dispositivos de disco que se montarán al cargar. Este dispositivo puede ser desde un pendrive, pasando por un CD-ROM hasta una partición en red. 
  
  
Línea 8: Línea 9:
  
  
 +==== Mount ====
 +Antes de explicar el fstab es básico entender el **mount**; al llamar a este comando lo primero que se indica es el tipo (ext3, cifs, vfat, usbfs...), para indicar el tipo pondremos **-t** pero podemos ​ dejar esto por defecto sin poner nada, indicaremos también dónde se encuentra el elemento a montar y luego el punto de montaje (donde se montará), de esa forma los archivos que en él se encuentran pasarán a estar (también) en el punto de montaje:
 +<​code>​
 +mount -t vfat /dev/hda4 /windows/c
 +</​code>​
 +Puedes indicar opciones adicionales,​ estas son las mismas que son indicadas en el fstab. Para indicarlas tendrás que usar **-o** seguido de estas opciones y, si hay varias, separarlas por comas. \\ 
 +El comando mount por si solo muestra información de lo montado actualmente.
 +  * [[sistema:​linux:​samba#​montar_carpetas_compartidas|Montar carpetas compartidas]]
 +  * [[sistema:​linux:​notas#​montar_una_iso|Montar una iso]]
  
  
-==== 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 
  
  
Línea 40: Línea 27:
  
  
-==== Gestión de permisos ​==== +==== Formato del fstab ==== 
-Comandos+El formato es el siguiente\\  
-  * **chown usuario fichero\directorio** Cambia ​de propietario el fichero o directorio +**<sistema de ficheros>​ <punto de montaje> <​tipo>​ <​opciones>​ 0 0**  \\  
-    * -R para un árbol de directorios +Sistema ​de ficheros, punto de montaje ya los hemos visto antes, los dos ceros finales tienen un significado,​ pero no profundizaremos en él. Veamos las opciones: 
-  * **chgroup grupo fichero\directorio** Cambia de grupo el fichero o directorio +  **rw** Es posible leer y escribir (read-write) 
-  * **chmod modo fichero\directorio** Cambia los permisos ​de un fichero\directorio +  * **ro** Sólo lectura (read only) 
-    -r Hace el cambio para todo el árbol de directorios +  * **exec** Permite la ejecución ​de ejecutables 
-    El //​modo// ​se refiere a qué permisos ​se darán; generalmente se dan de forma octal3 números octales del 0 al 7Uno de estos tres números es como un binario del 000 (0al 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 ​tercero ​de ejecuciónY estos octales ​se dan (primero) ​usuario, ​(segundo) grupo, (tercero) otros+  **noexec** Impide ejecutar 
-    El //modo// también puede indicarse cómo +r+w+x o -r-w-xsi se quiere (+) dar (lecturaescritura o ejecución) o quitar (-)+  * **auto** Se indica que se inicie junto con el sistema 
-<​code>​chmod 777 fichero -> dá todos los permisos al fichero (111 111 111) +  **noauto** Para que no se monte al inicio sino cuando ​se va a usar (disketerascds...)
-chmod 700 fichero -> dá todos los permisos al usuarioa los demás nada (111 000 000) +  * **users** Permite a los usuarios del sistema montar\desmontar sin ser root. 
-chmod 760 fichero -> dá todos los permisos al usuarioal grupo todos excepto ejecución y ninguno a los demás (111 110 000) +  * **uid** y **gid** Indica ​el nombre ​de usuario ​y de grupo para quien se montará el dispositivo. 
-chmod 655 fichero -> dá todos los permisos al usuario excepto el de ejecuciónal grupo y a los demás permite leer y ejecutar.+  * **pass** y **user** Password y usuario si el dispositivo los necesita 
 +  * **credentials** archivo externo donde se guardan nombre de usuario ​y password del dispositivode forma externa
 +  **fmask** y **dmask** 3 valores octales para indicar los permisos de ficheros y directorios. 
 +  * Si no se indica nada o se indica **defaults** se darán las opciones por defecto: ​//rw,suid,dev,exec,auto,nouser//. 
 + 
 +==== Montar automáticamente discos USB ==== 
 +Existe una aplicación denominada [[http://​usbmount.alioth.debian.org/​|usbmount]],​ esta permite que al insertar un disco usb este se monte automáticamente en el sistema. \\  
 +Monta los discos automáticamente en ''/​media/​usb0''​''/​media/​usb1''​... \\  
 +La configuración se encuentra en ''/​etc/​usbmount/​usbmount.conf''​. 
 + 
 +==== Ejemplos ==== 
 +<​code>​ 
 +//​oz/​WWW /​mnt/​www smbfs credentials=/​etc/​cred,gid=disknet,fmask=770,dmask=770 0 0
 </​code>​ </​code>​
 +Este ejemplo monta en /mnt/WWW un sistema de red, recogiendo los datos de '​logueo'​ para este de /etc/cred, montandolo para el grupo disknet y dando unos permisos de 770 para los ficheros contenidos en este y de 770, también, para los directorios.
 +<​code>​
 +/​dev/​hda1 ​ /​windows/​C ​ ntfs-3g ​    ​user,​users,​gid=users,​umask=0002 ​ 0 0
 +</​code>​
 +Este ejemplo monta en /windows/C una partición ntfs permitiendo la lectura y escritura (esto es gracias al ''​driver''​ ntfs-3g).
  
-==== Notas ==== +===== Samba ===== 
-  * Para crear un usuario sin shell ni directorio:+  * 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 ===
 <​code>​ <​code>​
-adduser smbadmin --shell ​/sbin/nologin --no-create-home+[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
 </​code>​ </​code>​
  
-===== 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 ==== +==== Montar carpetas compartidas ​==== 
-  Un ''​grep sudo /​var/​log/​messages''​ te permitirá ver los comandos ejecutados con sudo +Para poder hacer esto necesitamos tener instalado el paquete ​**smbfs**, luego, para desmontar podemos usar de igual manera el **umount**.
-  ​Si queremos conectar como ''​su''​ a partir ​de ''​sudo''​ haremos: ''​sudo su''​.+
  
 +El paquete nos instala un nuevo comando: //​smbmount//​ que es el que nos permite montar mediante la siguiente sintaxis: ​
 +  * **<​nowiki>​smbmount //​192.168.1.2/​Downloads /mnt -o password=hola</​nowiki>​**.
 +  * **<​nowiki>​smbmount //​192.168.1.2/​Downloads /mnt -o passwd=hola</​nowiki>​**.
  
-===== Configuración de red =====+Aunque también nos permite añadir (o utilizar en el archivo fstab) un nuevo tipo: el //​smbfs//​. 
 +  * **<​nowiki>​mount -t smbfs -o password=hola //​192.168.1.2/​Downloads /​mnt</​nowiki>​**
  
-==== ifconfig ==== +Luegocon hacer //umount ​/mnt// ya estaría desmontada.
-El comando ''​ifconfig -a''​ nos dará información de las tarjetas instaladasla 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 ==== +Para **montar al iniciar el sistema** tendremos que añadir una línea al ///​etc/​fstab//:​ 
-  route add default gw <ip> <​interfaz de red+<code
-  route add default gw 192.168.1.1 eth0+//192.168.1.2/​Downloads ​   /​mnt/​smb ​   smbfs     ​credentials=/​etc/​cred 0 0 
 +</​code>​ 
 +Y, por lo tanto en este caso, crear el fichero /etc/cred con lo siguiente:​ 
 +<​code>​ 
 +username = alfred 
 +password = alfredspass 
 +</​code>​
  
-==== 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 +=== CIFS === 
-<​code>​auto eth0</​code>​ +A dia de hoy el //smbfs// parece estar en desuso, ​para montar una carpeta ​de red utilizaremos ​el ''​Common Internet File System''​: **cifs**. \\  
-  * **mapping**[Mapea la red según un script] +La utilización ​de este es idéntica ​la del smbfs; también necesitaremos tener instalados los paquetes ​de samba\\
-  ​* **iface**: Se definen las características de una interfacePara 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 ​las direcciones ​de los distintos elementos: //​address//,​ //​netmask//,​ //​network//,​ //​broadcast//,​ //​gateway//,​ //​dns-nameservers//​. +
-Ejemplo para red TCP/IP dada por DHCP:+
 <​code>​ <​code>​
-auto eth0 +mount -k cifs //​192.168.1.10/​APPS /mnt 
-iface eth0 inet dhcp+mount.cifs //​192.168.1.10/​WWW /mnt -o credentials=/​cred 
 +mount.cifs //oz/WWW /​home/​alfred/​public_html -o uid=alfred,​pass=thepass
 </​code>​ </​code>​
-Ejemplo ​para una interface con ip estática:+ 
 + 
 +==== SWAT ==== 
 +Es una interfaz web para configurar SAMBA de una forma gráfica. 
 + 
 + 
 + 
 +=== Instalar ===
 <​code>​ <​code>​
-auto eth1 +apt-get install swat
-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+
 </​code>​ </​code>​
 +Reiniciamos máquina. ​
  
  
-==== 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 ==== +=== Acceder ​=== 
-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>// +<​code>​ 
-  * Instalar: **apt-get install paquete** +http://<ip>:901 
-  * Desinstalar:​ **apt-get remove paquete** +</code
-  * Desinstalación total (hasta archivos ​de configuración):​ **apt-get --purge remove paquete** (//fíjate: - - purge//) +El nombre ​de usuario ​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''​.
-  * Actualización:​ **apt-get upgrade paquete** +
-  * Acutalización del sistema: **apt-get upgrade** ​**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** 
  
 +==== Como... ====
 +=== Añadir una carpeta compartida ===
 +  - Vamos al menú ''​Shares''​.
 +  - Creamos el //share// que queremos, el nombre que pongamos será con el que se comparta.
 +  - En //path// indicamos la ruta de la carpeta.
 +  - Indicamos "//​available//",​ "//​guest ok//" y "//​browsable//"​ como //yes//.
 +La carpeta tendrá que tener los siguientes permisos:
 +<​code>​
 +chown nobody:​nogroup smbtest/
 +chmod 555 smbtest
 +</​code>​
 +O si queremos que también sea modificable:​
 +<​code>​
 +chmod 755 smbtest
 +</​code>​
  
-==== 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. 
  
  
  
 +===== El inicio de Linux y sus demonios =====
  
-===== Programar tareas ===== 
  
 +==== Inicio del sistema ====
 +El arranque del operativo, tras el inicio del hardware, carga siempre los siguientes elementos y en el siguiente orden:
 +  - BIOS
 +  - MBR
 +  - BootLoader
 +  - Kernel
 +  - 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.
  
-==== 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ónmediante //crontab -u usuario// podremos modificar los valores ​del archivo de configuración del usuario escogido. \\  +=== El bootloader === 
-Cuando hacemos -e estamos creando\editando ​un archivo de configuración. \\  +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 segundalas 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. \\  
-Con -r eliminamos el registro del archivo de configuració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.
--l muestra dicho archivo\\ \\ +
  
-Para generar órdenes de configuración se hace a partir de un archivo en modo texto con 6 columnas: +=== El kernel === 
-  - ''​[Número],​ el minuto [0-59]''​ +Una vez la imágen ​del ''​initrd'' ​ha sido cargada en memoria vuelca sobre esta los drivers necesarios; configura la memoriaprocesadoressistemas de I/O...; e inicializa los dispositivos de almacenaje para cargar ​el sistema ​de ficheros. Luego libera ​el espacio ocupado por el ''​initrd''​. \\  
-  - ''​[Número], ​la hora [0-23]''​ +El el dispositivo con la raíz del sistema y libera la memoria en desuso. \\  
-  - ''​[Número],​ el día del mes [1-31]''​ +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''​.
-  - ''​[Número]el mes [1-12]''​ +
-  - ''​[Número], el día de la semana [0-7] (El 0 y el 7 son el domingo)''​ +
-  - ''​[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":​ 
-<​code>​ 
-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 
-</​code>​ 
  
-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:+=== 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). 
 +<​code>​update-rc.d myScript defaults</​code>​ 
 + 
 + 
 +==== 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.
 <​code>​ <​code>​
-export EDITOR=vi ​+id:​5:​initdefault:​
 </​code>​ </​code>​
 + * **...Saber el nivel de ejecución actual?** Lanzando el comando ''​runlevel''​.
 +
 +
 +====== El kernel ======
 +==== Básico ====
 +
 +
 +
 +=== LKM y /proc ===
 +Uno de los métodos para interactuar con el kernel de linux es el directorio ''/​proc'',​ en él se encuentran ficheros virtuales que representan los dispositivos instalados (cpuinfo, pci...) o los procesos en ejecución (subdirectorios que como nombre tienen números). Algunos de estos ficheros pueden ser editados y de esa forma cambian el parámetro concreto del kernel. \\ \\ 
 +Los LKM (Loadable Kernel Modules) son una forma dinámica de añadir y eliminar código del kernel de linux; si los elementos del kernel (como por ejemplo los drivers) se compilasen dentro del kernel ocuparían memoria aunque no fuesen usados, en cambio, si se compilan como módulos se irán cargando a medida que vayan usándose. \\ \\ 
 +** Creando un LKM **
 +
 +
 +=== sysctl ===
  
  
 ===== Otros ===== ===== Otros =====
 +
 +
 ==== Control del tiempo ==== ==== 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... 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 === === 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. 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.
 +==== rsync ====
 +Copia ficheros de forma incremental (sólo enviando las diferencias). Sintaxis:
 +<​code>​
 +rsync [opciones] origen destino
 +</​code>​
 +Opciones:
 +  * -n: Probar, no realiza nada solo muestra el resultado.
 +  * -a: Modo archivo. Respeta todos los permisos y propiedad del archivo. Igual que si se usaran los parámetros -rlptDg
 +  * -r: Recursivo
 +  * -l: Conservar los enlaces
 +  * -p: Conservar los permisos
 +  * -t: Conservar la fecha/hora
 +  * -g: Conservar el grupo
 +  * -D: Conservar los dispositivos (solamente con usuario root)
 +  * -v: Modo verboso (que es lo mismo que --verbose), para mayor verbosidad usar -vv
 +  * -z: Comprimir en caso de que lo acepte el servidor (que es lo mismo que <​nowiki>​--compress</​nowiki>​)
 +  * -C: Ignora archivos como hace CVS.
 +  * -u: Modo update, mantiene archivo en el destino si es posterior.
 +  * -b: backup renombrar archivos existentes a extensión.
 +  * <​nowiki>​--exclude "​*.bak"</​nowiki>:​ Excluye los archivos *.bak
 +  * <​nowiki>​--delete</​nowiki>:​ Elimina los ficheros en el destino que se han eliminado en el origen
 +Por ejemplo:
 +<​code>​
 +rsync -a --delete --exclude "​*bak"​ --exclude "​*~"​ /www/* /backup
 +</​code>​
  
 +
 +
 +==== Notas ====
 +{{ sistema:​linux:​shell-commands.gif?​95 |Quick Info Sheet}}
sistema/linux/howto.1274291602.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)