# Linux
Apuntes de Linux
# Básicos
Comandos básicos de Linux
# Usuarios
## Crear un usuario
Para crear un usuario, el comando es `useradd [OPCIONES] usuario`. Por ejemplo, si lo hacemos desde `root`:
```bash
useradd lynze
```
Si lo hacemos desde un usuario con privilegios, añadimos `sudo`:
```bash
sudo useradd lynze
```
Por defecto se crea el `home` del usuario en la ruta `/home/usuario`.
Si queremos ver todas las opciones, ejecutamos el comando sin más:
```bash
[root@pclynze ~]# useradd
Usage: useradd [options] LOGIN
useradd -D
useradd -D [options]
Options:
--badname do not check for bad names
-b, --base-dir BASE_DIR base directory for the home directory of the new account
--btrfs-subvolume-home use BTRFS subvolume for home directory
-c, --comment COMMENT GECOS field of the new account
-d, --home-dir HOME_DIR home directory of the new account
-D, --defaults print or change default useradd configuration
-e, --expiredate EXPIRE_DATE expiration date of the new account
-f, --inactive INACTIVE password inactivity period of the new account
-F, --add-subids-for-system add entries to sub[ud]id even when adding a system user
-g, --gid GROUP name or ID of the primary group of the new account
-G, --groups GROUPS list of supplementary groups of the new account
-h, --help display this help message and exit
-k, --skel SKEL_DIR use this alternative skeleton directory
-K, --key KEY=VALUE override /etc/login.defs defaults
-l, --no-log-init do not add the user to the lastlog and faillog databases
-m, --create-home create the user's home directory
-M, --no-create-home do not create the user's home directory
-N, --no-user-group do not create a group with the same name as the user
-o, --non-unique allow to create users with duplicate (non-unique) UID
-p, --password PASSWORD encrypted password of the new account
-r, --system create a system account
-R, --root CHROOT_DIR directory to chroot into
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-s, --shell SHELL login shell of the new account
-u, --uid UID user ID of the new account
-U, --user-group create a group with the same name as the user
-Z, --selinux-user SEUSER use a specific SEUSER for the SELinux user mapping
--selinux-range SERANGE use a specific MLS range for the SELinux user mapping
```
Hay que tener en cuenta que no se crea la contraseña automáticamente.
# Creación/modificación de la contraseña
Podemos crear/modificar la contraseña de un usuario desde el propio usuario o desde `root` con el comando `passwd`.
```bash
passwd lynze
```
Por ejemplo, desde `root`:
```
[root@pclynze ~]# passwd lynze
Changing password for user lynze.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
```
# cron
Para editar el `cron`, utilizaremos `crontab`.
### Formato
```
Min Hour Day Mon Weekday
┬ ┬ ┬ ┬ ┬
│ │ │ │ └─ Día de la semana (0=Dom .. 6=Sáb)
│ │ │ └────── Mes (1..12)
│ │ └─────────── Día del mes (1..31)
│ └──────────────── Hora (0..23)
└───────────────────── Minuto (0..59)
```
**Campo** | **Rango** | **Caracteres especiales** |
Minuto | 0-59 | `, - * /` |
Hora | 0-23 | `, - * /` |
Día del mes | 1-31 | `, - * ? / L W` |
Mes | 1-12 | `, - * /` |
Día de la semana | 0-6 | `, - * ? / L #` |
### Ejemplos
### Cadenas especiales
### Comando crontab
**Comando** | **Resultado** |
---|
`crontab -e` | Edita o crea un fichero crontab file si no existe. |
`crontab -l` | Muestra el fichero crontab. |
`crontab -r` | Elimina el fichero crontab. |
`crontab -v` | Muestra la última vez que editaste tu fichero crontab. (no estándar) |
### Caracteres especiales
**Carácter** | **Observaciones** |
---|
`Asterico (*)` | Coincide con todos los valores del campo o cualquier valor posible. |
`Guión (-)` | Se usa para definir un rango. P.ej.: 1-5 en el 5º campo (día de la semana) cada semana de lunes a viernes. |
`Barra (/)` | 1er campo (minuto) /15 significa cada quince minutos o incrementos del rango. |
`Coma (,)` | Se usa para separar elementos. P.ej: 2,6,8 en el 2º campo (hora) se ejecuta a las 2am, 6am y 8am. |
`L` | Sólo se puede utilizar para el campo día del mes o día de la semana, 2L en día de la semana indica el último martes de cada mes. |
`Almohadilla (#)` | Sólo se puede utilizar para el campo día de la semana que puede seguir por un rango de 1 a 5. P.ej: 4#1 significa "el primer martes" de un mes determinado. |
`Interrogación (?)` | Se puede utilizar en lugar de '\*' y se usa para dia del mes y día de la semana. El uso está restringido al día del mes o día de la semana en una expresión cron. |
### Para más información
- [Devhints](https://devhints.io/cron) (devhints.io)
- [Crontab Generator](https://crontab-generator.org/) (crontab-generator.org)
- [Crontab guru](https://crontab.guru/) (crontab.guru)
# Gnome
# Exportar e importar perfiles de Gnome Terminal
La herramienta idónea para exportar e importar todos los perfiles de Gnome Terminal es `dconf`. Con ello conseguimos guardar toda la configuración que hayamos realizado en Gnome Terminal.
Con este ejemplo realizamos un volcado al archivo `gnome-terminal-profiles.dconf`:
```bash
dconf dump /org/gnome/terminal/legacy/profiles:/ > gnome-terminal-profiles.dconf
```
Con este ejemplo restauramos un volcado del archivo `gnome-terminal-profiles.dconf`:
```bash
dconf load /org/gnome/terminal/legacy/profiles:/ < gnome-terminal-profiles.dconf
```
# Trucos
"Trucos" de Linux
# Vim
Algunas veces, sobretodo en las distribuciones modernas y entorno gráfico, cuando instalamos o está instalado `vim` y estamos editando en una pantalla de terminal, pasa que cuando seleccionamos un texto, `vim` se pone en modo `--VISUAL--`. Para evitarlo podemos deshabilitarlo de la siguiente manera:
```bash
echo "set mouse-=a" >> ~/.vimrc
```
De esta forma ya no se activará más este modo.