NDG Linux Unhatched - NDG Linux Unhatched - Español (Notes)

Propiedades de archivos

Los usuarios poseen los archivos que crean. Mientras que esta propiedad puede cambiarse, esta función requiere privilegios administrativos. Aunque la mayoría de los comandos generalmente muestran al usuario propietario como un nombre, el sistema operativo en realidad asociará la propiedad del usuario con el UID para ese nombre de usuario. Cada archivo también tiene un grupo propietario.

Primer valor para un archivo

Símbolo Tipo de archivo Descripción
d directorio Un archivo usado para contener otros archivos.
- archivo ordinario Incluye archivos leíbles, imágenes, archivos binarios, y archivos comprimidos.
l enlaces simbólicos Apunta a otro archivo.
s socket Permite la comunicación entre procesos.
p tubería (pipe) Permite la comunicación entre procesos.
b archivo bloque Usado para comunicaciones con el equipo (hardware).
c archivo carácter Usado para comunicaciones con el equipo (hardware)

Permisos

- rw-r--r-- 1 sysadmin sysadmin 647 Dec 20 2017 hello.sh

Propietatio

-rw- r--r-- 1 sysadmin sysadmin 647 Dec 20 2017 hello.sh

El primer grupo se refiere al usuario que posee el archivo. Si su cuenta actual es la propietaria del archivo, se usará el primer grupo de permisos y los demás permisos no tendrán efecto.

Grupo

-rw- r--r-- 1 sysadmin sysadmin 647 Dec 20 2017 hello.sh

El segundo conjunto se refiere al grupo que posee el archivo. Si su cuenta actual no es la del propietario del archivo pero es miembro del grupo que posee el archivo, se aplicarán los permisos del grupo y los demás permisos no tendrán efecto.

Otros

-rw- r--r-- 1 sysadmin sysadmin 647 Dec 20 2017 hello.sh

El último grupo es para todos los demás, cualquiera a quien los dos primeros conjuntos de permisos no sean aplicables. Si no es el usuario que posee el archivo o un miembro del grupo que posee el archivo, se le aplicará el tercer conjunto de permisos.

Tipos de permisos

Tipos de permisos Un archivo o directorio puede presentar tres permisos diferentes: leer, escribir y ejecutar. La forma en que se aplican estos permisos difiere entre archivos y directorios, como se muestra en la tabla siguiente:

Permiso Efectos sobre los Archivos Efectos sobre los Directorios
leer (read) (r) Permite que el contenido del archivo sea leído o copiado. Sin el permiso para ejecutar, permite obtener un listado poco detallado de los archivos que contiene el directorio. Con el permiso para ejecutar, ls -l proporciona un listado detallado de archivos.
escribir (write) (w) Permite modificar o reescribir el contenido del archivo. Permite añadir o eliminar archivos en un directorio. Para que este permiso funcione, el directorio debe tener permiso para ejecutar.
ejecutar (execute) (x) Permite que un archivo funcione como un proceso, aunque archivos script también requerirán el permiso leer (read). Permite que el usuario se traslade del directorio si en el directorio padre también posee permiso escribir (write).

Comando chmod - Cambio de acceso a archivos

El método simbólico y el método octal. El método simbólico es útil para cambiar un conjunto de permisos a la misma vez. El método octal o numérico requiere conocer el valor octal de cada uno de los permisos y requiere que los tres conjuntos de permisos (usuario, grupo, otros) se especifiquen cada vez.

chmod [<COJUNTO DE PERMISOS><ACCIÓN><PERMISOS>]... ARCHIVO

El método simbólico

Conjunto de permisos

Símbolo Significado
u Usuario: El usuario propietario del archivo.
g Grupo: El grupo propietario del archivo.
o Otros: Cualquier otro que no sea el usuario propietario o un miembro del grupo propietario.
a Todos: Se refiere al usuario, grupo, y todos los demás.

Acción

Símbolo Significado
+ Añadir permiso, si es necesario
= Especificar el permiso exacto
- Eliminar el permiso, si es necesario

Más detalles de permisos de archivos y directorios

ls -l /etc/passwd -rw-r--r--. 1 root root 4135 May 27 21:08 /etc/passwd
Caracter Tipo de Archivo
- Un archivo normal que puede estar vacío, contener texto o datos binarios.
d Un archivo de directorio que contiene los nombres de otros archivos y enlaces a los mismos.
l Un enlace simbólico es un nombre de archivo que hace referencia (apunta) a otro archivo.
b Un archivo de bloque es el que se refiere a un dispositivo de hardware de bloque donde los datos se leen en bloques de datos.
c Un archivo de caracteres es aquel que se refiere a un dispositivo de hardware de caracteres, donde se leen los datos un byte a la vez.
p Una archivo «pipe» funciona de forma similar al símbolo de barra vertical, lo que permite a la salida de un proceso comunicarse con otro proceso por el archivo «pipe», donde se utiliza la salida de un proceso como entrada para el otro proceso.
s Un archivo de socket permite que se comuniquen dos procesos, donde se permite a ambos procesos enviar o recibir datos.

Los permisos establecidos en estos archivos determinan el nivel de acceso que un usuario va a tener en el archivo.

Permiso Significado relacionado a un archivo Significado relacionado a un directorio
r El proceso puede leer el contenido del archivo, es decir, los contenidos se pueden ver y copiar. Los nombres de archivo en el directorio se pueden enumerar, pero otros detalles no están disponibles.
w El proceso puede escribir en este archivo, por lo que los cambios se pueden guardar. Ten en cuenta que el permiso w realmente requiere el permiso r en un archivo para que funcione correctamente. Los archivos se pueden agregar a un directorio o quitar del mismo. Ten en cuenta que el permiso w requiere el permiso x en el directorio para que funcione correctamente.
x El archivo se puede ejecutar o correr como un proceso. El usuario puede utilizar el comando cd para «entrar» al directorio y utilizar el directorio en una ruta de acceso para acceder a los archivos y, potencialmente, a los subdirectorios de este directorio.

Cambio de propietario - Comando chown

Inicialmente, el propietario de un archivo es el usuario que lo crea. El comando chown se utiliza para cambiar el propietario de los archivos y directorios. Cambiar el usuario propietario requiere acceso administrativo. Un usuario ordinario no puede utilizar este comando para cambiar el usuario propietario de un archivo, ni tan solo para otorgar propiedad de uno de sus propios archivos a otro usuario. Sin embargo, el comando chown permite cambiar el grupo propietario, lo cual puede ser realizado por el usuario root o el propietario del archivo.

chown [OPCIONES] [PROPIETARIO] ARCHIVO

Se puede hacer el cambio del usuario, grupo o ambos

Solo el cambio del propietario al archivo

chown ted abc.txt

Solo cambia tanto el usario como el grupo

chown user:group /path/to/file chown user.group /path/to/file

Cambia solo el grupo

chown :group /path/to/file chown .group /path/to/file

Método simbolico chmod

chmod nuevo_permiso nombre_de_archivo

Cuando se especifica el nuevo_permiso, comienzas por utilizar uno de los caracteres siguientes para indicar qué conjunto de permisos quieres cambiar:

Debe especificar un + para agregar un permiso o un - para quitar un permiso. Por último, especifica r para la lectura w para escritura y x para ejecución.

Podrías utilizar el carácter = en lugar de - o + para especificar exactamente los permisos que quieres para un conjunto de permisos

Ejemplos:

chmod u+r abc.txt chmod ug+r,o-w abc.txt chmod u=r-x abc.txt # al usario se le agrega read se quita write y de agrega exec, es una forma representativa a como se enlistan los permisos

Método númerico chmod

Número Significado
4 read (leer)
2 write (escribir)
1 execute (ejecutar)

Usando una combinación de números del 0 al 7, cualquier combinación de permisos posible para leer, escribir y ejecutar se pueden especificar por un conjunto de permisos individuales.

Valor Equivalencia
7 rwx
6 rw-
5 r-x
4 r--
3 -wx
2 -w-
1 --x
0 ---
chmod 754 abc.tx # rwxr-xr-

Comando umask

El comando umask es una característica que se utiliza para determinar los permisos predeterminados establecidos al crear un archivo o directorio. Los permisos predeterminados se determinan cuando el valor de umask se resta de los permisos máximos predeterminados permisibles. Los permisos máximos por defecto son diferentes para los archivos y para los directorios:

Tipo Permisos
archivo rw-rw-rw-
directorios rwxrwxrwx

Al ejercutar el comando

Usuarios normales

umask 0002

Como root

umask 0022

Para entender cómo funciona umask, supongamos que umask se establece en 027 y consideremos lo siguiente:

Significado Valor
File Default (valor predeterminado) 667
Umask -027
Resultado 640

La umask 027 significa que, por defecto los archivos nuevos recibirían los permisos 640 o rw-r----- tal como se demuestra a continuación:

umask 027 touch sample ls -l sample -rw-r-----. 1 sysadmin sysadmin 0 Oct 28 20:14 sample

Debido a que los permisos predeterminados para los directorios son diferentes que para los archivos, una umask 027 daría lugar a diferentes permisos iniciales sobre los nuevos directorios:

Significado Valor
Directory Default (valor predeterminado) 777
Umask -027
Resultado 750

La umask 027 significa que, por defecto los directorios nuevos recibirían los permisos 750 o rwxr-x----- tal como se demuestra a continuación:

umask 027 mkdir test-dir ls -ld test-dir drwxr-x---. 1 sysadmin sysadmin 4096 Oct 28 20:25 test-dir

Cambiar permanentemente la umask requiere la modificación del archivo .bashrc que se encuentra en el directorio home del usuario.

Permisos especiales setuid setgid Sticky Bit

El Permiso setuid

Cuando el permiso setuid se encuentra en un archivo binario ejecutable (un programa), el archivo binario se «ejecuta como» el propietario del archivo, no como el usuario que lo ejecuta. Este permiso se establece en una cierta cantidad de utilidades del sistema para que puedan ser manejados por los usuarios normales, pero ejecutados con los permisos root, proporcionando acceso a los archivos del sistema a los que el usuario normal normalmente no tiene acceso.

Ejecutar el permiso setuid

chmod u+s file
ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 31768 Jan 28 2010 /usr/bin/passwd

Para agregar el permiso setuid numéricamente, agrega 4000

chmod 4775 file

Retirar el permiso de sertuid

chmod u-s file

o

chmod 0775 file

El Permiso setgid en un Archivo

El permiso setgid es similar a setuid, pero hace uso de los permisos del grupo propietario. En realidad, hay dos formas de permisos setgid: setgid en un archivo y setgid en un directorio. Cómo funciona el setgid depende de si se establece en un archivo o un directorio.

Permite que un usuario ejecute un archivo binario ejecutable proporcionando un acceso adicional (temporal) de grupo.

El comando wall puede ejecutar y mandar datos al grupo tty gracias a que tiene setgid. Esto no sería posible dado que las terminales tty? no permite que otros accedan a escribir.

ls -l /usr/bin/wall -rwxr-sr-x. 1 root tty 10996 Jul 19 2011 /usr/bin/wall
ls -l /dev/tty? crw-------. 1 root tty 4, 0 Mar 29 2013 /dev/tty0 crw--w----. 1 root tty 4, 1 Oct 21 19:57 /dev/tty1 #solo a lo que pertenencen al mismo grupo pueden escribir

El Permiso setgid en un Directorio

Cuando se establece en un directorio, setgid hace que los archivos creados en el directorio automáticamente sean propiedad del grupo que posee el directorio. Esto es contrario a cómo funcionaría normalmente la propiedad de grupo de un archivo nuevo, ya que por defecto los archivos nuevos son propiedad del grupo primario del usuario que creó el archivo

Configurar el permiso setgid, agregar y quitar

chmod g+s <archivo|directorio> chmod g-s <archivo|directorio>

Para retirar el permiso setgid numéricamente, resta 2000 de los permisos existentes del archivo:

chmod 2775 <archivo|directorio> chmod 0775 <archivo|directorio>

Entonces, ¿Por qué el administrador configuraría un directorio setgid? En primer lugar, ten en cuenta las siguientes cuentas de usuario:

Estos tres usuarios necesitan trabajar en un proyecto conjunto. Se acercan al administrador para solicitar un directorio compartido en el que puedan trabajar juntos, pero que nadie más pueda acceder a sus archivos. El administrador hace lo siguiente:

Otorga al directorio /home/team los siguientes permisos: rwxrwx--- Como resultado, bob, sue y tim pueden acceder al directorio /home/team y agregar archivos. Sin embargo, hay un problema potencial: cuando bob crea un archivo en el directorio /home/team, los detalles del nuevo archivo se ven así:

-rw-r-----. 1 bob payroll 100 Oct 30 23:21 /home/team/file.txt

Desafortunadamente, mientras sue y tim pueden acceder al directorio /home/team, no pueden hacer nada con el archivo de bob. Sus permisos para ese archivo son los permisos de «otros» (---).

Si el administrador estableciera el permiso setgid al directorio /home/team, entonces, cuando bob crea el archivo, se vería de la siguiente manera:

-rw-r-----. 1 bob team 100 Oct 30 23:21 /home/team/file.txt

Y como resultado, sue y tim tendrían acceso de grupo al archivo (r--).

Ciertamente, bob podría cambiar la propiedad de grupo después de crear el archivo (o cambiar los permisos de «otros»), pero esto sería tedioso si se crearan muchos archivos nuevos. El permiso setgid hace que sea más fácil esta situación.

Una s minúscula significa tanto los permisos de ejecución de setgid como los de grupo están establecidos. Una Smayúscula significa que sólo el permiso setgid está establecido y no el permiso de ejecución del grupo: drwxrwSr-x.

Si ves una S mayúscula en la posición de ejecución del grupo, esto indica que, aunque se haya establecido el permiso setgid, en realidad no está realmente en efecto debido a que el grupo carece de los permisos de ejecución para utilizarlo.

El Permiso Sticky Bit

El permiso sticky bit se utiliza para evitar que otros usuarios eliminen los archivos de los que no son dueños en un directorio compartido.

El permiso sticky bit permite que los archivos se puedan compartir con otros usuarios, cambiando el permiso de escritura en el directorio para que los usuarios aún puedan añadir y eliminar los archivos del directorio, pero los archivos sólo pueden ser borrados por el propietario del archivo o el usuario root.

Agregar y quitar el permiso Sticky Bit

chmod o+t <directorio> chmod o-t <directorio>

Para retirar el permiso sticky bit numéricamente, resta 1000 de los permisos existentes del directorio:

chmod 1775 <archivo|directorio> chmod 0775 <directorio>

Una t minúscula significa que tanto el permiso sticky bit como los permisos de ejecución están establecidos para «otros». Una T mayúscula significa que sólo el permiso sticky bit está establecido: drwxrwxrwT.

Mientras la S mayúscula indica un problema con los permisos setuid o setgid, una T mayúscula no indica necesariamente un problema, siempre y cuando el grupo propietario aún tenga permiso de ejecución.

Enlaces Físicos (duros) y los Enlaces Simbólicos (blandos)

Cada método de enlace, físico o simbólico, resulta en el mismo acceso global, pero utilizan diferentes técnicas. Existen ventajas y desventajas de cada método, por lo que conocer ambas técnicas y cuando se usan es importante.

Vínculos Físicos

Por cada archivo creado, hay un bloque de datos en el sistema de archivos que almacena la información meta del archivo. La información meta incluye información sobre el archivo, tal como los permisos, propiedades y marcas de tiempo. Información meta no incluye el nombre del archivo o el contenido del archivo, pero sí incluye casi toda la demás información sobre el archivo.

A esta información meta se le llama la tabla de inodos del archivo. La tabla de inodos también incluye punteros a otros bloques en el sistema de archivos llamados bloques de datos donde se almacenan los datos.

Cada archivo en una partición tiene un número de identificación único llamado número de inodo. La tabla de inodos no incluye el nombre del archivo.

Los enlaces físicos es que no se pueden crear en directorios.

Archivo inode
passwd 123
shadow 175
group 144

Los enlaces físicos son dos nombres de archivo que apuntan al mismo inodo. Por ejemplo, considera las siguientes entradas de directorio:

Archivo inode
passwd 123
mypasswd 123
shadow 175
group 144

Creacion de un enlace fisico

ln [path/file_original] [path/name_link]

Tienen el mismo inode -> 278772, el 2 indica el numero de enlaces que tienen los archivos

ln file.original file.hard.1 ls -li file.* 278772 -rw-rw-r--. 2 sysadmin sysadmin 5 Oct 25 15:53 file.hard.1 278772 -rw-rw-r--. 2 sysadmin sysadmin 5 Oct 25 15:53 file.original

Enlaces Simbólicos (blandos)

Un enlace simbólico es simplemente un archivo que apunta a otro archivo.

ls -l /etc/grub.conf lrwxrwxrwx. 1 root root 22 Feb 15 2011 /etc/grub.conf -> ../boot/grub/grub.conf

Creando enlace simbolico, se agrega la opcion -s

ln -s [path/file] [path/new_link]

Si intentaras ver el contenido del archivo (enlace simbolico), éste seguiría el puntero y mostraría el contenido del archivo original

ln -s /etc/passwd mypasswd sysadmin@localhost:~$ ls -l mypasswd lrwxrwxrwx. 1 sysadmin sysadmin 11 Oct 31 13:17 mypasswd -> /etc/passwd

Encontrar los arhivos que tienen enlances duros

ls -i file.original 278772 file.original sysadmin@localhost:~$ find / -inum 278772 2> /dev/null /home/sysadmin/file.hard.1 /home/sysadmin/file.original

Comando w

user@domain:~$ w

Resultado

17:15 up 1 day, 7:27, 2 users, load averages: 2.34 2.31 2.31 USER TTY FROM LOGIN@ IDLE WHAT Xizuth console - Sat09 31:26 - Xizuth s000 - 17:15 - w

Comando grep

El comando grep es un filtro de texto que busca líneas en una entrada y devolverá aquellas que coincidan con un patrón determinado

Opciones:

grep [OPCIONES] PATRÓN [ARCHIVO]

Ejemplo:

grep sysadmin passwd

salida:

sysadmin:x:1001:1001:System Administrator,,,,:/home/sysadmin:/bin/bash

Obtiene las coincidencias de la busqueda

grep -c bash /etc/passwd

Imprimer las lineas con el numero de linea en donde esta el archivo

grep -n bash /etc/passwd

Imprimer los directorios que coinciden

grep -l linux /etc/*

Todas las líneas que no contengan nologin en el archivo /etc/passwd

grep -v nologin /etc/passwd

Listado de las líneas de los archivos en el directorio /etc que contengan cualquier tipo de letra (mayúscula o minúscula) del patrón de caracteres linux

grep -i linux /etc/*

Listado de las líneas de los archivos en el directorio /etc que contengan el patrón de la palabra linux

grep -w linux /etc/*

Comando ls

En lista los archivos y carpetas de uno o más directorios

En lista dentro de la carpeta donde se ubica:

sysadmin@localhost:~/Documents$ ls

En lista dentro de la carpeta que se pasa como argumento:

sysadmin@localhost:~$ ls Documents

En lista dentro de las carpetas que se pasa como argumento:

sysadmin@localhost:~$ ls /etc/ppp /etc/ssh

Flags

ls -l #lista ls -a # muestra ocultos ls -r #invierte el orden

Comandos de historiales

Comando date

Fecha

sysadmin@localhost:~$ date Sun Nov 1 00:40:28 UTC 2015

Comando cal

Calendario

sysadmin@localhost:~$ cal November 2020 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Comando history

Historial de comandos

sysadmin@localhost:~$ history 1 date 2 ls 3 cal 5 2015 4 history

Instrucciones de control

Las instrucciones de control te permiten utilizar varios comandos a la vez o ejecutar comandos adicionales, dependiendo del éxito de un comando anterior. Normalmente estas instrucciones de control se utilizan en scripts o secuencias de comandos, pero también pueden ser utilizadas en la línea de comandos.

Punto y coma ;

El punto y coma puede utilizarse para ejecutar varios comandos, uno tras otro. Cada comando se ejecuta de forma independiente y consecutiva; no importa el resultado del primer comando, el segundo comando se ejecutará una vez que el primero haya terminado, luego el tercero y así sucesivamente.

cal ; echo "hola" ; ls -l ssh* November 2020 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 hola total 160 -rw-r--r-- 1 root root 125749 Jan 13 2016 moduli -rw-r--r-- 1 root root 1669 Jan 13 2016 ssh_config -rw------- 1 root root 668 Mar 14 2016 ssh_host_dsa_key -rw-r--r-- 1 root root 607 Mar 14 2016 ssh_host_dsa_key.pub -rw------- 1 root root 227 Mar 14 2016 ssh_host_ecdsa_key -rw-r--r-- 1 root root 179 Mar 14 2016 ssh_host_ecdsa_key.pub -rw------- 1 root root 1675 Mar 14 2016 ssh_host_rsa_key -rw-r--r-- 1 root root 399 Mar 14 2016 ssh_host_rsa_key.pub -rw-r--r-- 1 root root 302 Jan 10 2011 ssh_import_id -rw-r--r-- 1 root root 2489 Mar 14 2016 sshd_config

Doble amperson && [AND]

El símbolo de ampersand doble && actúa como un operador "y" lógico. Si el primer comando tiene éxito, entonces el segundo comando (a la derecha de la &&) también se ejecutará. Si el primer comando falla, entonces el segundo comando no se ejecutará.

sysadmin@localhost:~$ ls /etc/xml && echo success catalog catalog.old xml-core.xml xml-core.xml.old success sysadmin@localhost:~$ ls /etc/junk && echo success ls: cannot access /etc/junk: No such file or directory

Doble pipe || [OR]

La línea vertical doble || es un operador lógico "o". Con la línea vertical doble, si el primer comando se ejecuta con éxito, el segundo comando es omitido. Si el primer comando falla, entonces se ejecutará el segundo comando. En otras palabras, esencialmente estás diciendo al shell, "O bien ejecuta este primer comando o bien el segundo".

sysadmin@localhost:~$ ls /etc/xml || echo failed catalog catalog.old xml-core.xml xml-core.xml.old sysadmin@localhost:~$ ls /etc/junk || echo failed ls: cannot access /etc/junk: No such file or directory failed

Variables de entorno

HISTSIZE

HISTSIZE=5000 #estoy cambiando cuantos comandos guarda el historial de comandos

PATH

Define en qué directorios el shell buscará los comandos.

echo $PATH /Users/Xizuth/.nvm/versions/node/v12.14.0/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Users/Xizuth/.nvm/versions/node/v12.14.0/bin:/opt/local/bin:/opt/local/sbin

el shell primero busca el comando en el directorio /home/sysadmin/bin. Si el comando se encuentra en ese directorio, entonces se ejecuta. Si no es encontrado, el shell buscará en el directorio /usr/local/sbin.

Alias

Un alias puede utilizarse para asignar comandos más largos a secuencias más cortas. Cuando el shell ve un alias ejecutado, sustituye la secuencia más larga antes de proceder a interpretar los comandos.

Esto se aplica solo a la terminal actual, para que se quede permanente en el usario se debe agregar al archivo .bashrc o .zshrc, depende el shell.

alias nombre_alias="comando combinado"

Los nuevos alias se pueden crear introduciendo alias name=command (o «alias nombre=comando» en español), donde nombre es el nombre que quieres dar a el alias y comando es el comando que quieres que se ejecute cuando se ejecuta el alias.

Ejemplo:

alias mycal="cal 2014"
sysadmin@localhost:~$ alias lh='ls -Shl' sysadmin@localhost:~$ lh /etc/ppp total 0 drwxr-xr-x 1 root root 10 Jan 29 2015 ip-down.d drwxr-xr-x 1 root root 10 Jan 29 2015 ip-up.d

Globbing

Nombre Simbolo Aplicación Descripción
Asterisco * echo /etc/t* El asterisco se utiliza para representar cero o más de cualquier carácter en un nombre de archivo.
Interrogación ? echo /etc/t??????? El signo de interrogación representa cualquier carácter único.
Corchetes [ ] echo /etc/[gu]* echo /etc/[a-d]* Los corchetes se utilizan para coincidir con un carácter único representando un intervalo de caracteres que pueden coincidir con los caracteres. mostrará todos los archivos que comiencen con cualquier letra entre e incluyendo a y d
Exclamación ! echo [!DP]* El signo de exclamación se utiliza en conjunto con los corchetes para negar un intervalo. Por ejemplo, el comando echo [!DP]* mostrará cualquier archivo que no comienza con D o P.

sysadmin@localhost:~$ echo /etc/*???????????????????? /etc/bindresvport.blacklist /etc/ca-certificates.conf

Las Comillas

Hay tres tipos de comillas que tienen significado especial para el shell Bash: comillas dobles ", comillas simples ' y comilla invertida ``. Cada conjunto de comillas indica al shell que debe tratar el texto dentro de las comillas de una manera distinta a la normal.

Comillas Dobles

Las comillas dobles detendrán al shell de la interpretación de algunos metacaracteres, incluyendo los comodines. Dentro de las comillas dobles, el asterisco es sólo un asterisco, un signo de interrogación es sólo un signo de interrogación y así sucesivamente. Esto significa que cuando se utiliza el segundo comando echo más abajo, el shell BASH no convierte el patrón de globbing en nombres de archivos que coinciden con el patrón:

sysadmin@localhost:~$ echo /etc/[dp]* /etc/DIR_COLORS /etc/DIR_COLORS.256color /etc/DIR_COLORS.lightbgcolor /etc/PackageKit sysadmin@localhost:~$ echo "/etc/[DP]*" /etc/[DP]*

Comillas Simples

Las comillas simples evitan que el shell interprete algunos caracteres especiales. Esto incluye comodines, variables, sustitución de comando y otro metacarácter que aún no hemos visto.

sysadmin@localhost:~$ echo The car costs $100 The car costs 00 sysadmin@localhost:~$ echo 'The car costs $100' The car costs $100

Barra Diagonal Inversa (\)

Si colocas una barra diagonal invertida \ antes del otro carácter, tratará al otro carácter como un carácter de "comillas simples". El tercer comando más abajo muestra cómo utilizar el carácter , mientras que los otros dos muestran cómo las variables serían tratadas si las pones entre las comillas dobles y simples:

sysadmin@localhost:~$ echo "The service costs $100 and the path is $PATH" The service costs 00 and the path is /usr/bin/custom:/home/sysadmin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games sysadmin@localhost:~$ echo 'The service costs $100 and the path is $PATH' The service costs $100 and the path is $PATH sysadmin@localhost:~$ echo The service costs \$100 and the path is $PATH The service costs $100 and the path is /usr/bin/custom:/home/sysadmin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Comilla Invertida `

Las comillas invertidas se utilizan para especificar un comando dentro de un comando, un proceso de sustitución del comando. Esto permite un uso muy potente y sofisticado de los comandos.

sysadmin@localhost:~$ date Mon Nov 2 03:35:50 UTC 2015
sysadmin@localhost:~$ echo Today is `date` Today is Mon Nov 2 03:40:04 UTC 2015

Manual o información de comandos Man

Para buscar todos los tipos de archivo

man -f passwd
whatis passwd
passwd (5) - the password file passwd (1) - change user password passwd (1ssl) - compute password hashes

Para entrar a ver el manual de passwd a nivel file, se usa el comando man con el nivel y el command:

man 5 passwd

Encontrar por palabra clave

man -k passwd

apropos

search the manual page names and descriptions

apropos command

Estos dos comandos hacen lo mismo

man -k passwd

o

apropops passwd

salida:

chgpasswd (8) - update group passwords in batch mode chpasswd (8) - update passwords in batch mode gpasswd (1) - administer /etc/group and /etc/gshadow pam_localuser (8) - require users to be listed in /etc/passwd passwd (1) - change user password passwd (1ssl) - compute password hashes passwd (5) - the password file update-passwd (8) - safely update /etc/passwd, /etc/shadow and /etc/group

Comando info

El comando info también proporciona documentación sobre funciones y comandos del sistema operativo. El objetivo de este comando es ligeramente diferente de las páginas man: proporcionar un recurso de documentación que proporciona una estructura lógica, facilitando la lectura de la documentación.

info passwd
info apt

Opcion --help

Esto es útil para aprender el uso básico de un comando

Encontrar archivos whereis locate

sysadmin@localhost:~$ ps --help

Readme del sistema

Estos archivos de documentación se suelen llamar archivos "readme" , ya que los archivos tienen nombres como README o readme.txt. La ubicación de estos archivos puede variar según la distribución que estés utilizando. Ubicaciones típicas incluyen /usr/share/doc y /usr/doc.

Comando whereis o Locate

locate - find files by name

El comando whereis está diseñado para encontrar de manera específica las páginas man y los comandos. Si bien esto es útil, hay veces en las que quieras encontrar un archivo o directorio, no sólo archivos de comandos o páginas mas.

Para encontrar cualquier archivo o directorio, puede utilizar el comando locate. Este comando buscará en una base de datos de todos los archivos y directorios que estaban en el sistema cuando se creó la base de datos. Por lo general, el comando que genera tal base de datos se ejecuta por la noche.

sysadmin@localhost:~$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz
sysadmin@localhost:~$ locate ls /bin/false /bin/ls /bin/lsblk /bin/lsmod /etc/initramfs-tools

Puede que quieras empezar listando cuántos archivos coincidirán. Lo puedes hacer mediante la opción -c del comando locate:

sysadmin@localhost:~$ locate -c passwd 97

Para limitar la salida aún más, coloca un carácter \ delante del término de búsqueda. Este carácter limita la salida a los nombres de archivo que coincidan exactamente con el término:

sysadmin@localhost:~$ locate -b "\passwd" /etc/passwd /etc/cron.daily/passwd /etc/pam.d/passwd /usr/bin/passwd /usr/share/doc/passwd /usr/share/lintian/overrides/passwd

Los archivos que creaste hoy normalmente no los vas a poder buscar con el comando locate. Si tienes acceso al sistema como usuario root (con la cuenta del administrador de sistema), puede actualizar manualmente la base de datos locate ejecutando el comando updatedb. Los usuarios regulares no pueden actualizar el archivo de base de datos.

updatedb

updatedb

updatedb - update a database for mlocate

Comando ls

Comando copiar cp

cp - copy files and directories

cp [fuente] [destino]

Argumentos

Comando mover mv

Mueve y renombra archivos

mv [fuente] [destino]

Aplican los mismos argumento que cp, no tiene la opcion r recursividad

Comando eliminar rm

rm [archivo]

argumentos

Enlances duros y simbolicos ln

Permite hacer referencias a directorios o archivos

ln <opciones> <ruta origen> <ruta destino>

Donde:

<ruta origen> es la ruta del directorio o archivo original. <ruta destino> el la ruta en la que se realizará el enlace.

Argumentos:

Enlace duro

ln ~/original ~/copia

Enlace simbolico

ln -s ~/ejemplo_1 ~/simbolico_1

Comando stat

El comando stat permite desplegar los datos generales de un objeto.

stat <opciones> <ruta>
stat Documents

Salida

File: `Documents/' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: 3000c2h/3145922d Inode: 9049952 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 1001/sysadmin) Gid: ( 1001/sysadmin) Access: 2020-01-10 21:53:30.476732135 +0000 Modify: 2016-03-14 17:34:24.000000000 +0000 Change: 2020-01-10 21:53:30.436732017 +0000 Birth: -

Comando file

El comando file regresa el tipo de archivo que se consulta.

file <ruta>
file .bashrc .bashrc: ASCII English text

Comando tree

Este comando permite desplegar la estructura de archivos y subdirectorios de un directorio dado.

tree <opciones> <ruta>

Argumentos:

Muesta el arbol a 1 nivel

tree -L 1

Muesta el arbol a 1 nivel y los archivos ocultos

tree -aL 1

Muestra los directorios a su máximo nivel

tree ./ . |-- Desktop |-- Documents |-- Downloads |-- Music |-- Pictures |-- Public |-- Templates `-- Videos 8 directories, 0 files

Comando du

Este comando despliega el tamaño que ocupa un directorio.

du <opciones> <ruta>

Argumentos:

Desplegara el contenido y el peso de la carpeta

du -m Documents

Compresion de archivos gzip y gunzip

Para comprimir archivos

gzip [archivo]

Argumentos:

Descomprimir archivos

gzip -d [archivo].gz
gunzip [archivo].gz

Empaquetamiento tarballs tar (Tape ARchive )

Tar tiene 3 modos que deberás conocer:

Empaqueta, se la da un nombre y los archivos o carpeta

tar -cf [nombre_pkg].tar [files...]

Empaqueta y lo comprime con gzip

tar -czf [nombre_pkg].tar.gz [files...]
tar -czf [nombre_pkg].tgz [files...]
tar -rvf [archivo].tar [file_to_add]

Argumentos:

Empaquetado y lo comprime con bzip2

tar -cjf [nombre_pack].tar.bz2 [nombre_archivos]
tar -cjf [nombre_pack].tbz [nombre_archivos]
tar -cjf [nombre_pack].tbz2 [nombre_archivos]

En listar el contenido de un tar comprimido

tar -tf access_logs.tgz
tar -tvf access_logs.tgz
tar -tjf access_logs.tbz
tar -tzf access_logs.tgz

Descomprimiendo los tar

tar -xjf access_logs.tbz
tar -xzf access_logs.tar.gz

Si sólo quieres algunos documentos del archivo empaquetado puedes agregar sus nombres al final del comando, pero por defecto deben coincidir exactamente con el nombre del archivo o puedes utilizar un patrón:

tar -xjvf [archivo_comprimido].tbz [path/exacta_file]
tar -xzvf [archivo_comprimido].tgz [path/exacta_file]

Zip

Compresion de archivos

zip -r [nombre_compress].zip [archivos...]

El listado de los archivos en el zip se realiza por el comando unzip y la opción –l (listar):

unzip -l logs.zip

Para descomprimir

unzip [archivo].zip

Pipe ( | )

Se utilizarse para enviar la salida de un comando a otro. Se utiliza a menudo para refinar los resultados de un comando inicial.

Múltiples barras verticales pueden utilizarse consecutivamente para unir varios comandos. Si se unen tres comandos con la barra vertical, la salida del primer comando se pasa al segundo comando. La salida del segundo comando se pasa al tercer comando. La salida del tercer comando se imprime en la pantalla.

En lugar de mostrar la salida del comando anterior, poner la barra vertical junto al comando head muestra sólo las primeras diez líneas:

ls /etc | head

Despliega el listado de archivo, enumera las lineas y saca las ultimas 5 lineas

ls -l /etc/ppp | nl | tail -5

Redirección de I/O

Entras, salidas y errores estandars

Rederigir hacia un archivo, lo crea y escribe >

echo "Line 1" > example.txt

Rederigir hacia un archivo, lo crea y agrega >>

echo "Line 1" >> example.txt

Puedes redirigir el STDERR de una manera similar a la STDOUT. STDOUT es también conocida como secuencia o canal («stream» o «channel» en inglés) #1. Al STDERR se asigna la secuencia #2.

ls /fake 2> error.txt cat error.txt ls: cannot access /fake: No such file or directory # mensaje del archivo

Guardar todo lo que no marca error

ls /fake /etc/ppp > example.txt

Guardar todo lo marca error

ls /fake /etc/ppp 2> error.txt

Las salidas STDOUT y STDERR pueden enviarse a un archivo mediante el uso de &> un conjunto de caracteres que significan «ambos 1> y 2>»

ls /fake /etc/ppp &> all.txt

La salida aparece en el archivo con todos los mensajes STDERR en la parte superior y todos los mensaje STDOUT debajo de todos los mensajes de STDERR.

Enviando a archivos distintos, example.txt guarda los STDOUT y error.txt guarda los STDERR; no importa el órden:

ls /fake /etc/ppp > example.txt 2> error.txt

STDIN

Con cat se queda esperando recibir datos, pero al recibirlos, el resultado lo devuelve a la salida.

cat

Con cat > new.txt lo que se escribe los manda al archivo

cat > new.txt

Comando tr

Transforma o borrar caracteres. Lo que escribe lo convierte a mayúsculas

tr 'a-z' 'A-Z' watch how this works WATCH HOW THIS WORKS

Para transformar todos los caracteres de un archivo a mayusculas

tr 'a-z' 'A-Z' < example.txt

Para transformar todo a mayusculas de un archivo y la salida mandarlo a otro archivo

tr 'a-z' 'A-Z' < example.txt > newexample.txt

Comando find

Search for files in a directory hierarchy

find [directorio de inicio] [opción de búsqueda] [criterio de búsqueda] [opción de resultado]
find [starting directory] [search option] [search criteria] [result option]

Opciones

Buscar un archivo hosts por su nombre en todo el sistema y los errores tirarlos a la basura

find /etc -name hosts 2> /dev/null

Despliega los archivos como si era con el comando ls -l y los errores los manda a la basuca

find /etc -name hosts -ls 2> /dev/null

La búsqueda de archivos en la estructura de directorios /etc con el tamaño exacto de 10 bytes:

find /etc -size 10c -ls 2>/dev/null

Buscará todos los archivos en la estructura de directorio /usr que su tamaño sea mayor a 100 megabytes; se usa + o - para indicar si son mayores que o menores que la cantidad:

find /usr -size +100M -ls 2> /dev/null
find /etc -size 10c -type f -ls 2>/dev/null

Vizualización de archivos cat less more head tails

Enfocado a less

tail

Puedes ver los cambios en vivo en los archivos mediante la opción -f del comando tail. Esto es útil cuando quieres seguir cambios en un archivo mientras están sucediendo.

tail -f /var/log/mail.log

Comando sort Ordenar archivos o entradas (STDIN)

Puede utilizarse el comando sort para reorganizar las líneas de archivos o entradas en orden alfabético o numérico basado en el contenido de uno o más campos. Los campos están determinados por un separador de campos contenido en cada línea, que por defecto son espacios en blanco (espacios y tabuladores).

Opciones:

Ordena por numeros y despues por letra en orden ascendente

sort archivo

El separador es :, se invierte el orden -r con base al campo 3 -k3

sort -t: -n -r -k3 mypasswd

Puede que quieras ordenar primero por el apellido (campo #2), luego el nombre (campo #1) y luego por edad (campo #3). Esto se puede hacer con el siguiente comando:

sort -t: -k2 -k1 -k3n filename

Comando wc

print newline, word, and byte counts for each file

El comando wc permite que se impriman hasta tres estadísticas por cada archivo, así como el total de estas estadísticas, siempre que se proporcione más de un nombre de archivo.

Opciones:

Imprime la cantidad de lineas, caracteres y peso en bytes del archivo

wc /etc/passwd

Imprime la suma de cantidad de lineas, caracteres y peso en bytes de los archivos, maximo puede imprimir de 2 archivos

wc /etc/passwd /etc/passwd-
wc /etc/passwd -l

Forma de uso:

Indica el número de arhivos que tiene el directorio etc

ls /etc/ | wc -l

Comando cut

remove sections from each line of files

Puede extraer columnas de texto de un archivo o entrada estándar. El uso primario del comando cut es para trabajar con los archivos delimitados de las bases de datos.

Opciones:

cut -d: -f1,5-7 passwd
ls -l | cut -c1-11,50-

Expresiones regulares

Es una colección de caracteres «normales» y «especiales» que se utilizan para que coincida con un patrón simple o complejo. Los caracteres normales son caracteres alfanuméricos que coinciden con ellos mismos.

Expresión Regular Coincidencias
. Cualquier carácter individual
[ ] Una lista o rango de caracteres que coinciden con un carácter, a menos que el primer carácter sea el símbolo de intercalación ^, lo que entonces significa cualquier carácter que no esté en la lista
* El carácter previo que se repite cero o más veces
^ El texto siguiente debe aparecer al principio de la línea
$ El texto anterior debe aparecer al final de la línea

Coincide el patron porque busca que comience con a y los .. indica que hay 2 caracteres más cual sea

echo abcddd > example sysadmin@localhost:~$ grep --color 'a..' example `abc`ddd

Busca 2 palabras, la primera que contenga a o b, y la segunda letra en el rango de a hasta d

grep --color '[ab][a-d]' example `ab`cddd

Busca el patron donde primero exista cualquier letra que no este en rango a a c, contigua a una d

grep --color '[^abc]d' example.txt abc`dd`d

Busca que contenga la letra d seguido de ningun o mas del mismo caracter

grep --color 'd*' example.txt abc`ddd`

Busca todas las coincidencia con la letra a

grep 'a' example `a`bcddd xyz`a`bc

Busca solo las que comienzan con a

grep '^a' example `a`bcddd

Buscará todas las palabras que terminan con c

grep "c$" example xyzab`c`

Busca la coincidencia de la letra cd y que se repita la d

grep "cd*" example ab`cddd` xyzab`c` ab`cd`*

Si queremos seleccionar con el * en la busqueda, se debe escapar el caracter

grep "cd\*" example ab`cd*`

Expresiones regulares Extendidas

Para aplicar las expresiones extendidas se aplica la opcion -E

RE Significado
? Coincide con el carácter anterior cero o una vez más, así que es un carácter opcional
+ Coincide con el carácter anterior repetido una o más veces
| Alternación o como un operador lógico

Haz coincidir colo seguido por cero o un carácter u

grep -E 'colou?r' example

Coincide con uno o más d caracteres

grep -E 'd+' example

Coincide con gray o grey

grep -E 'gray|grey' example

Comando xargs

El comando xargs se utiliza para construir y ejecutar líneas de comandos de una entrada estándar. Este comando es muy útil cuando se necesita ejecutar un comando con una lista de argumentos muy larga, que en algunos casos puede resultar en un error si la lista de argumentos es demasiado larga.

Su objetivo es construir la línea de comandos para que un comando se ejecute las menos veces posibles con tantos argumentos como sea posible, en lugar de ejecutar el comando muchas veces con un argumento cada vez.

Opciones

ls | xargs rm

Bash Scripting

Comparaciones

Comando Descripción
test –f /dev/ttyS0 0 si el archivo existe
test ! –f /dev/ttyS0 0 si el archivo no existe
test –d /tmp 0 si el directorio existe
test –x which ls\ sustituir la ubicación de ls y luego (probar) test, si el usuario puede ejecutar
test 1 –eq 1 0 si tiene éxito la comparación numérica
test ! 1 –eq 1 NO – 0 si la comparación falla
test 1 –ne 1 Más fácil, ejecutar test (probar) si hay desigualdad numérica
test “a” = “a” 0 si tiene éxito la comparación de cadenas
test “a” != “a” 0 si las cadenas son diferentes
test 1 –eq 1 –o 2 –eq 2 -o es OR: cualquiera de las opciones pueden ser igual
test 1 –eq 1 –a 2 –eq 2 -a es AND: ambas comparaciones deben ser iguales

Condicionales

Condicional if elif else

#!/bin/bash # script.sh if [ "$1" = "hello" ]; then echo "hello yourself" elif [ "$1" = "goodbye" ]; then echo "nice to have met you" echo "I hope to see you again" else echo "I didn't understand that" fi

Ejecucion

./script.sh hello hello yourself ./script.sh goodbye nice to have met you I hope to see you again ./script.sh I didn't understand that

Condicional case

#!/bin/bash case "$1" in hello|hi) echo "hello yourself" ;; goodbye) echo "nice to have met you" echo "I hope to see you again" ;; *) echo "I didn't understand that" esac

Loops

Hay dos loops principales en los scripts del shell: el loop for y el loop while.

Ciclo for

#!/bin/bash SERVERS="servera serverb serverc" for S in $SERVERS; do echo "Doing something to $S" done

Resultado

Doing something to servera Doing something to serverb Doing something to serverc
#!/bin/bash for NAME in Sean Jon Isaac David; do echo "Hello $NAME" done for S in *; do echo "Doing something to $S" done

El segundo loop utiliza comodín * que es un file glob. El shell expande eso a todos los archivos en el directorio actual.

Resultado:

Hello Sean Hello Jon Hello Isaac Hello David Doing something to Readme.md Doing something to sc.sh

Cuenta la cantidad de palabras en cada archivo

for name in /etc/passwd /etc/hosts /etc/group do wc $name done

Ciclo while

#!/bin/bash i=0 while [ $i -lt 10 ]; do echo $i i=$(( $i + 1)) done echo "Done counting"

Resultado:

0 1 2 3 4 5 6 7 8 9 Done counting

Hardware

Gestion de paquetes y procesos

Debian .deb

Red Hat .rpm

Procesos

Todo lo relacionado a los procesos se encuentra en el directorio /proc/sys/.

El archivo /proc/sys/kernel/pid_max define el numero maximo de procesos, cuando llega al topo reinicia y toma los numeros disponibles

Mandar procesos a segundo plano &

Al añadir el signo & al final del comando, el proceso se inicia en el segundo plano y permite al usuario mantener el control de la terminal.

ping localhost > /dev/null & [1] 158

Esto significa que este proceso tiene un número de trabajo 1 (como lo muestra la salida [1]) y un identificador de proceso (PID) de 158

Para ver los comandos en ejecucion en la terminal actual

jobs [1]+ Running ping localhost > /dev/null &

Para traerlos a primer plano, se usa el comando fg % y el numero de job

fg %1

Para suspender el proceso, no detener se ocupa ctl+z, se pausa pero continua como un job en la terminal

Para que este proceso continúe ejecutándose en segundo plano, ejecuta el siguiente comando, se usa el comando bg % y el numero de job

bg %1

Comando kill pkill

Sirve para eliminar los procesos que estan corriendo

kill PID
pkill [opciones] [name_process]

Elimina el proceso con ese ID

kill 182

Elimina todos todos los procesos sleep

pkill -15 sleep

Archivos de registros logs

Los demonios que se ejecutan en segundo plano para realizar el registro se llaman syslogd y klogd. En otras distribuciones, un demonio como el rsyslogd en Red Hat y Centos o systemd journald en Fedora puede servir para esta función de registro.

Independientemente del nombre del proceso de demonio, los archivos de registro se colocan casi siempre en la estructura del directorio /var/log.

Archivo Contenido
boot.log Mensajes generados cuando servicios se inician durante el arranque del sistema.
cron Mensajes generados por el demonio crond para las tareas que se deben ejecutar en forma recurrente.
dmesg Mensajes generados por el kernel durante el arranque del sistema.
maillog Mensajes producidos por el demonio de correo para mensajes de correo electrónico enviados o recibidos
messages Mensajes del kernel y otros procesos que no pertenecen a ninguna otra parte. A veces se denomina dsyslog en lugar de messages cuando el demonio haya grabado este archivo.
secure Mensajes de los procesos que requieren autorización o autenticación (por ejemplo, el proceso de inicio de sesión).
Xorg.0.log Mensajes del servidor de ventanas X (GUI).

Los comandos lastb y last se pueden usar para ver los archivos /var/log/btmp y /var/log/wtmp respectivamente.

Command dmesg

print or control the kernel ring buffer

El archivo /var/log/dmesg contiene los mensajes del kernel que se produjeron durante el arranque del sistema. El archivo /var/log/messages contiene mensajes del kernel que se producen mientras el sistema está corriendo, pero los mensajes se mezclarán con otros mensajes de demonios o procesos.

Si estuvieras resolviendo problemas con tu dispositivo USB, entonces buscando el texto «USB» con el comando grep siendo sensible a mayúsculas y minúsculas.

dmesg | grep -i usb

Red

Archivos para configuraciones de red

Comando Explicación
/etc/hosts Este archivo contiene una tabla de nombres de host para las direcciones IP. Puede utilizarse para complementar un servidor DNS.
/etc/sysconfig/network Este archivo tiene dos configuraciones. La configuración de NETWORK (o «red» en español) puede determinar si la red está activada (yes) o desactivada (no). La configuración de HOSTNAME (O «nombre de host» en español) define un nombre de host de la máquina local.
/etc/nsswitch.conf Este archivo se puede utilizar para modificar dónde se producen las búsquedas de nombre de host. Por ejemplo, la configuración hosts : files dns buscaría los nombres de host primero en el archivo /etc/hosts y después en el servidor DNS. Si cambias a hosts: dns files, la búsqueda se lleva a cabo primero en el servidor DNS.

Comandos para red ip ping ss dig host

Para ver las interfaces de red

Usuarios y cuentas archivos passwd shadow group

passwd

root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync

Formato

name:password placeholder:user id:primary group id:comment:home directory:shell

La siguiente tabla describe cada uno de estos campos en detalle, usando la primera línea de la salida en el ejemplo anterior (root:x:0:0:root:/root:/bin/bash):

Campo Ejemplo Descripción
name root Es el nombre de la cuenta. Este nombre lo utiliza una persona cuando inicia sesión en el sistema y cuando la propiedad del archivo viene proporcionada por el comando ls -l. Por lo general, el sistema utiliza el ID de usuario (véase abajo) internamente y se proporciona el nombre de cuenta para que a los usuarios regulares se les haga más fácil referirse a la cuenta. Normalmente, la cuenta root es una cuenta administrativa especial. Sin embargo, es importante tener en cuenta que no todos los sistemas tienen una cuenta root, y en realidad, el ID de usuario 0 (cero) proporciona los privilegios administrativos en el sistema.
password placeholder x Antes, la contraseña se guardaba en esta ubicación, ahora se almacena en el archivo /etc/shadow. La x en el campo del marcador de posición de la contraseña indica al sistema que la contraseña no se almacena aquí, sino más bien en el archivo /etc/shadow.
user id 0 Cada cuenta tiene asignado un Id. de usuario (UID «User ID» en inglés). El UID es lo que realmente define la cuenta, ya que el nombre de usuario normalmente no es utilizado directamente por el sistema. Por ejemplo, los archivos son propiedad de los UID, no de los nombres de usuario.Algunos UID son especiales. Por ejemplo, el UID 0 le da a la cuenta de usuario privilegios administrativos. Los UID por debajo de 500 (en algunas distribuciones de Linux 1.000) están reservados para las cuentas del sistema. Las cuentas del sistema se tratarán con más detalle más adelante en este capítulo.
primary group id 0 Cada archivo y directorio es propiedad de una cuenta de usuario. Normalmente la persona que crea la cuenta posee el archivo. Además, cada archivo es propiedad de un grupo, normalmente del grupo primario del usuario. A los grupos se les asignan identificadores numéricos al igual que a los usuarios. Cuando un usuario crea un archivo, el archivo es propiedad del UID del usuario y también de un id de grupo (GID «Group ID» en inglés), el GID primario del usuario. Este campo define que GID es el GID primario del usuario. Además, al proporcionar la propiedad del grupo por defecto en un archivo, este campo también indica que el usuario es un miembro del grupo, lo que significa que el usuario tendrá permisos especiales en cualquier archivo que pertenece a este grupo. Los permisos se cubrirán en detalle en un capítulo posterior.
comment root Este campo puede contener cualquier información sobre el usuario, incluyendo su nombre real (completo) y otra información útil. Este campo también se llama el campo GECOS (General Electric Comprehensive Operating System). El GECOS es un formato predefinido usado raramente para este campo que define una lista de elementos separada por comas, incluyendo el nombre completo del usuario, ubicación de la oficina, número de teléfono e información adicional. El administrador puede modificar la información GECOS con el comando chfn y los usuarios pueden ver esta información con el comando finger.
home directory /root Este campo define la ubicación del directorio home del usuario. Para los usuarios regulares, esto sería normalmente /home/username donde username se reemplaza con el nombre de usuario del usuario. Por ejemplo, un nombre de usuario bob tendría un directorio home /home/bob. El usuario root tiene normalmente una ubicación diferente para el directorio home: /root. Las cuentas del sistema raramente tienen directorios, ya que normalmente no se utilizan para crear o guardar los archivos.
shell /bin/bash Aquí está ubicado el shell del inicio de la sesión del usuario. De forma predeterminada, el usuario se "ubica en" este shell siempre que el usuario inicia la sesión en un entorno de línea de comandos o abre una ventana de terminal. El usuario luego puede pasar a un shell diferente escribiendo el nombre del shell, por ejemplo: /bin/tcsh. El shell bash (/bin/bash) es el más común para los usuarios de Linux.

shadow

head /etc/shadow root:$6$4Yga95H9$8HbxqsMEIBTZ0YomlMffYCV9VE1SQ4T2H3SHXw41M02SQtfAdDVE9mqGp2hr20q .ZuncJpLyWkYwQdKlSJyS8.:16464:0:99999:7::: daemon:*:16463:0:99999:7::: bin:*:16463:0:99999:7::: sys:*:16463:0:99999:7::: sync:*:16463:0:99999:7::: games:*:16463:0:99999:7::: man:*:16463:0:99999:7::: lp:*:16463:0:99999:7::: mail:*:16463:0:99999:7::: news:*:16463:0:99999:7:::

Los campos del archivo /etc/shadow son:

name:password:last change:min:max:warn:inactive:expire:reserved

Se describre el siguiente registro

sysadmin:$6$lS6WJ9O/fNmEzrIi$kO9NKRBjLJJTlZD.L1Dc2xwcuUYaYwCTS.gt4elijSQW8ZDp6GLYAx.TRNNpUdAgUXUrzDuAPsYs5YHZNAorI1:15020:5:30:7:60:15050:

Campo Ejemplo Descripción
name sysadmin Este es el nombre de la cuenta, que coincide con el nombre de cuenta en el archivo /etc/passwd.
password $6$.........rI1 El campo passwd contiene la contraseña cifrada de la cuenta. Esta cadena muy larga (que está truncada en el ejemplo a la izquierda de esta celda) es un cifrado unidireccional, lo que significa que no puede "revertirse" para determinar la contraseña original. Mientras que los usuarios habituales tienen contraseñas encriptadas en este campo, las cuentas del sistema tendrán un carácter de * en este campo. Verás más detalles sobre las cuentas de sistema más adelante en este capítulo.
last change 15020 Este campo contiene un número que representa la última vez que la contraseña fue cambiada. El número 15020 es el número de días desde el 01 de enero de 1970 (llamada la Época) y el último día en el que la contraseña de la cuenta fue cambiada. Este valor se genera automáticamente cuando se modifica la contraseña del usuario. Este valor es importante ya que se utiliza por característica de envejecimiento de la contraseña proporcionado por el resto de los campos de este archivo.
min 5 Este es uno de los campos del envejecimiento de la contraseña; un valor distinto de cero en este campo indica que después de que un usuario cambiara su contraseña, la contraseña no se puede cambiar otra vez por un número específico de días (5 en este ejemplo). Este campo es importante cuando se utiliza el campo max (véase abajo). Un valor de cero en este campo significa que el usuario siempre puede cambiar su contraseña.
max 5 Este campo se utiliza para obligar a los usuarios a cambiar regularmente sus contraseñas. Un valor de 30 en este campo significa que el usuario debe cambiar su contraseña al menos cada 30 días para evitar que su cuenta quede «bloqueada» Ten en cuenta que si el campo min se establece en 0, el usuario puede restablecer inmediatamente su contraseña al valor original, anulando el propósito de obligar al usuario a cambiar su contraseña cada 30 días. Así que, si se establece el campo max, normalmente se establece también el campo min. Por ejemplo, un min:max de 5:60 se refiere a que el usuario debe cambiar su contraseña cada 60 días y, después de cambiarla, el usuario debe esperar 5 días antes de que pueda cambiar su contraseña otra vez. Si el campo max se establece a 99999, el valor máximo posible, entonces el usuario esencialmente nunca debe cambiar su contraseña (porque 99999 días son aproximadamente 274 años).
warn 7 Si se establece el campo max, el campo warn indica que al usuario se le «advertirá» cuando se acerca el plazo máximo max. Por ejemplo, si se establece warn a 7, entonces en cualquier momento durante los 7 días anteriores al plazo max se le advertirá al usuario que cambie su contraseña durante el proceso del inicio de sesión. El usuario sólo se advierte en el inicio de sesión, por lo que algunos administradores prefieren establecer el campo de advertencia a un valor alto para proporcionar una mayor probabilidad de tener una advertencia emitida.Si el plazo máximo max se establece al valor de 99999, entonces el campo warn es esencialmente inútil
inactive 60 Si el usuario hace caso omiso a las advertencias y se excede el plazo max para la contraseña, se bloqueará su cuenta. En tal caso, el campo inactive proporciona al usuario un período de «gracia» en el que puede cambiar su contraseña, pero sólo durante el proceso del inicio de sesión. Si el campo inactive viene establecido a un valor de 60, el usuario tiene 60 días de gracia para cambiar la contraseña a una nueva. Si no lo hace, entonces necesitará que el administrador restablezca la contraseña para el usuario.
expire 15050 Este campo representa el número de días a partir del 01 de enero del 1970 y el día en el que la cuenta «vencerá». Una cuenta vencida se bloqueará, no se borra, lo que significa que el administrador puede restablecer la contraseña para desbloquear la cuenta. Las cuentas con fechas de vencimiento normalmente se ofrecen a los empleados temporales o contratistas. La cuenta caducará automáticamente después del último día laboral del usuario. Cuando un administrador establece este campo, se utiliza una herramienta para convertir una fecha real en una fecha de «Época». En Internet hay varios convertidores disponibles.
reserved Actualmente este campo no se utiliza y está reservado para su uso futuro.

Archivo group Comando groups

Ubicación /etc/group El archivo /etc/group es un archivo delimitado por dos puntos con los siguientes campos:

group_name:password_placeholder:GID:user_list

La siguiente tabla describe los campos del archivo /etc/group con más detalle, utilizando una línea que describe a una cuenta de grupo típica:

mail:x:12:mail,postfix
Campo Ejemplo Descripción
group_name mail Este campo contiene el nombre del grupo. Igual que en el caso de los nombres de usuario, para las personas es más fácil recordar los nombres de grupo. El sistema utiliza típicamente IDs de grupos (GID) en lugar de nombres de grupo.
password_placeholder x Aunque hay contraseñas para grupos, raramente se utilizan en Linux. Si el administrador creará una contraseña de grupo, se almacenaría en un archivo diferente (/etc/gshadow) ya que la contraseña de grupo ya no se almacena en el archivo /etc/group. La x en este campo se utiliza para indicar que la contraseña no se almacena en este archivo. Las contraseñas de grupo están más allá del alcance de este curso.
GID 12 Cada grupo está asociado con un ID de grupo único (GID) que se coloca en este campo.
user_list mail,postfix Este último campo se utiliza para indicar quién es un miembro del grupo. Mientras que la pertenencia a un grupo primario se define en el archivo /etc/passwd, los usuarios que se asignan a los grupos adicionales tendrían su nombre de usuario en este campo del archivo /etc/group. En este caso, los usuarios mail y postfix son miembros secundarios del grupo mail. Es muy común para un nombre de usuario aparecer también como un nombre del grupo. También es común que un usuario pertenezca a un grupo con el mismo nombre.

Comando getent

Otra técnica para recuperar la información del usuario que se encuentra normalmente en los archivos /etc/passwd y /etc/shadow, /etc/group es utilizar el comando getent

getent [passwd | shadow | group] [user]

Ejemplo:

getent passwd sysadmin
getent shadow root
getent group mail

El signo ! que aparece en el campo de la contraseña (segundo campo) del archivo shadow, muestra que la contraseña para student no fue configurada.

Cambiando de grupo los archivos - Comando chgrp

Para cambiar al grupo propietario de un archivo existente se puede utilizar el comando chgrp group_name file

Si quieres cambiar el grupo propietario de un archivo existente, puedes utilizar el comando chgrp. Como un usuario sin privilegios administrativos, el comando chgrp puede utilizarse solamente para cambiar el grupo propietario del archivo a un grupo del que el usuario ya sea miembro. Como usuario root, el comando chgrp puede utilizarse para cambiar el grupo propietario de cualquier archivo a cualquier grupo.

Cambio al grupo games el archivo sample

chgrp games sample

Comando stat

El comando stat muestra información más detallada acerca de un archivo.

stat Documents/ File: `Documents' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: c7h/199d Inode: 73669082 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 1001/sysadmin) Gid: ( 1001/sysadmin) Access: 2020-01-10 21:37:13.450191690 +0000 Modify: 2016-03-14 17:34:24.000000000 +0000 Change: 2020-01-10 21:37:13.414190649 +0000 Birth: -

Comando id

El comando id informará la identidad actual, tanto por nombre del usuario como por el identificador de usuario

Comando su sudo visudo

Archivo visudo

Al activar este comando se abre un editor y se modica el archivo /etc/sudoers, lo cual define quien puede ejecutar comandos sudo

sudo visudo # User privilege specification root ALL=(ALL:ALL) ALL usuario ALL=(ALL:ALL) ALL

Comando who w last

Comnado who

Muestra una lista de usuarios que están conectados actualmente en el sistema, desde dónde están conectados y cuándo iniciaron sesión.

Opciones;

Ejemplo:

who -b -r system boot 2013-10-11 09:54 run-level 5 2013-10-11 09:54
who root tty2 2013-10-11 10:00 sysadmin tty1 2013-10-11 09:58 (:0) sysadmin pts/0 2013-10-11 09:59 (:0.0) sysadmin pts/1 2013-10-11 10:00 (example.com)
Columna Ejemplo Descripción
username root Esta columna indica el nombre del usuario que inició la sesión. Ten en cuenta que por "sesión" nos referimos a «cualquier proceso de inicio de sesión y cualquier ventana de la terminal abierta».
terminal tty2 Esta columna indica en qué ventana de terminal está trabajando el usuario. Si el nombre de la terminal inicia con tty , entonces esto es una indicación de un inicio de sesión local, está es una terminal de línea de comandos regular. Si el nombre de la terminal inicia con pts, entonces esto indica que el usuario está usando una pseudo terminal o corriendo un proceso que actúa como la terminal. Esto puede significar que el usuario tiene una aplicación de terminal corriendo en X Windows, como gnome-terminal o xterm o pueden haber usado un protocolo de red para conectarse al sistema, como ssh o telnet.
date 2013-10-11 10:00 (example.com) Esto indica cuándo inició sesión el usuario. Después de la fecha y la hora en que el usuario inició sesión en el sistema, puede aparecer alguna información de localización. Si la información de localización contiene un nombre de host, nombre de dominio o dirección IP, entonces el usuario inició sesión remotamente. Si hay dos puntos y un número, entonces esto indica que han hecho un inicio de sesión gráfico local. Si no se muestra información de localización en la última columna, entonces esto significa que el usuario inició sesión mediante un proceso de línea de comandos local.

Comandos w whoami

Proporciona una lista más detallada sobre los usuarios que actualmente están en el sistema que el comando who. También proporciona un resumen del estado del sistema.

w 23:45:49 up 84 days, 7:34, 2 users, load average: 0.07, 0.13, 0.12 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT sysadmin pts/0 23:11 5.00s 0.14s 0.01s ssh localhost sysadmin pts/1 localhost 23:39 5.00s 0.00s 0.00s w
Column Ejemplo Descipción
USER root Esta columna indica el nombre del usuario que inició la sesión.
TTY tty2 Esta columna indica en qué ventana de terminal el usuario está trabajando.
FROM example.com Desde dónde inició sesión el usuario.
LOGIN@ 10:00 Cuándo inició sesión el usuario.
IDLE 43:44 Cuánto tiempo el usuario ha estado inactivo desde la ejecución del último comando.
JCPU 0.01s El tiempo total de cpu (s=segundos) utilizado por todos los procesos (programas) ejecutados desde el inicio de sesión.
PCPU 0.01s El tiempo total de cpu para el proceso actual.
WHAT -bash El proceso actual que está ejecutando el usuario.

Comando last lastb

Muestra el historial de logues en el sistema. El comando last lee la historia completa de la sesión desde el archivo /var/log/wtmp

Creacion de usuarios y grupos

Grupos

Ver los grupos a los que pertener un usuario

grep root /etc/group # despliega todos los grupos a los que pertence el usuario root:x:0:

o

getent group root #solo muestra el grupo principal root:x:0:

Comando groupadd

El comando groupadd puede ser ejecutado por el usuario root para crear un nuevo grupo

Opciones:

groupadd -g [group_id] [name_group]
groupadd -g 506 research

Modificar un grupo groupmod

Opciones:

Si se modica el GID se pierde el acceso al aunque tenga el mismo nombre, porque todo esta refenciado hacia el GID, no al nombre del grupo

Cambiar el nombre de sales a marketing

groupmod -n marketing sales

Encontrar archivos huerfanos; es decir, sin grupo

find / -nogroup

Eliminar grupos groupdel

Eliminar un grupo con el comando groupdel, ten en cuenta que los archivos que pertenecen a ese grupo se convertirán en huérfanos. Sólo se puede eliminar a los grupos suplementarios, por lo que si un grupo es el grupo primario para cualquier usuario, no se puede eliminar. El administrador puede modificar qué grupo es el grupo primario del usuario, por lo que un grupo que estaba siendo utilizado como un grupo primario se puede transformar en un grupo suplementario y luego se puede eliminar.

groupdel [name_group]
groupdel clerks

Comando newgrp

Es para cambiar al grupo primario del usario actual; una vez hecho el cambio verificar si cambio el grupo primario con el comando id. Ahora al crear documentos y arhivos, el grupo primario sera el nuevo asignado. El cambio del grupo es temporal hasta cerrar la sesión.

newgrp [name_group]
newgrp research

Se requieren privilegios administrativos para cambiar permanentemente el grupo primario del usuario. El usuario root ejecutaría el comando usermod -g groupname username.

Comando chgrp stat

Si quieres cambiar el grupo propietario de un archivo existente, puedes utilizar el comando chgrp

Agregar usuarios - Comando useradd

Opciones

Creando un usuario con useradd

useradd -m xizuth #crea el usuario con todo por defecto y crea el directorio del home

Crea el usuario especificando varios detalles

useradd -u 1000 -g users -G wheel,research -c 'Jane Doe' jane

Se observan los paramentros establecidos para cuando se agregaran usuarios

useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
Campo Ejamplo Descripción
GROUP 100 En las distribuciones que no usan UPG, este será el grupo principal de forma predeterminada para un usuario nuevo, si no se ha especificado uno con el comando useradd. Este normalmente es el grupo de «users» con un GID de 100. Esta configuración afecta a la configuración por defecto del archivo /etc/passwd bob:x:600:600:bob:/home/bob:/bin/bash
La opción -g para el comando useradd permite utilizar un grupo principal diferente al predeterminado, cuando se crea una nueva cuenta de usuario.
HOME /home El directorio /home es el directorio base predeterminado, en el cuál se creará un nuevo directorio home del usuario. Esto significa que un usuario con un nombre de cuenta de bob tendría un directorio de /home/bob. Esta configuración afecta a la configuración por defecto del archivo /etc/passwd
bob:x:600:600:bob:/home/bob:/bin/bash
La opción -b para el comando useradd permite utilizar un directorio base diferente al predeterminado, cuando se crea una nueva cuenta de usuario.
INACTIVE -1 Este valor representa el número de días después de que caduca la contraseña hasta que la cuenta será deshabilitada. Un valor de -1 significa que esta función no está habilitada por defecto y no se proporciona ningún valor «inactivo» para las nuevas cuentas por defecto. Esta configuración afecta a la configuración por defecto del archivo /etc/shadow
bob:pw:15020:5:30:7:60:15050:
La opción -f para el comando useradd permite utilizar un valor INACTIVE diferente al predeterminado, cuando se crea una nueva cuenta de usuario.
EXPIRE Por defecto, no hay ningún valor para la fecha de caducidad. Generalmente, una fecha de vencimiento se configura para una cuenta individual, no a todas las cuentas. Por ejemplo, si tuvieras un contratista que fuese contratado para trabajar hasta el final del día 01 de noviembre de 2013, podrías asegurarte de que no pueda iniciar sesión después de esa fecha, utilizando el campo de EXPIRE. Esta configuración afecta a la configuración por defecto del archivo /etc/shadow
bob:pw:15020:5:30:7:60:15050:
La opción -e para el comando useradd permite utilizar un valor EXPIRE diferente al predeterminado, cuando se crea una nueva cuenta de usuario.
SHELL /bin/bash El valor de SHELL indica el shell por defecto para los usuarios cuando inician sesión en el sistema. Esta configuración afecta a la configuración por defecto del archivo /etc/passwd
bob:x:600:600:bob:/home/bob:/bin/bash
La opción -s para el comando useradd permite utilizar un shell de inicio de sesión diferente al predeterminado, cuando se crea una nueva cuenta de usuario.
SKEL /etc/skel El valor SKEL determina qué directorio «esqueleto» tendrá su contenido copiado en el directorio home de los usuarios nuevos. El contenido de este directorio se copia en el directorio home del usuario nuevo y el nuevo usuario recibe la propiedad de los nuevos archivos. Esto proporciona a los administradores una manera fácil de «rellenar» una nueva cuenta de usuario con los archivos de configuración clave. La opción -k para el comando useradd permite utilizar un directorio SKEL diferente al predeterminado, cuando se crea una nueva cuenta de usuario.
CREATE_MAIL_SPOOL yes El «mail spool» es un archivo donde se coloca el correo entrante. Actualmente el valor para crear un mail spool es yes, lo que significa que los usuarios por defecto están configurados con la capacidad de recibir y guardar correo local. Si no piensas usar el correo local, este valor puede cambiarse a no.

Para modificar uno de los valores por defecto del useradd, el archivo /etc/default/useradd puede editarse con un editor de texto. Otra técnica (más segura) es usar el comando useradd -D.

Aquí esta editando la opción INACTIVE

useradd -D -f 30 GROUP=100 HOME=/home INACTIVE=30 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes

Comando usermod

El comando usermod ofrece muchas opciones para modificar una cuenta de usuario existente. Tiene casi las mismas opciones que useradd

Opción corta Opción larga Descripción
-c COMMENT Establecer el valor del campo GECOS o comentario a COMMENT.
-d HOME_DIR --home HOME_DIR Establecer un nuevo directorio home para el usuario.
-e EXPIRE_DATE --expiredate EXPIRE_DATE Configurar la fecha de caducidad de la cuenta a EXPIRE_DATE.
-f INACTIVE --inactive INACTIVE Configurar la cuenta para permitir acceso INACTIVE días después de que la contraseña caduque.
-g GROUP --gid GROUP Establecer GROUP como grupo primario.
-G GROUPS --groups GROUPS Establecer grupos adicionales a una lista especificada en GROUPS.
-a --append Añadir grupos adicionales del usuario especificados por -G.
-h --help Mostrar la ayuda para usermod.
-l NEW_LOGIN --login NEW_LOGIN Cambiar el nombre de inicio de sesión del usuario.
-L --lock Bloquear la cuenta de usuario.
-s SHELL --shell SHELL Especificar el shell de inicio de sesión para la cuenta.
-u NEW_UID --uid NEW_UID Especificarque el UID del usuario sea NEW_UID.
-U --unlock Desbloquear la cuenta de usuario.

Agrego un usuario a otro grupo; estoy agregando a jane al grupo develomenent

usermod -aG development jane

Comando userdel

Eliminar un usuario del sistema. Borrar un usuario sin borrar su directorio home significa que los archivos del directorio home del usuario son ahora huérfanos.

Opciones:

Solo elimina el usuario sin eliminar ningun archivo

userdel jane

Elimina al usuario y su directorio

userdel jane -r

Archivo /etc/login.defs

El archivo /etc/login.defs también contiene valores que se aplicarán por defecto a los nuevos usuarios que vayas a crear con el comando useradd. A diferencia del /etc/default/useradd, que puede ser actualizado con el comando useradd -D, el archivo /etc/login.defs generalmente lo edita directamente el administrador para modificar sus valores.

Con esta linea se extrae lo importante, evidiendo el relleno

grep -Ev '^#|^$' /etc/login.defs MAIL_DIR /var/spool/mail PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7 UID_MIN 500 UID_MAX 60000 GID_MIN 500 GID_MAX 60000 CREATE_HOME yes UMASK 077 USERGROUPS_ENAB yes ENCRYPT_METHOD SHA512 MD5_CRYPT_ENAB no
Campo Ejemplo Descripción
MAIL_DIR /var/mail/spool El directorio en el que se crea el archivo mail spool del usuario.
PASS_MAX_DAYS 99999 Esta configuración determina el número máximo de días en los que un usuario podrá utilizar la misma contraseña. Puesto que por defecto viene configurado el valor de 99999 días o más de 200 años, significa que los usuarios nunca tienen que cambiar su contraseña. Las organizaciones con políticas eficaces para el mantenimiento de contraseñas seguras comúnmente cambian este valor a 60 o 30 días. Esta configuración afecta a la configuración por defecto del archivo /etc/shadow bob:pw:15020:5:30:7:60:15050:
PASS_MIN_DAYS 0 Con esto configurado a un valor predeterminado de 0 (cero), el tiempo más corto que un usuario tiene que mantener una contraseña es de cero días, lo que significa que inmediatamente después de configurar la contraseña, se puede cambiar. Si el valor PASS_MIN_DAYS se estableció en 3 días, después de establecer una nueva contraseña, el usuario tendría que esperar tres días antes de que pueda cambiarla otra vez. Esta configuración afecta a la configuración por defecto del archivo /etc/shadow bob:pw:15020:3:30:7:60:15050:
PASS_MIN_LEN 5 Esto indica el número mínimo de caracteres que debe contener una contraseña.
PASS_WARN_AGE 7 Este es el valor predeterminado para el campo de advertencia. Cuando un usuario se acerca al número máximo de días durante los que puede usar su contraseña, el sistema comprobará si es hora de empezar a avisar al usuario sobre cambiar su contraseña durante el inicio de sesión. Esta configuración afecta a la configuración por defecto del archivo /etc/shadow bob:pw:15020:3:30:7:60:15050:
UID_MIN 500 El UID_MIN determina el primer UID que se asignará a un usuario ordinario. Cualquier usuario con un UID menor que este valor, ya sea para una cuenta del sistema o bien para la cuenta de root.
UID_MAX 60000 Un UID técnicamente podría tener un valor de más de 4 billones. Para la máxima compatibilidad se recomienda dejarlo en su valor predeterminado de 60000.
GID _MIN 500 El GID_MIN determina el primer GID que se asignará a un grupo ordinario. Cualquier grupo con un GID menor que este valor, ya sea para un grupo del sistema o bien para el grupo de root.
GID _MAX 60000 Un GID igual que un UID técnicamente podría tener un valor de más de 4 billones. Cualquier valor que utilices para tu UID_MAX debes utilizar para GID_MAX para soportar UPG.
CREATE_HOME yes Este valor determina si se crea o no un nuevo directorio para el usuario, al crear su cuenta.
UMASK 077 Este UMASK funciona en el momento que se crea el directorio home del usuario; determinará cuáles serán los permisos predeterminados de este directorio. Utilizando el valor predeterminado de 077 para UMASK significa que sólo el usuario propietario tendrá algún tipo de permiso para acceder a su directorio.
USERGROUPS_ENAB yes En las distribuciones que cuentan con un grupo privado para cada usuario, como se muestra en este ejemplo CentOS, el USERGROUPS_ENAB tendrá un valor de yes. Si no se utiliza la UPG en la distribución, entonces esto tendrá un valor no.
ENCRYPT_METHOD SHA512 El método de cifrado que se utiliza para cifrar las contraseñas de los usuarios en el archivo /etc/shadow. El valor de ENCRYPT_METHOD anula la configuración de MD5_CRYPT_ENAB.
MD5_CRYPT_ENAB no Este ajuste obsoleto originalmente permitía al administrador especificar el uso del cifrado de contraseñas MD5 en lugar del cifrado original DES. Ahora es reemplazado por el valor de ENCRYPT_METHOD.

Cambiando la contraseña de un usuario - Comando passwd

Ejecutando el comando passwd [name_user], si todo sale bien, se actualiza el archivo etc/shadow

Estándar de Jerarquía del Sistema de Archivos

Entre los estándares soportados por la Fundación Linux está el Estándar de Jerarquía del Sistema de Archivos (FHS).

El estándar FHS categoriza cada directorio del sistema de dos maneras:

  1. Un directorio puede ser categorizado como compartible o no, es decir, si el directorio puede ser compartido en una red y utilizado por varios equipos.
  2. El directorio se pone en una categoría de tener archivos estáticos (el contenido del archivo no cambiará) o archivos variables (el contenido del archivo puede cambiar).

Con el fin de poder hacer estas clasificaciones, a menudo es necesario hacer referencia a los subdirectorios debajo del nivel superior de los directorios. Por ejemplo, el directorio /var en sí no puede ser clasificado como compartible o no compartible, pero:

Tipo No compartible Compartible
Variable /var/lock /var/mail
Estático /etc /opt

/ root

El estándar FHS define cuatro jerarquías de directorios utilizados en la organización de los archivos del sistema de archivos. El nivel superior o jerarquía root viene seguido por:

Directorio Propósito del Directorio
/ La base de la estructura, o el root del sistema de archivos, este directorio unifica todos los directorios independientemente si son particiones locales, dispositivos extraíbles o recursos compartidos de red
/bin Para mantener binarios esenciales como los comandos ls, cp, y rm, y ser parte del sistema de archivos root.
/boot Contiene los archivos necesarios para arrancar el sistema, como el kernel de Linux y los archivos de configuración asociados
/dev Viene rellenado de archivos que representan los dispositivos de hardware y otros archivos especiales, tales como los archivos /dev/null y /dev/zero
/etc Contiene los archivos de configuración de host esenciales, como los archivos /etc/hosts o /etc/passwd
/home La ubicación de los directorios home de los usuarios
/lib Las librerías esenciales de soporte para los archivos ejecutables en los directorios /bin y /sbin
/lib Las librerías esenciales creadas para una arquitectura específica. Por ejemplo, el directorio /lib64 para los procesadores de 64 bit AMD/Intel x86 compatibles
/media El punto de montaje para los medios extraíbles que se montan automáticamente
/mnt Un punto de montaje para montar temporalmente sistemas de archivos de manera manual
/opt Ubicación opcional de la instalación de software de terceros
/proc Un sistema de archivos virtual para que el kernel reporte procesos y otra información
/root El directorio inicial del usuario root
/sbin Los binarios esenciales del sistema utilizados principalmente por el usuario root
/sys Un sistema de archivos virtual que contiene información acerca de los dispositivos de hardware conectados al sistema
/srv Ubicación donde los servicios específicos del sitio pueden estar alojados
/tmp Directorio en el que todos los usuarios tienen permiso para crear archivos temporales que deberían ser borrados durante el arranque (pero a menudo no es así)
/usr La segunda jerarquía de archivos que no son esenciales para el uso de múltiples usuarios
/usr/local La tercera jerarquía de archivos para software que no sea originario de la distribución
/var La jerarquía /var contiene archivos que cambian durante el tiempo
/var/cache Archivos utilizados para almacenar en caché, los datos de la aplicación
/var/log El directorio donde se ubica la mayoría de los archivos de registro
/var/lock Ubicación para guardar los archivos de bloqueo de los recursos compartidos
/var/spool Ubicación para almacenar los archivos spool de impresión y correo
/var/tmp Los archivos temporales que se deben conservar entre los reinicios

La segunda y la tercera jerarquía, que se encuentra bajo los directorios /usr y /usr/local, repiten el patrón de muchos de los directorios clave que se encuentran debajo de la primera jerarquía o el sistema de archivos root. La cuarta jerarquía, el directorio /var, también repite algunos de los directorios de primer nivel, como lib, opt y tmp.

Cuando el sistema de archivos root y su contenido se consideran esenciales o necesarios para arrancar el sistema, los directorios /var, /usr y /usr/local no se consideran esenciales para el proceso de arranque. Como resultado, el sistema de archivos root y sus directorios pueden ser los únicos disponibles en ciertas situaciones, tales como arrancar en modo de usuario único, un entorno diseñado para la solución de problemas del sistema.

/usr

El directorio /usr sirve para contener software para su uso por varios usuarios. El directorio /usr a veces se comparte a través de la red y se monta como de sólo lectura.

Directorio Propósito del Directorio
/usr/bin Los binarios para el usuario común, usados cuando el sistema está en modo multiusuario
/usr/include Los archivos que se incluyen para compilar el software de distribución
/usr/lib Las librerías de soporte para los archivos ejecutables en los directorios /usr/bin y /usr/sbin
/usr/lib Las librerías no esenciales creadas para una arquitectura específica
/usr/libexec Los programas ejecutables utilizados por otros programas y no directamente por los usuarios
/usr/sbin Los binarios del sistema para su uso por el administrador en modo multiusuario
/usr/share Ubicación para almacenar documentación de software y otros datos de aplicación
/usr/src El código fuente para compilar el kernel

/usr/local

La jerarquía /usr/local sirve para la instalación del software que no se origina con la distribución. A menudo, este directorio se utiliza para software que se complia a partir del código fuente.

Directorio Propósito del Directorio
/usr/local/bin Los binarios de software locales para el uso de un usuario ordinario
/usr/local/etc Los archivos de configuración de software locales
/usr/local/include Los archivos que necesitan ser incluidos con el fin de compilar el código fuente local
/usr/local/lib Los archivos de la librería de soporte para los archivos ejecutables en los directorios /usr/local/bin y /usr/local/sbin
/usr/local/libexec Los programas ejecutables utilizados por otros programas y no directamente por los usuarios
/usr/local/sbin Los binarios locales para uso del administrador del sistema
/usr/local/share Ubicación para almacenar las páginas man, páginas de información, y otra información de aplicaciones locales
/usr/local/src La ubicación en la que menudo se coloca el código fuente de software para ser compilado localmente

La Organización Dentro de la Jerarquía del Sistema de Archivos

Aunque el estándar FHS es útil para una comprensión detallada de la disposición de los directorios utilizados por la mayoría de las distribuciones de Linux, a continuación se ofrece una descripción más generalizada de la estructura de los directorios como realmente existen en una distribución típica de Linux.

Los Directorios Home

El directorio /home tendrá típicamente un directorio inferior para cada cuenta de usuario. Por ejemplo, el usuario bob normalmente tendrá su directorio home de /home/bob. Normalmente, sólo el usuario bob tendrá acceso a este directorio. Sin ser asignados permisos especiales en otros directorios, un usuario normalmente sólo puede crear archivos en su directorio home, en el directorio /tmp y el directorio /var/tmp.

Los Directorios Binarios

Los directorios binarios contienen programas que los usuarios y los administradores ejecutarán para iniciar los procesos o las aplicaciones del sistema. Los directorios binarios, que están destinados a ser utilizados por los usuarios sin privilegios, incluyen los directorios /bin, /usr/bin y /usr/local/bin. A veces el software de terceros también almacenará sus archivos ejecutables en los directorios, tales como /usr/local/application/bin y /opt/application/bin. Además, no es inusual que cada usuario tenga su propio directorio bin ubicado en su directorio home, tal como /home/bob/bin.

Por otra parte, los directorios sbin están destinados principalmente a ser utilizados por el administrador del sistema (usuario root). Estos por lo general incluyen los directorios /sbin, /usr/sbin y /usr/local/sbin, aunque las aplicaciones administrativas de terceros también podrían utilizar directorios como /usr/local/application/sbin o /opt/application/sbin.

Dependiendo de la distribución, la variable PATH puede no contener todos los directorios bin y sbin. Con el fin de poder ejecutar un comando en uno de estos directorios, el directorio debe ser incluido en la lista de las variables PATH o el usuario tiene que especificar la ruta al comando, por ejemplo:/sbin/ifconfig.

Los Directorios de las Aplicaciones de Software

Las aplicaciones de Linux pueden tener sus archivos en varios directorios repartidos a lo largo del sistema de archivos de Linux. Para las distribuciones Debian, puedes ejecutar la aplicación dpkg -l para obtener la lista de ubicación de los archivos. En las distribuciones de Red Hat, puedes ejecutar la aplicación rpm -ql para listar la de ubicación de los archivos que pertenecen a esa aplicación.

Los archivos binarios de los programas ejecutables pueden ir en el directorio /usr/bin, si vienen incluidos en el sistema operativo, o de lo contrario pueden ir a los directorios /usr/local/bin o /opt/application/bin en caso de que procedan de un tercero.

Los datos para la aplicación pueden ser almacenados en uno de los siguientes subdirectorios:

El archivo relacionado con la documentación se puede almacenar en uno de los siguientes subdirectorios:

El archivo(s) de configuración global para una aplicación muy probablemente se almacene en un subdirectorio bajo el directorio /etc, mientras que los archivos de configuración personalizados (específicos para un usuario) para la aplicación están, probablemente, en un subdirectorio oculto del directorio home del usuario.

Los Directorios de Librerías

Las librerías son archivos que contienen código que se comparte entre varios programas. La mayoría de los nombres de archivo de la librería terminan con una extensión de archivo .so, lo que significa objeto compartido (shared object).

Puede haber varias versiones de una librería debido a que el código puede ser diferente dentro de cada archivo a pesar de que puede llevar a cabo funciones similares a las otras versiones de la librerías. Una de las razones por las que el código puede ser diferente, a pesar de que puede hacer lo mismo que otro archivo de la biblioteca, es que está compilado para ejecutarse en un tipo diferente de procesador. Por ejemplo, es habitual que los sistemas que utilizan un código diseñado para los procesadores de tipo Intel/AMD de 64 bits, tengan las dos bibliotecas, la de 32 bits y de 64 bits.

Las librerías que dan soporte a los programas binarios esenciales que se encuentran en los directorios /bin y /sbin típicamente se encuentran en /lib o /lib64.

Para dar soporte a los ejecutables /usr/bin y /usr/sbin, normalmente se usan los directorios librerías /usr/lib y /usr/lib64.

Para dar soporte a las aplicaciones que no se distribuyen con el sistema operativo, a menudo se utilizan los directorios librería /usr/local/lib y /opt/application/lib.

Los Directorios de Datos Variables

Los directorios /var y muchos de sus subdirectorios pueden contener datos que vayan a cambiar con frecuencia. Si el sistema se utiliza para correo electrónico, normalmente se utilizará /var/mail o /var/spool/mail para almacenar los datos de correo electrónico del usuario. Si vas a imprimir desde tu sistema, entonces el directorio /var/spool/cups se utilizará para almacenar temporalmente los trabajos de impresión.

Dependiendo de los eventos que el sistema está registrando y la cantidad de actividad que hay en el sistema, se determinará el tamaño de tu archivo de registro. En un sistema ocupado, puede haber una considerable cantidad de datos en los archivos de registro. Estos archivos se almacenan en el directorio /var/log.

Mientras que los archivos de registro pueden ser extremadamente útiles para solucionar los problemas, también pueden causar problemas. Una de las principales preocupaciones de todos estos directorios es que pueden llenar rápidamente el espacio del disco en un sistema activo. Si el directorio /var no es una partición separada, entonces el sistema de archivos root se podría llenar por completo y bloquear el sistema.

Trucos

Para generar archivos y carpetas con un patron

mkdir {2000..2020}-{1..9}

Creara carpertas con la nomeclatura 2000-1 hasta 2020-9, todas las combinaciones posibles

Extras

Especificación de la estructura de archivos

https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html

Lista de comandos que aun no tienen seccion