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.
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) |
- rw-r--r-- 1 sysadmin sysadmin 647 Dec 20 2017 hello.sh
-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.
-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.
-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 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). |
chmod
- Cambio de acceso a archivosEl 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
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 |
tipo de archivo
.2-4 indican los permisos para el usuario
al que pertenece el archivo.5-7 indican los permisos para el grupo
al que pertenece el archivo.8-10 indican los permisos para "otros"
o lo que se conoce a veces como los permisos del mundo. Esto incluiría todos los usuarios que no sean el propietario del archivo o un miembro del grupo del archivo.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. |
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
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:
u
= cambiar los permisos del usuario propietariog
= cambiar los permisos del grupo propietarioo
= cambiar los permisos de «otros»a
= (all) aplicar los cambios a todos los conjuntos de permisos (usuario propietario, grupo propietario y «otros»)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
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-
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
0
indica que umask se da como un número octal.0
indica qué permisos hay que restar de los permisos por defecto de usuario propietario.0
indica qué permisos hay que restar de los permisos por defecto del grupo propietario.2
indica qué permisos hay que restar de los permisos por defecto de otros.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.
setuid
setgid
Sticky Bit
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
setgid
en un ArchivoEl 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
setgid
en un DirectorioCuando 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:
/home/team
./home/team
sea el grupo team.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 S
mayú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 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.
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.
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
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
w
w
: display who is logged in and what they are doinguser@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
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:
-c
Imprime cuantas coincidencia en la busqueda-n
muestra los números de la línea originales-l
en lista los archivos que en su contenido contiene el patron-v
Todas las líneas que no contengan el patron-i
ignora mayusculas y minusculas del patron en la busqueda, mostrando en donde se encuentra-w
la busqueda debe coincidir exacto con el patrongrep [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/*
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
date
Fecha
sysadmin@localhost:~$ date
Sun Nov 1 00:40:28 UTC 2015
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
history
Historial de comandos
sysadmin@localhost:~$ history
1 date
2 ls
3 cal 5 2015
4 history
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.
;
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
&&
[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
||
[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
env
: muestra todas las variables de entornoexport
: agrega la variable como variable de entorno
export mivariable
export mivariable2="contenido de la variable"
unset
: elimina la variable de entorno
unset mivariable
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
.
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
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
sysadmin@localhost:~$ echo /etc/[gu]* /etc/gai.conf /etc/groff /etc/group /etc/group- /etc/gshadow /etc/gshadow- /etc/ucf.conf /etc/udev /etc/ufw /etc/update-motd.d /etc/updatedb.conf
echo [!DP]*
: que no comience con DPecho "hola"
sysadmin@localhost:~$ echo "The path is $PATH" 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 /usr/bin/custom:/home/sysadmin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
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.
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]*
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
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
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
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
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
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
--help
Esto es útil para aprender el uso básico de un comando
whereis
locate
sysadmin@localhost:~$ ps --help
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
.
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
ls
-S
ordena por size-R
muestra todo los archivos, inlcuyendo los subdirectorios-t
ordena por fecha--full-time
visualiza la fecha y la hora completas (incluyendo horas, segundos, minutos...):-r
los ordena de forma inversacp
cp
- copy files and directories
cp [fuente] [destino]
Argumentos
-v
verboso-i
al copiar verificar si existe, en caso de existir pregunta si se desea sobreescribir-n
se pasa para indicar que no sobreescriba
cp -i -n archivo.txt archivo.copy
-r
copia el directorio completo
cp -r /usr/share/doc /home/usuario/
mv
Mueve y renombra archivos
mv [fuente] [destino]
Aplican los mismos argumento que cp
, no tiene la opcion r
recursividad
rm
rm [archivo]
argumentos
-i
confirma eliminar el archivo-r
borra la carpetaln
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:
-s
crea un enlace simbólico-f
o --force
elimina un objeto de destino en caso de que ya exista.-i
o --interactive
pregunta si se eliminará un objeto de destino.Enlace duro
ln ~/original ~/copia
Enlace simbolico
ln -s ~/ejemplo_1 ~/simbolico_1
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: -
file
El comando file regresa el tipo de archivo que se consulta.
file <ruta>
file .bashrc
.bashrc: ASCII English text
tree
Este comando permite desplegar la estructura de archivos y subdirectorios de un directorio dado.
tree <opciones> <ruta>
Argumentos:
-L #
Define el número de niveles de subdirectorios a los que accederá. # indica con un entero hasta que nivel se mostrará.-a
para desplegar los archivos y directorios ocultos.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
du
Este comando despliega el tamaño que ocupa un directorio.
du <opciones> <ruta>
Argumentos:
-m
permite desplegar el tamaño de los directorios en MB.Desplegara el contenido y el peso de la carpeta
du -m Documents
gzip
y gunzip
Para comprimir archivos
gzip [archivo]
Argumentos:
-l
conocer el porcentaje de compresion
gzip -l [archivo].gz
-d
descomprimir
gzip -l [archivo].gz
Descomprimir archivos
gzip -d [archivo].gz
gunzip [archivo].gz
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...]
gzip
tar -czf [nombre_pkg].tar.gz [files...]
tar -czf [nombre_pkg].tgz [files...]
tar -rvf [archivo].tar [file_to_add]
Argumentos:
-c
creacion-f
que se le pasara el nombre-t
listar documentos en el archivo en el archivo empaquetado-z
que use gzip para la tareaj
que use bzip2 para la tareax
para descomprimir-r
recursividad (para agregar mas archivos a un tar)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
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]
Compresion de archivos
zip -r [nombre_compress].zip [archivos...]
-r
recursividadEl 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
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
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
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
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
-name
para agregar el nombre del archivo, no afecta mayúsculas y minúsculas-ls
imprime la descripción como si fuera el comando ls -l
-size
busca por tamaño de archivo. Tamaño en bytes (c), kilobytes (k), megabytes (M) o gigabytes (G)-maxdepth
Permite al usuario especificar la profundidad en la estructura de los directorios a buscar. Por ejemplo, -maxdepth 1
significaría sólo buscar en el directorio especificado y en sus subdirectorios inmediatos.-mmin
Devuelve los archivos que fueron modificados según el tiempo de modificación en minutos. Por ejemplo, -mmin 10
coincidirá con los archivos que fueron modificados hace 10 minutos.-type
Devuelve los archivos que coinciden con el tipo de archivo. Por ejemplo, -type f
devuelve los archivos que son archivos regulares. d
para directoriosBuscar 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
cat
less
more
head
tails
cat
visualización de archivos pequeñosless
visualización de archivos avanzadomore
Este comando ha existido desde los primeros días de UNIX.head
, tails
: ver archivos con delimitación de lineas
head -n 5 archivo.ext
(muestra las primero 5 lineas)head -n 10 archivo.txt
head -5 archivo.txt
Enfocado a less
Barra espaciadora
b
Enter
q
h
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
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:
-n
ordena por numeros-r
invierte el orden-t
se puede agregar el separador -t,
, -t:
-k
se indica el campo por el cual se va a ordenarOrdena 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
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:
-l
imprime el numero de lineas que tiene el archivo-m
imprime el numero de caracteres-c
imprime el peso en bytes del archivoImprime 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
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:
-d
delimitador, por defaul tab
es el delimitador; -d:
-f
Los campos a mostrar, al estar delimitado selecciona esos campos; -f1,5-7
-c
selecciona los carecteres; -c1-11,50-
cut -d: -f1,5-7 passwd
ls -l | cut -c1-11,50-
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*`
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
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
-0
desactiva la cadena de fin de archivo, permitiendo el uso de los argumentos que contengan espacios, comillas o barras diagonales inversas.ls | xargs rm
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 |
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
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
Hay dos loops principales en los scripts del shell: el loop for
y el loop while
.
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
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
arch
Para conocer la arquitecturalscpu
información del CPU y arquitecturacat /proc/cpuinfo
La manera más detallada de obtener la información acerca de tu CPU es visualizando el archivodmidecode
ver los dispositivos conectados directamente a la tarjeta madrefree
ver la información de la RAM, tiene para ver en mega, giga -m
-g
lspci
ver todos los dispositivos conectados por un bus PCI
-nn
es para ver más detalles del vendor-d vendor:device
para ver detalles del dispositivo lspci -d 15ad:07b0 -vvv
lsusb
el listado de dispositivos usb
-v
para ver más detalleslshal
te permite ver los dispositivos detectados por HAL.fdisk
manipulate disk partition table
fdisk -l
En lista los discos duros en cilindrosfdisk -cul
en lista los discos en sectoresfdisk -l /dev/sda
Muestra la información de la partición en el primer dispositivo de sd
df
manipulate disk partition table
df -l
lo muestra en forma de lista los espacios del disco durolsmod
program to show the status of modules in the Linux Kernel.deb
sudo apt-get update
actualizo el sistemasudo apt-cache search keyword
busco paquetessudo apt-get install package
installar paquetessudo apt-get upgrade
actualiza a nuevas versiones los paquetessudo apt-get remove package
Si quieres eliminar todos los archivos de un paquete de software, excepto los archivos de configuraciónsudo apt-get --purge remove package
Si quieres eliminar todos los archivos de un paquete de software, incluyendo los archivos de configuracióndpkg -l
listar los paquetes instaladosdpkg -L package
listar los archivos que componen un paquete especialdpkg -s package
Para consultar un paquete y obtener información o su estadodpkg -S /path/to/file
Para determinar si un determinado archivo fue puesto en el sistema de archivos como el resultado de la instalación de un paquete.rpm
yum install package
instala paquetesyum search keyword
busca paquetesyum update package
Si quieres actualizar un paquete de software individualyum remove package
remueve paquetesrpm -qa
Para obtener una lista de todos los paquetes que están instalados actualmente en el sistema ejecutarpm -ql package
Para listar los archivos que componen un paquete especialrpm -qi package
Para consultar un paquete y obtener información o su estadorpm -qf /path/to/file
Para determinar si un archivo en particular fue puesto en el sistema de archivos como el resultado de la instalación de un paqueteTodo 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
pstree
display a tree of processesps
sólo mostrará los procesos actuales en el shell, snapshot
--forest
indica las ramificaciones de los procesosaux
para ver todos los procesos del sistema; ps aux
-ef
para ver todos los procesos del sistema; ps -ef
top
display Linux processes
k
activo para eliminar un proceso, con 9
se manda a cerrar de manera forzosaps -o pid,tty,time,%cpu,cmd
el argumento -o
indica las columnas que se van a mostrarps -o pid,tty,time,%mem,cmd --sort %mem
la opcion --sort
los esta enlistando en orden de consumo de memoriauptime
o cat /proc/loadavg
ver la carga promedio del sistemafree
sin opciones proporciona una foto de la memoria RAM utilizada en ese momento
free -s 10
actualizaría la salida cada 10 segundos.&
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
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
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.
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
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. |
ip
ping
ss
dig
host
Para ver las interfaces de red
ip -a addr
muestras las interfacesip addr show
muestras las interfacesroutel
o route
list routes with pretty output formatping
se puede utilizar para determinar si otra máquina es «accesible»
-c
comando para definir cuantos ping lanzara; -c 4
lanzara 4 pings y terminanetstat
Puede utilizarse para mostrar información acerca de conexiones de red, el nuevo comando es ss
-i
indica las conexiones de las interfaces de red-r
muestra el enrutamiento-tln
para ver los puertos abiertos
-t
indica tcp-l
indica las que esta escuchando LISTEN-n
indica el numero de puertodig
DNS lookup utility
dig example.com
host
DNS lookup utility
host example.com
host 192.168.0.1
host -t CNAME example.com
host -t SOA example.com
los registros SOA
(Start of Authority) indican el servidor principal para el dominiohost -a example.com
da todos los registros del dominiopasswd
shadow
group
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. |
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. |
group
Comando groups
Ubicación /etc/group
El archivo /etc/group es un archivo delimitado por dos puntos con los siguientes campos:
groups
retorna los grupos del usuario actualgroup_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 | 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. |
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.
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.
-R
La opcion de recursividad para cambiar todos los archivos de grupoCambio al grupo games
el archivo sample
chgrp games sample
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: -
id
El comando id
informará la identidad actual, tanto por nombre del usuario como por el identificador de usuario
id
: return user identity
id
muestra la identificacion del usuario actual
id [user]
da los datos del user; id root
id -g
da el grupo primario de usuario actual
id -G
da todos los grupos del usuario actual
cat /etc/group | grep sysadmin
filta para mostrar los grupos del usario que se le paso
su
sudo
visudo
su: change user ID or become superuser
sudo: execute a command as another user
visudo: edit the sudoers file
su -
o su -l [user]
o su - root
inicias sesion con el usario en forma root
sudo
permite a un usuario ejecutar comandos que necesite privilegios root
visudo
entra a modificar y configurar los usuarios que pueden ejecutar acciones sudo
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
who
w
last
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;
-b
mostrará la última vez que el sistema se inició (fue arrancado)-r
mostrará el tiempo en el cual el sistema haya alcanzado un cierto nivel ejecuciónEjemplo:
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. |
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
sesiones en la maquinawhoami
: display effective user idw
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. |
last
lastb
show listing of last logged in users
last
muestra cuando ingreso un usuario con exito
lastb
muestra cuantas veces fallaron al ingresar
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
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:
groupadd
El comando groupadd
puede ser ejecutado por el usuario root
para crear un nuevo grupo
Opciones:
-g
indica el id del grupo: si no se indica, el pone automaticamente uno GID-r
se forza a un GID para la zona de procesos internos; es decir, a grupos reservados para el sistemagroupadd -g [group_id] [name_group]
groupadd -g 506 research
Modificar un grupo groupmod
Opciones:
-n
Se puede utilizar para cambiar el nombre del grupo-g
cambiar el GID para el grupo.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
newgrp
log in to a new group
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
.
chgrp
stat
Si quieres cambiar el grupo propietario de un archivo existente, puedes utilizar el comando chgrp
useradd
Opciones
-u
UID user id, debe ser unico es arriba de 1000 y abajo para servicios del sistema (depende la distro y revisar el archivo passwd
)-m
crea la carpeta de home-g
nombre del grupo, normalmente el mismo nombre que el usuario,-d
define el path del home del usuario-G
grupos adicionales, separados por comas sin espacios; grupo1,grupo2
; deben existir primero los grupos-c
Comentario, normalmente el nombre completo de la persona o servicioCreando 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
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
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:
-r
elimina su directorio home
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 . |
passwd
Ejecutando el comando passwd [name_user]
, si todo sale bien, se actualiza el archivo etc/shadow
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:
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 |
/
rootEl 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.
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 |
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 |
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.
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 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
.
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:
/usr/share
/usr/lib
/opt/application
/var/lib
El archivo relacionado con la documentación se puede almacenar en uno de los siguientes subdirectorios:
/usr/share/doc
/usr/share/man
/usr/share/info
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.
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 /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.
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
Especificación de la estructura de archivos
https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
dd
: copiar particiones, discos, etc a nivel de bits
dd if=/dev/sda of=/dev/sdb
-- clonar un disco durowhich
type
para conocer el tipo de un comando
type ls
nl
: regresa numero de lineas que contiene un archivo