You are on page 1of 70

UNIDADE 7

ADMINISTRACIÓN DE SO GNU/LINUX

SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM
Autor: Manuel Pacior Pérez
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

Índice

1 SHELL DE LINUX................................................................................................................................ 6
1.1 bash..................................................................................................... 6
1.2 dash (Debian Almquist Shell).................................................................7
1.3 Introdución aos comandos do Bash........................................................7

2 AXUDA DO SISTEMA.......................................................................................................................... 8
2.1 man..................................................................................................... 8
2.2 info...................................................................................................... 8
2.3 whatis.................................................................................................. 8
2.4 help..................................................................................................... 8
2.5 apropos................................................................................................ 8

3 XESTIÓN DE FICHEIROS......................................................................................................................9
3.1 ls......................................................................................................... 9
3.1.1 Filtrar a saída do comando "ls"................................................................................................10
3.2 cd...................................................................................................... 10
3.3 sort.................................................................................................... 11
3.4 pwd.................................................................................................... 11
3.5 tree.................................................................................................... 11
3.6 mkdir................................................................................................. 12
3.7 rmdir.................................................................................................. 12
3.8 rm...................................................................................................... 13
3.9 cp...................................................................................................... 13
3.10 mv................................................................................................... 14
3.11 rename............................................................................................. 14
3.12 touch................................................................................................ 16
3.13 ln..................................................................................................... 16
3.14 cat................................................................................................... 17
3.15 tac................................................................................................... 17
3.16 nl..................................................................................................... 18
3.17 more................................................................................................ 18
3.18 less.................................................................................................. 18
3.19 find.................................................................................................. 18
3.19.1 Filtrar por nome......................................................................................................................19
3.19.2 Filtrar por tipo..........................................................................................................................19
3.19.3 Filtrar por permisos................................................................................................................20
3.19.4 Filtrar por tamaño...................................................................................................................21
3.19.5 Filtrar por data.........................................................................................................................22
3.19.6 Outros parámetros de filtrado..............................................................................................22

2
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

3.19.7 Executar un comando sobre os elementos atopados........................................................23


3.20 whereis............................................................................................ 23
3.21 file................................................................................................... 23
3.22 wc.................................................................................................... 24
3.23 grep................................................................................................. 24
3.24 head................................................................................................. 25
3.25 tail................................................................................................... 26
3.26 tr..................................................................................................... 26
3.27 nano................................................................................................. 27
3.28 sed................................................................................................... 28
3.28.1 Exemplos de substitución......................................................................................................29
3.28.2 Exemplos de inserción...........................................................................................................29
3.28.3 Exemplos de borrado.............................................................................................................30
3.29 diff................................................................................................... 31

4 XESTIÓN DE DISCOS E DISPOSITIVOS..................................................................................................31


4.1 mount................................................................................................ 31
4.2 umount.............................................................................................. 32
4.3 df....................................................................................................... 32
4.4 du...................................................................................................... 32
4.5 lsblk................................................................................................... 32
4.6 fdisk................................................................................................... 33
4.7 fsck.................................................................................................... 34

5 XESTIÓN DO SISTEMA......................................................................................................................35
5.1 uptime............................................................................................... 35
5.2 exit.................................................................................................... 36
5.2.1 Contextos de uso.......................................................................................................................36
5.3 shutdown........................................................................................... 36
5.4 dmesg................................................................................................ 38
5.5 history............................................................................................... 40
5.5.1 Configuración do history..........................................................................................................40
5.5.2 Personalización do history.......................................................................................................41
5.5.3 Limpar e deshabilitar o 'history' do usuario..........................................................................41
5.6 uname................................................................................................ 42
5.7 tee..................................................................................................... 42
5.8 chroot................................................................................................ 43
5.9 free.................................................................................................... 43
5.10 clear................................................................................................. 44
5.11 dpkg................................................................................................. 44
5.12 md5sum........................................................................................... 44
5.13 sha512sum....................................................................................... 44

3
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

6 USUARIOS...................................................................................................................................... 45
6.1 Ficheiros de configuración...................................................................45
6.1.1 /etc/passwd................................................................................................................................45
6.1.2 /etc/shadow............................................................................................................................... 47
6.2 Comandos de xestión de usuarios........................................................48
6.2.1 Engadir un usuario: useradd...................................................................................................48
6.2.2 Modificar un usuario: usermod...............................................................................................49
6.2.3 Xestionar as claves de usuario: passwd.................................................................................51
6.2.4 Eliminar un usuario: userdel....................................................................................................52
6.2.5 Outros comandos......................................................................................................................52
6.2.5.1 who........................................................................................................................................ 52
6.2.5.2 sudo....................................................................................................................................... 53

7 GRUPOS......................................................................................................................................... 53
7.1 Ficheiro /etc/group..............................................................................53

8 PERMISOS EN GNU/LINUX................................................................................................................54
8.1 Permisos en ficheiros..........................................................................56
8.1.1 Permisos en directorios............................................................................................................56
8.1.2 Modificando permisos..............................................................................................................57
8.1.2.1 chmod.................................................................................................................................... 57
8.1.2.2 chown.................................................................................................................................... 59
8.1.2.3 chgrp...................................................................................................................................... 59
8.1.3 Permisos por defecto: umask..................................................................................................59
8.1.4 Permisos especiais....................................................................................................................60
8.1.4.1 SetUID.................................................................................................................................... 61
8.1.4.2 SetGID.................................................................................................................................... 62
8.1.4.2.1 SetGID sobre ficheiros....................................................................................................................62
8.1.4.2.2 SetGID sobre directorios................................................................................................................62
8.1.4.3 Sticky Bit................................................................................................................................ 63
8.1.4.3.1 Sticky Bit sobre ficheiros................................................................................................................63
8.1.4.3.2 Sticky Bit sobre directorios............................................................................................................63
8.1.4.4 Permisos especiais deshabilitados (carácter maiúscula).................................................63
8.1.4.5 Bits especiais en octal.......................................................................................................... 64
8.1.5 Listas de control de acceso (ACL - Access Control List)........................................................64
8.1.5.1 Consultar ACL: getfacl.......................................................................................................... 65
8.1.5.2 Máscara ACL.......................................................................................................................... 67
8.1.5.2.1 Modificar máscara ACL...................................................................................................................67
8.1.5.3 Modificar ACL: setfacl........................................................................................................... 67

4
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

8.1.5.3.1 Asignar permisos a usuarios e grupos.........................................................................................67


8.1.5.3.1.1 ASIGNAR PERMISOS DE XEITO RECURSIVO....................................................67

8.1.5.3.2 Asignar permisos usando tubos (pipes).......................................................................................68


8.1.5.3.3 Retirar ACL a usuarios e/ou grupos..............................................................................................68
8.1.5.3.4 Eliminar todas as regras ACL (conserva so as UGO)...................................................................68
8.1.5.3.5 ACLs por defecto.............................................................................................................................69
8.1.5.3.5.1 CONSULTAR ACL POR DEFECTO..................................................................... 69
8.1.5.3.5.2 ASIGNAR ACL POR DEFECTO.......................................................................... 69
8.1.5.3.5.3 ELIMINAR ACL POR DEFECTO......................................................................... 70

8.1.5.4 Modificar ACL de xeito masivo: chacl.................................................................................70

5
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

1 SHELL DE LINUX
Trátase o termo empregado na computación para referirse ao intérprete de comandos,
que consiste na interface de usuario tradicional dos sistemas operativos GNU/Linux.

A través das instrucións proporcionadas polo intérprete, o usuario pode executar


comandos, así como ferramentas que lle permiten controlar o funcionamento do
ordenador.

Os comandos proporcionados polos intérpretes poden usarse como script se están


escritos en ficheiros executables chamados shell-scripts, moi útil cando o usuario precisa
facer uso de varios comandos combinacións. Nese caso escríbeos nun ficheiro de texto,
que deberá marcar como executable, e liña por liña, o intérprete traducirá as instrucións
ao núcleo para que as realice.

Malia que o shell non é estritamente unha linguaxe de programación, ao proceso de


creación de scripts de shell chámase programación de shell ou en inglés, "shell
programming" ou "shell scripting".

No sentido máis xenérico do termo, shell refírese a calquera intérprete que os usuarios
usan para escribir comandos. Os usuarios de Unix e similares poden escoller entre
diferentes shell: bash, dash, ash, csh, zsh, ksh, tcsh.

O termo shell tamén se refire a un programa particular, como o shell Bourne, sh. O shell
Bourne foi o shell usado nas primeiras versións de Unix, e converteuse nun estándar de
facto; todos os sistemas similares a Unix teñen polo menos un shell compatible co shell
de Bourne.

O programa shell Bourne atópase dentro da xerarquía de ficheiros Unix en "/bin/sh". En


moitas distribucións de Linux, "/bin/sh" é un enlace simbólico a un shell compatible con
funcións (como Bash). POSIX especifica o seu shell estándar como un subconxunto estrito
do Korn Shell.

1.1 bash

GNU Bash ou simplemente Bash (Bourne-again shell) é un shell de Unix e linguaxe de


comandos escrito por Brian Fox para o Proxecto GNU como un substituto de software libre
para o shell Bourne.

Foi publicado por primeira vez en 1989, e amplamente utilizado como intérprete de inicio
de sesión predeterminado para a maioría das distribucións de GNU/Linux e Mac OS X de

6
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

Apple ata a versión 10.154. Tamén hai unha versión dispoñible para Windows 10 e
Android. 5 Tamén é o shell de usuario predeterminado en Solaris 11.6

1.2 dash (Debian Almquist Shell)

Debian Almquist shell (dash) é un intérprete de comandos Unix compatible co estándar


POSIX, moito máis lixeiro e rápido que outros (como bash), pero con menos funcións.
Deriva directamente da versión NetBSD da Almquist Shell ('ash'), que Herbert Xu,
migrou a GNU/Linux no 1997, e posteriormente foi renomeado a 'dash' no 2002.

Dash (tal como ash), executa scripts máis rápido que bash e depende de menos
bibliotecas. Pretende ser máis fiable en caso de problemas de actualización ou fallos no
disco. Dash está indicado para ser usado:

• Intérprete de comandos nos medios de instalación;

• Intérprete de comandos do usuario 'root';

• Substitución de '/bin/sh';

• Unha contorna de probas de scripts de shell, para verificar a súa compatibilidade


co estándar POSIX.

Dash é un substituto moderno para ash en Debian e está pensado para ser o estándar
'/bin/sh' de Debian. A partir da versión 6.10 de outubro de 2006, o dash tamén é o
estándar '/bin/sh' de Ubuntu.

1.3 INTRODUCIÓN AOS COMANDOS DO BASH

Os comandos Bash son un conxunto de parámetros utilizados para a administración e


configuración do sistema, así como un conxunto de combinacións de teclas especiais para
realizar tarefas específicas en contornas Linux/Unix, a través dun intérprete de comandos
Bash.

Os comandos son en si un ficheiro executable, pois en GNU/Linux todo é un ficheiro .


Nos vindeiros apartados desta unidade describiremos e usaremos os principais comandos
de xestión.

7
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

2 AXUDA DO SISTEMA

2.1 man

Con este comando podemos consultar o manual, de aí o seu nome “man”. Vai seguido do
comando sobre o que queremos consultar o seu manual.

Por exemplo:

$ man touch

2.2 info

Trátase dun comando similar ao de ‘man’ con información ampliada sobre o comando a
consultar.

$ info touch

2.3 whatis

Este comando encárgase de buscar o contido da palabra indicada, nunha base de datos
propia, que contén breves descricións dos comandos.

Por exemplo:

$ whatis man

2.4 help

Ademais das páxinas do manual e da documentación "Info" que xa vimos, os comandos


Linux aceptan habitualmente a opción "--help". Aqueles que se invocan con esta opción,
retornan unha axuda das principais opcións dese comando. Por exemplo:

$ ls --help

2.5 apropos

Buscar en que páxinas do man existen referencias ao nome dado

$ apropos -r nome

Exemplo:

8
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

$ apropos rmdir
hrmdir (1) - remove an empty HFS directory
rmdir (1) - remove empty directories
rmdir (2) - delete a directory

3 XESTIÓN DE FICHEIROS
Debemos lembrar que en Linux "todo é un ficheiro" (Everything is a file), os directorios
tamén. Aquí imos ver o conxunto de comandos do sistema para poder realizar unha
correcta xestión dos mesmos.

Hai unha serie de comandos que permiten asignar aos ficheiros permisos, así como o seu
propietario e grupo. Eses verémolos máis adiante, na sección "Administración de usuarios
e grupos"

3.1 ls

Lista os arquivos e directorio do directorio onde te atopes, ignorando os que comecen por
punto (".")

$ ls

Principais parámetros:

➔ "–l": Amosa a información detallada e en columnas

$ ls -l

➔ "-a": Amosa todos os ficheiros e directorios, sen ignorar os arquivos ocultos que
comezan por "." (comportamento por defecto).

$ ls -a

➔ "-R": Para enumerar de xeito recursivo, todos os arquivos nun directorio (visualiza
todas as follas da árbore).

$ ls -R

➔ "–r" : Inverte a orde dos ficheiros e directorios amosados.

$ ls -r

9
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

➔ "-S": Ordena a saída polo tamaño do ficheiro.

➔ "-t": Ordena a saída polo tempo de modificación do ficheiro.

➔ "-h": Amosa a información referida aos tamaños de xeito máis intuitiva para os
usuarios (Por exemplo: 1K, 234M, 2G). Por defecto amósanse bytes.

Podemos combinar os diferentes parámetros do seguinte xeito:

$ ls -laSh

3.1.1 Filtrar a saída do comando "ls"


Para os filtros usaremos os caracteres interrogación (?) e o signo de asterisco (*),
denominados caracteres comodíns.

➔ Un signo de interrogación úsase para representar un personaxe.

$ ls -l meu ficheiro?

➔ Un asterisco úsase para representar cero ou máis caracteres.

$ ls -l myprob *

3.2 cd

Con este comando, podemos desprazarnos entre diferentes directorios. Se queremos ir a


un directorio particular:

$ cd /var/cache

Se no seu lugar estamos nun directorio e queremos ir ao inmediatamente superior

$ cd ..

Ou ben ir directamente a outro directorio que está ao mesmo nivel que o noso:

$ cd ../log

10
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

3.3 sort

Ordena o resultado dun texto dado. Por exemplo, se temos o ficheiro "file.txt" co seguinte
contido:

Brais
Celtia
Anton
Xiana
Breixo

Se executamos por consola o seguinte:

$ sort file.txt
Anton
Brais
Breixo
Celtia
Xiana

3.4 pwd

Amosa o nome do directorio de traballo actual.

Un exemplo:

$ pwd
$ /home/tux

3.5 tree

Amosa o nome do directorio de traballo actual. En moitas distribucións GNU/Linux non


ven por defecto, polo que é preciso instalalo. En Debian e Ubuntu basta con facer

# apt install tree

Exemplo:

$ tree
/home
└── tux
├── Desktop
├── Documents
├── Downloads
├── Music

11
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

├── Pictures
├── Public
├── Templates
├── Videos
└── VirtualBox VMs

3.6 mkdir
Permite crear os directorios especificados. Por defecto so os engade senón existen.
Exemplo:

$ mkdir directorio1

Principais parámetros:

➔ "-m": podemos usar esta opción para establecer un modo de ficheiro (permisos,
etc.) para os directorios creados. A sintaxe do modo é a mesma que co comando
"chmod".

$ mkdir -m 754 directorio1

➔ "-p": crea directorios pais segundo sexa necesario. Cando se especifica esta opción,
non se reporta ningún erro se xa existe un directorio.

$ mkdir -p directorio1/dir1.1/dir1.1.1

Neste caso, se algúns dos directorios pai "directorio1" e "dir.1.1" non existe, créaos
tamén, ademais do "dir1.1.a".

➔ "-v": Habilitamos a saída detallada, deste xeito imprime unha mensaxe para cada
directorio creado.

$ mkdir -pv directorio1/dir1.1/dir1.1.1

3.7 rmdir

Serve para eliminar directorios ou subdirectorios baleiros do noso sistema de ficheiros. O


seu nome provén das palabras en inglés 'remove directory'.

Exemplo:

$ rmdir directorio1/dir1.1/

12
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

Dun xeito análogo ao funcionamento en "mkdir", ao usar o parámetros "-p", eliminaranse


os directorios pai que conteñen ao actual.

$ rmdir -p directorio1/dir1.1/dir1.1.1

3.8 rm

Realiza a función de eliminar ficheiros e directorios do sistema de ficheiros. Este comando


debe usarse con precaución, xa que pode ser moi destrutivo, xa que, executado por
defecto, elimina os ficheiros sen pedir confirmación. O nome do comando rm provén da
palabra "remove" en inglés.

Exemplo:

$ rm directorio1/ficheiro.txt

Principais parámetros:

➔ "-d": Eliminar ficheiro de tipo directorio que se atopen baleiros.

$ rm -d directorio1

➔ "-r" ou "-R": Eliminar de xeito recursivo, tanto ficheiros como directorios.

$ rm -r directorio1

3.9 cp

O comando cp en GNU/Linux úsase para facer copias de ficheiros e directorios.

Exemplo:

$ cp fich1 fich1-copia

Principais parámetros:

➔ "-r": para copiar de xeito recursivo, moi útil no caso de querer copiar un directorio
e todo o seu contido.

➔ "-u": para actualizar o contido no directorio de destino, deste xeito so copia os


novos datos (ficheiros e directorios), mantendo intactos os que xa estaban no
destino.

13
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

➔ "-v": o comando mosa as tarefas que está a realizar na pantalla.

$ cp -ruv directorio1 directorio-destino

3.10 mv

Move ou renomea ficheiros ou directorios.

Exemplos:

➔ Renomear un directorio:

$ mv directorio1 directorio2

➔ Mover un ficheiro a outro directorio:

$ mv directorio1/file1.info directorio2/

3.11 rename

Serve para renomear o un ficheiro ou conxunto de ficheiros (non directorios). En moitas


distribucións GNU/Linux non ven por defecto, polo que é preciso instalalo. En
Debian/Ubuntu basta con facer:

# apt install tree

Para este comando faise uso de expresións regulares (ver

➔ Exemplo 1:

$ rename 's/.jpeg/.jpg/' *

Deste xeito indicamos que na localización indicada se cambiarán todos os ficheiros


con extensión “jpeg” por “jpg”

➔ Exemplo 2:

$ rename -n 's /copy/renamed/i' * .txt

De todos os ficheiros contidos no directorio actual e que teñen a extensión ".txt",


muda a palabra “copy” por “renamed”, sen importar se os nomes están en
maiúsculas ou minúsculas.

14
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

➔ Exemplo 3:

$ rename -n 's /^nonsei//' * .txt

De todos os ficheiros contidos no directorio actual, con extensión ".txt" e que


ademais comecen pola palabra “nonsei”, mudamos a palabra “nonsei” por “”
(nada), ou o que é o mesmo, quita a palabra “nonsei”.

➔ Exemplo 4:

$ rename -n 's/ /-/g' * .mp4

Neste exemplo se substitúe os espazos dos nomes dos arquivos “.mp4” da carpeta
actual cun “guión”. Se o nome é “Nome dun vídeo.mp4”, ao aplicar o comando
quedaría “Nome-dun-vídeo.mp4”.

➔ Exemplo 5:

$ rename -n 's/ //g' *

Neste exemplo estamos indicando que retire todos os espazos aos nomes de todos
os arquivos e directorios da ruta onde se atopa.

➔ Exemplo 6:

$ rename -n 's/\d{0}/mpacior_/' *.mp4

Neste exemplo dígolle que engada a palabra "mpacior_" ao comezo de cada ficheiro
".mp4" que está no directorio onde me atopo. Por exemplo, para un vídeo que se
chame "001.mp4" agora pasará e ter o nome "mpacior_001.mp4".

➔ Exemplo 7:

$ rename -n 's /\./_mpacior./' *.mp4

Substitúe o carácter de punto "." pola palabra "_mpacior". A maioría dos ficheiros
teñen unha extensión que comeza con "." máis a extensión, sempre ao final do
nome do ficheiro, polo tanto, eliminando ese punto eliminaríase a extensión, por iso
engadín o punto ao final da palabra "_inuyasha". Se un vídeo chámase "001.mp4"
agora o nome cambiaría a "001_inuyasha.mp4".

15
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

➔ Exemplo 8:

$ rename -n 'y/A-Z/a-z/' *.mp4

Renomea todos os ficheiros ".mp4" do cartafol actual de maiúsculas a minúsculas.

3.12 touch

Permite modificar datas(acceso, modificación, cambio) de arquivos . Ademais permite


xerar ficheiros baleiros se non existen.

➔ Exemplo 1: Crea o ficheiro /tmp/a.tmp se non existe, en caso contrario, modifica as


datas de acceso ao ficheiro.

$ touch /tmp/ficheiro.tmp

➔ Exemplo 2: Crear varios ficheiros en branco, ou se existen modificar a súa data de


acceso.

$ touch ficheiro1.txt ficheiro2.txt ficheiro3.txt

Tamén poderíamos escribilo deste xeito:

$ touch ficheiro{1..3}.txt

➔ Exemplo3: Crear un ficheiro cunha data de creación dada, ou se xa existe,


modificala:

$ touch --date=2015-09-01 archivo.txt

3.13 ln

O procedemento típico para a creación dun enlace simbólico en GNU/Linux pasa pola
utilización do comando ln. Así temos:

 Crear un softlink1 (enlace brando):

ln –s elemento_orixe elemento_destino

1 É importante lembrar que a ruta almacenada dentro dun softlink corresponderá con aquela que nos indiquemos (relativa ou absoluta) durante a súa
creación dende a liña de comandos.

16
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

Dese xeito se temos un ficheiro que se denomina cousa e queremos crear un


enlace brando ao mesmo situado no mesmo directorio que o primeiro,
poñéndolle de nome enlace fariamos:

ln –s cousa enlace

 Crear un hardlink (enlace duro):

ln elemento_orixe elemento_destino

Polo tanto, para crear un enlace duro a un ficheiro ficheiro_orixe, de xeito que
o hardlink se denominara enlace_a_ficheiro, fariamos:

ln ficheiro_orixe enlace_a_ficheiro

3.14 cat

Visualiza o contido de ficheiros. Si se usa con varios ficheiros á vez, amosará o seu
contido de xeito secuencial.

Exemplos:

a) Ver o contido do ficheiro "/etc/passwd"

$ cat /etc/passwd #

b) Ver o contido do ficheiro "/etc/group"

$ cat /etc/group

c) Ver o contido do ficheiro "/etc/group" numerando as liñas

$ cat -n /etc/group

3.15 tac

O inverso de cat, é dicir, ver o contido dun ficheiro empezando dende a última liña ata a
primeira.

Exemplos:

a) Ver o contido do ficheiro /etc/passwd empezando dende a última liña ata a primeira

17
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

$ tac /etc/passwd

Ollo! Non existe a opción -n que si hai en cat, polo que isto daría un erro:

$ tac -n /etc/passwd

3.16 nl

Ver o contido dos ficheiros numerando as liñas. No seguinte exemplo vemos o seu
funcionamento sobre o ficheiro /etc/passwd

$ nl /etc/passwd

3.17 more

Ver contido dun ficheiro de xeito paxinado, facendo pausa segundo as dimensións da
pantalla. Non permite retroceder para volver a visualizar parte do ficheiro amosado.

$ more /etc/passwd

3.18 less

Trátase dun programa similar a “more”, pero máis avanzado, xa que permite consultar o
contido dun ficheiro podendo moverse por el a través das teclas frechas ( ←, ↑ , →, ↓), ou

<AvPág> e <RePág>.

$ less /etc/passwd

3.19 find

O comando máis común usado para buscar e filtrar ficheiros en Linux, é a través do
comando find. O deseño básico deste comando é o seguinte:

find <startingdirectory> <options> <search term>

• find: Comeza coa palabra clave find, que alerta a Linux de que o seguinte se refire
á busca dun ficheiro.

• <startingdirectory>: O argumento <startingdirectory> é o punto de orixe desde


onde desexa iniciar a busca. Pode substituírse pola ruta onde se desexa buscar,

18
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

incluíndo:

◦ / (slash): busca en todo o sistema (raíz)

◦ . (punto): busca na carpeta na que estamos traballando actualmente


(directorio actual).

◦ ~ (tilde): busca no noso directorio 'home'.

• <options>: Este segundo argumento úsase para indicar por que tipo de
argumento queremos buscar no noso ficheiro: o nome, o tipo, a data de creación
do ficheiro, etc.

• <searchterm>: O terceiro argumento é onde se especificará o termo de busca


relevante.

3.19.1 Filtrar por nome


Para filtrar por nome temos o parámetro '-name' e '-iname' sobre os que podemos usar
patróns de busca. A diferenza entre eles é que '-iname' non distingue as maiúsculas das
minúsculas á hora de aplicar o filtrado.

Exemplos:

➔ -name: Buscar por nome:

$ find . -name "my-file.txt"

➔ -iname: Buscar por nome sen distinguir maiúsculas e minúsculas:

$ find . -iname "my-file.txt"

3.19.2 Filtrar por tipo


O parámetro '-type' permite listar toda a información en función dos seus tipos, e permite
as seguintes opcións:

• d: directorio

• f: ficheiro normal

• l: ligazón simbólica

• c: dispositivos de caracteres2

2 Os dispositivos de caracteres son os que utilizan a comunicación (enviar ou recibir datos) a través de caracteres sinxelos (bytes
ou octetos). Exemplos: teclados, ratos, tarxetas de son, monitor, panel táctil, tarxeta gráfica, ..., é dicir, a maioría dos dispositivos

19
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

• b: dispositivos de bloque3

Exemplo:

$ find . -type f -name “[a-Z][0-9]*.txt”

O anterior exemplo busca todos os ficheiros normais (tipo f) que comezan por un carácter
seguido dun díxito e con extensión '.txt'

3.19.3 Filtrar por permisos


Os usuarios poden buscar ficheiros en función dos permisos dos ficheiros utilizando o
parámetro '-perm'.

Podemos usar as notacións simbólicas como:

• u: para usuario

• g: para o grupo

• o: outras

• a: Tamén podemos usar a letra 'a' para representar as tres categorías. E será
certa se algunha delas ten o permiso indicado.

Os permisos que desexamos filtrar pódese especificar usando as letras: r(ler), w


escribir), x(executable).

Exemplos:

➔ Buscar ficheiros cos permisos 644 (rw- r-- r--)

$ find /usr -perm 644

➔ Buscar ficheiros con permisos de execución para o usuario e de escritura para o


grupo

$ find /usr -perm /u+x,g+w

tamén se podería escribir así:

de E/S (entrada e saída)

3 Os dispositivos de bloque son aqueles nos que a comunicación se realiza a través de bloques de datos, é dicir, conxuntos maiores
que os caracteres. Estes dispositivos teñen a capacidade de aloxar unha caché ou búfer para os accesos, a diferenza dos
dispositivos de caracteres que carecen del. O tamaño do bloque pode variar (512 B, 1024 B ... a 4 KiB). Os discos duros son
exemplos de dispositivos de bloques (HDD, SSD, SSHD, ...)

20
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

$ find /usr -perm /u=x,g=w

➔ Buscar os ficheiros con permisos de lectura e escritura para o usuario

$ find . -perm /u=r,u=w

➔ Temos a posibilidade de usar os parámetros: '-readable', '-writable' e '-


executable'. Será certo se o usuario ten algún dos permisos que indican. Por
exemplo, buscar os ficheiros con permisos de lectura e escritura para o usuario.

$ find . -readable -writable

3.19.4 Filtrar por tamaño


Linux ofrécelle a opción de buscar ficheiros segundo os seus tamaños. A sintaxe básica
para buscar ficheiros por tamaño é:

$ find <directory> -size <size-magnitude> <size-unit>

Podes especificar as seguintes unidades de tamaño:

• c: bytes

• b: anacos de 512 bytes

• k: kilobytes

• M: megabytes

• G: gigabytes

Exemplo: Buscar ficheiros na ruta especificada dun tamaño maior de 2 GB e menor de 5


GB:

$ find . -size +2G -size -5G

Existe tamén o parámetro '-empty' que permite buscar ficheiros baleiros:

$ find . -empty -iname "my-file.txt"

3.19.5 Filtrar por data


Podemos buscar ficheiros en función da súa data de acceso e modificación hai 3 rexistros

21
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

para facelo:

• -atime: data máis recente na que se leu ou escribiu o ficheiro.

• -mtime: data máis recente na que se modificou o ficheiro.

• -ctime: data máis recente na que se actualizaron os metadatos do ficheiro.

Exemplos:

➔ Busca na ruta ficheiros modificado fai máis de 2 días

$ find . -mtime +2

➔ Busca na ruta especificada ficheiros aos que se accedeu fai menos de 3 días

$ find . -atime -3

3.19.6 Outros parámetros de filtrado


A continuación enumeramos outros parámetros bastante utilizados:

➔ maxdepth: Indica o máximo de profundidade sobre o que queremos buscar


(directorios de xeito recursivo). Senón se indica nada busca en todas os
subdirectorios que contén a ruta indicada. Este parámetro é conveniente colocalo
ao inicio para que o comando sexa máis eficiente.

$ find . -maxdepth 2 -iname "my-file.txt"

➔ -not: Negar un parámetro de filtrado, por exemplo buscar todos os ficheiros que
non comecen por un díxito.

$ find . -not -name "[0-9]*"

➔ -delete: Este parámetro elimina os ficheiros atopados (se temos permiso para elo)

$ find . -name “*.txt” -delete

3.19.7 Executar un comando sobre os elementos atopados


O parámetro '-exec' fornece moita potencia ao comando 'find', pois permite executar un
comando sobre o conxunto de resultados da búsqueda.

Exemplos:

22
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

➔ Copiar todos os ficheiros a unha determinada carpeta 'dir1' do $HOME do usuario.

$ find / -type f -iname "pr*" -exec cp {} ~/dir1 \;

➔ Cambiar o permiso para os ficheiros atopados.

$ find . -perm /u=r,u=w -iname "pr*" -exec chmod 600 {} \;

3.20 whereis

Indícanos onde se atopa un determinado ficheiro binario dun comando.

Exemplo:

$ whereis shutdown
shutdown: /usr/sbin/shutdown /usr/share/man/man2/shutdown.2.gz
/usr/share/man/man8/shutdown.8.gz

3.21 file

É un comando da familia de sistemas operativos Unix, que permite detectar o tipo e


formato dun ficheiro. Para conseguilo, analiza a cabeceira, o número máxico ou o contido
que ten o ficheiro.

A invocación do comando ficheiro ten o seguinte formato:

file [PARÁMETROS] FICHEIRO ...

Os parámetros posibles, segundo a especificación POSIX, son:

• '-d': Realice probas de sintaxe e número máxico para o sistema. Esta é a opción
predeterminada, en caso contrario úsase '-m' ou '-M'

• '-h': Se o ficheiro a analizar é unha ligazón simbólica, identifícao como tal.

• '-i': Non proporcione unha valoración adicional máis alá do tipo básico.

• '-m ficheiro': Realiza unha proba adicional de número máxico co ficheiro indicado

• '-M m ficheiro': Semellante a '-m', excepto que non realiza as probas de sintaxe e
número máxico predeterminadas do sistema.

Exemplos:

➔ Ver a informacón por defecto dun ficheiro:

23
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

$ file ficheiro.mp3
ficheiro.mp3: Audio file with ID3 version 2.4.0, contains: MPEG ADTS,
layer III, v1, 48 kbps, 44.1 kHz, Stereo

➔ Visualizar solo o tipo mime dun ficheiro:

$ file --mime-type ficheiro.mp3


ficheiro.mp3: audio/mpeg

3.22 wc

Amosa o total de liñas, palabras e caracteres dun ficheiro.

Exemplo:

$ wc file1.txt

3.23 grep

Busca nun ou máis ficheiros unha cadea determinada de texto. Se atopa a cadea,
indícanos onde está. A sintaxe é así:

$ grep [opcións] patrón [FICHEIRO/Directorio]

Opcións básicas de grep:

• -c: conta o número de partidas

• -E: Expresión regular estendida

• -f: obtén o patrón ou patróns de busca dun ficheiro (un por cada liña)

• -i: non distingue maiúsculas e minúsculas á hora de buscar

• -l: imprime o nome de cada ficheiro de entrada onde se atopan coincidencias

• -n: imprime o número de liña onde se atopan as coincidencias

• -o: imprime só a parte que coincida

• -v: Inverte a dirección de busca

• --color: resalte a palabra que coincida coa cor especificada na variable de entorno
GREP_COLOR (senón está definida, vermello por defecto).

24
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

• -r, -R: coincide con todos os ficheiros dun directorio, incluídos os subdirectorios
(busca recursiva)

Trátase dun comando moi potente e utilizado polos usuarios. Exemplo:

$ grep -i 'user1' /etc/passwd

Utilizando o parámetro ‘-i’ ignoramos a diferenza entre maiúsculas e minúsculas.

$ grep -R -i --color -n 'SMTP' /usr/share/

Tamén se podería escribir así:

$ grep -Rin --color 'SMTP' /usr/share/

3.24 head

Por defecto ver o contido das 10 primeiras liñas dun ficheiro.

Exemplos:

a) Ver o contido das 10 primeiras liñas do ficheiro "/etc/passwd"

$ head /etc/passwd

b) Ver o contido das 8 primeiras liñas do ficheiro "/etc/passwd" (as dúas opcións son
válidas)

$ head -n 8 /etc/passwd #opción 1


$ head -8 /etc/passwd #opción 2

3.25 tail

Por defecto ver o contido das 10 últimas liñas dun ficheiro.

Exemplos:

a) Ver o contido das 10 últimas liñas do ficheiro "/etc/passwd"

$ tail /etc/passwd

b) Ver o contido das 8 últimas liñas do ficheiro "/etc/passwd" (as dúas opcións son
válidas)

25
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

$ tail -n 8 /etc/passwd #opción 1


$ tail -8 /etc/passwd #opción 2

c) Deixar aberto o ficheiro "/var/log/messages" para lectura, comenzando a ver polas


10 últimas liñas. Moi empregado na revisión de logs

$ tail -f /var/log/syslog

Mesmo exemplo mas engadindo novos parámetros, neste caso comenzando a ver
polas 2 últimas liñas.

$ tail -n 2 -f /var/log/syslog

3.26 tr

O comando tr úsase para substituír ou eliminar certos caracteres. É realmente útil, e o


mellor que podemos facer para comprobar o seu funcionamento, é visualizar algúns
exemplos:

➔ Substituír os caracteres en minúscula por maiúsculas :

$ echo "Ola mundo" | tr a-z A-Z


OLA MUNDO

➔ Substituír os espazos en branco por separadores:

$ echo "Ola mundo Ola mundo" | tr [: space:] '\ t'


Ola mundo Ola mundo

➔ Suprimir os espazos en branco que se repiten :

$ echo "Ola como estás" | tr -s [: space:]


Ola como estás

➔ Eliminar un ou varios caracteres específicos :

$ echo "Ola como estás" | tr -d 'a|á'


Ol como ests

➔ Deixar só os caracteres numéricos:

26
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

$ echo "O día 13 vou ter 41 anos" | tr -cd [: digit:]


1341

➔ Unir todas ás liñas dun ficheiro nunha soa liña:

$ tr -s '\ n' '' <test.txt

Como se pode observar, o comando "tr" ten moitas e variadas aplicacións. Aquí só se
amosan algúns exemplos.

3.27 nano

Este comando fai as funcións de editor en modo terminal. Permite abrir un ficheiro,
visualizalo e editalo (se temos os permisos axeitados). Non se trata do mellor, iso si, é un
dos máis sinxelos de usar.

Exemplo:

$ nano ficheiro

Comandos básicos:

• Ctrl + g: Abrir axuda nano.

• Ctrl + x: Saír de nano.

• Ctrl + o: Garda o ficheiro actual.

• Ctrl + r: Insira outro ficheiro no actual.

• Ctrl + w: Buscar un texto no ficheiro que ten aberto.

• Ctrl + e: Volver á páxina anterior.

• Ctrl + v: Ir á páxina seguinte.

3.28 sed

Sed considérase un editor de texto orientado ao "fluxo" onde, a diferenza dos clásicos
editores "interactivos", onde recibe unha serie de liñas para procesar, ben a través dun
ficheiro ou mediante STDIN. Cada liña é procesada e o resultado envíase á saída
estándar.

O formato básico de uso é o seguinte:

27
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

$ sed [-ns] '[dirección] instrución argumentos'

Onde:

• [enderezo]: é opcional, xa que é un número de liña (N), un rango de números de


liña (N, M) ou unha busca de expresión regular (/cadea/) que indica o alcance das
instrucións. Se non se especifica [dirección], actúase sobre todas as liñas do fluxo.

• instrución: pode ser ter os seguintes parámetros:

◦ i: Inserir liña antes da liña actual.

◦ a: Inserir liña despois da liña actual.

◦ c: Cambiar a liña actual.

◦ d: Eliminar a liña actual.

◦ p: Imprimir a liña actual ao estándar.

◦ s: Substituír a cadea na liña actual.

◦ r file: Engade contido do "ficheiro" á liña actual.

◦ w file: Escribir a saída nun ficheiro.

◦ !: Aplicar instrucións ás liñas non seleccionadas por condición.

◦ q: Rematar o procesamento de ficheiros.

◦ -n: Non mostre por stdout as liñas que se están procesando.

◦ -s: trata todos os ficheiros entrantes como fluxos separados.

3.28.1 Exemplos de substitución


➔ Substituír cadeas:

$ sed 's/^Ubuntu 19.04/Ubuntu 20.04/g' ficheiro > ficheiro2

➔ Substituír cadeas de texto, pero só nas liñas que conteñan unha cadea dada:

$ sed '/cadea_dada/ s/vella/nova/g' ficheiro > ficheiro2

➔ Substituír cadeas só en determinadas liñas e sacar o resultado a outro ficheiro:

28
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

$ sed '5,6 s/vella/nova/g' ficheiro > ficheiro2

➔ Substituír múltiples cadeas (A o B):

$ sed 's/cadea_rc1\|cadea_rc2/cadea_nova/g'

➔ Substituír liñas completas(c) que cumpran ou non un patrón:

$ echo -e "linha 1\nlinha 2" | sed '/1/ cProba'


Proba
linha 2

$ echo -e "linha 1\nlinha 2\nlinha 3" | sed '/1/ !cProba'


linha 1
Proba
Proba

3.28.2 Exemplos de inserción


➔ Inserir 3 espazos en branco ao comezo de cada liña:

$ sed 's/^/ /' ficheiro

➔ Engadir unha liña antes ou despois do final dun ficheiro ($=última liña):

$ sed -e '$i Proba' ficheiro > ficheiro2


$ sed -e '$a Proba' ficheiro > ficheiro2

➔ Inserir una liña en branco antes de cada liña que cumpra unha regex (expresión
regular):

$ sed '/cadea/{x;p;x;}' ficheiro

➔ Inserir unha liña en branco antes e despois de cada liña que cumpra unha regex:

$ sed '/cadea/{x;p;x;G;}' ficheiro

➔ Inserir unha liña en branco cada 3 liñas:

$ sed 'n;n;G;' ficheiro

29
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

➔ Inserir un número de liña antes de cada liña:

$ sed = filename | sed 'N;s/\n/\t/' ficheiro

3.28.3 Exemplos de borrado


➔ Eliminar un rango concreto de liñas dun ficheiro:

$ sed '2,4 d' ficheiro > ficheiro2.txt

➔ Eliminar todas as liñas dun ficheiro excepto un rango:

$ sed '2,4 !d' ficheiro > ficheiro2.txt

➔ Eliminar a última liña dun ficheiro:

$ sed '$d' ficheiro

➔ Eliminar desde unha liña concreta até o final do ficheiro:

$ sed '2,$d' ficheiro > ficheiro2.txt

➔ Eliminar as liñas que conteñan una cadea:

$ sed '/cadea/ d' ficheiro > ficheiro2.txt


$ sed '/^cadea/ d' ficheiro > ficheiro2.txt
$ sed '/^cadea$/ d' ficheiro > ficheiro2.txt

➔ Eliminar liñas en branco (variación do anterior exemplo):

$ comando | sed '/^$/ d'


$sed '/^$/d' ficheiro > ficheiro2.txt

3.29 diff

Este comando compara as diferenzas entre ficheiros liña por liña.

A sintaxe simple do comando é:

$ diff ficheiro1 ficheiro2

30
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

Deste xeito diff compara as diferenzas entre as liñas destes dous ficheiros, sen opcións
especiais. O comando diff mostrará as liñas que hai que cambiar para que coincidan os
dous ficheiros. O resultado é o seguinte:

• Os números de liña correspondentes ao primeiro ficheiro. Unha coma entre


números, para indicar un rango de liñas.

• Unha letra que indica a acción para que os dous ficheiros coin:

◦ "a": para engadir

◦ "c": para cambiar

◦ "d": para eliminar

◦ para separar as liñas do primeiro ficheiro e do segundo.

• Os números de liña correspondentes ao segundo ficheiro

• Os símbolos especiais para realizar cambios:

◦ "<": son liñas do primeiro ficheiro

◦ ">" son liñas do segundo ficheiro

4 XESTIÓN DE DISCOS E DISPOSITIVOS

4.1 mount

Encárgase de montar un dispositivo dado sobre o sistema de ficheiros.

Exemplo:

# mount -t iso9660 /dev/scd0 /media/cdrom

4.2 umount

Encárgase de desmontar un dispositivo montado no sistema de ficheiros.

Exemplo:

# umount /media/cdrom

4.3 df

Este comando encárgase de amosar do espazo usado e do dispoñíbel en todos os

31
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

sistemas de ficheiros montados.

Se usamos o parámetro ‘-h’ amosará a información dun xeito máis lexible para os
usuarios, tal como pasa con outros comandos, como pode ser 'ls'.

Exemplo:

$ df -h

4.4 du

Amosa o espazo ocupado polos ficheiros e directorios.

Exemplo:

$ du -sh /opt

Algúns parámetros de configuración son:

• "-s": para obter só a suma total, en lugar do tamaño de cada directorio que
atopa.

• '-h': lexible por humanos, para obter o tamaño coa unidade máis próxima

4.5 lsblk

Amosa a información dos dispositivos de bloques, como: discos duros, volumes e grupos
de volumes

Exemplo:

$ lsblk -fm

Destacamos os seguintes parámetros:

• “-f”: Amosa a información ampliada.

• “-m”: Indicará a información do seu propietario e os permisos de lectura.

4.6 fdisk

Trátase dun comando útil no caso de querer xestionar os discos por consola (de xeito
gráfico usamos ferramentas como GParted).

32
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

Esta ferramenta permítelle realizar diferentes accións no disco duro, entre as que
destacamos:

• Listas información das particións: Amosar información dos discos duros e dos
discos lóxicos (chamados particións).

$ fdisk -l /dev/sda

• Crear ou editar particións

• Comprobe o tamaño dunha partición

• Eliminar particións

• Ver o contido dun disco específico

• Corrixir a táboa de particións no sistema

Tanto para GPT como para MBR pódese usar o comando 'sfdisk' para gardar o deseño de
partición do dispositivo nun ficheiro mediante a opción '-d ou --dump'. Por exemplo, parao
dispositivo /dev/sda:

# sfdisk -d /dev/sda > sda.dump

Para restaurar posteriormente ese deseño:

# sfdisk /dev/sda < sda.dump

Temos máis información detallada do seu uso na seguinte ligazón.

4.7 fsck

Fsck (file system consistency) é unha utilidade de liña de comandos desenvolvida para
analizar e reparar erros no sistema de ficheiros.

# fsck /dev/sda1

O comando fsck debe executarse con privilexios de superusuario ('root'). Algúns dos
parámetros máis populares son:

• '-A': aplícase a para comprobar todos os sistemas de ficheiros. A fonte da que


toma a información para facer esa lista é o ficheiro de configuración do sistema
'/etc/fstab'

33
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

• '-C': amosa a barra de progreso.

• '-l': bloquea o dispositivo para asegurarse de que ningún outro programa tentará
usar a partición durante a verificación e causar así erros

• '-M': non verifica os sistemas de ficheiros montados.

• '-N': amosa a acción que se vai realizar pero realmente non a executa.

• '-P': permite comprobar os sistemas de ficheiros en paralelo, incluído o root.

• '-R': non verifica o sistema de ficheiros raíz. Isto só é útil con '-A'.

• '-r' - Ofrece estatísticas para cada dispositivo que se está probando.

• '-T': non amosa o título.

• '-t': Permítenos especificar exclusivamente os tipos de sistemas de ficheiros a


verificar. Os tipos poden ser unha lista separada por comas.

• '-V': ofrece unha descrición da acción realizada.

Cando 'fsck' se executa en Linux, móstrase un código de saída asociado ao resultado, a


continuación enumeramos os diferentes significados deses códigos:

➔ 0: Non hai erros

➔ 1: Corrixíronse os erros do sistema de ficheiros

➔ 2: O sistema debe reiniciarse

➔ 4: Os erros do sistema de ficheiros deixáronse sen corrixir

➔ 8: Erro operativo

➔ 16: Erro de uso ou sintaxe

➔ 32: Comprobación cancelada por petición do usuario

➔ 128: Erro da biblioteca compartida

5 XESTIÓN DO SISTEMA

5.1 uptime

O comando uptime (en galego significa "tempo en liña"), é unha ferramenta que nos
permite obter principalmente información sobre o tempo que unha máquina ou servidor

34
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

leva activo desde o derradeiro inicio.

Tamén nos permite observar o número de usuarios en liña, a hora actual e a carga media
do sistema. Aínda que está dispoñible por defecto en todos os sistemas GNU / Linux, é un
comando usado con máis frecuencia en contornas de servidor.

Exemplo:

$ uptime
20:57:05 up 4:41, 1 user, load average: 0,49, 0,59, 0,70

C1 C2 C3 C4

A continuación indicamos a información representada en cada unha das columnas


marcadas (C1, C2, C3 e C4):

➔ C1: A hora actual: 20:57:05.

➔ C2: Tempo de funcionamento do sistema operativo: 4 horas e 41 minutos.

➔ C3: Número de usuarios conectados ao sistema operativo (iniciados a sesión): 1


usuario.

➔ C4: Carga media do sistema durante os últimos minutos, representado do seguinte


xeito:

◦ Carga media do último minuto: 0,49

◦ Carga media dos últimos 5 minutos: 0,59

◦ Carga media dos últimos 15 minutos: 0,70

5.2 exit

Remata a shell cun estado de N. Se se omite N, o estado de saída é o mesmo da última


orde executada.

Nos sistemas operativos da familia UNIX, cando se executa un proceso pode pasar dous
escenarios:

• Finaliza correctamente: devolve 0 (exit 0).

• Finaliza con erro: devolve un valor superior a cero entre 1 e 255.

Do mesmo xeito, as funcións dentro dun script Bash devolven un estado de saída, que
corresponde ao código de retorno do último comando executado, a non ser que se use no

35
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

script, a instrución "exit N" (onde N é un número enteiro entre 0 e 255).

5.2.1 Contextos de uso


A continuación indicamos varios contextos de uso deste comando e o que representa na
vida real ese saída do shell:

• Se non estamos en modo superusuario, pecha o terminal

• Se estamos en modo superusuario, sae dese shell, polo que volve ao anterior (ao
usuario desde o que pasamos a modo superusuario).

• Pecha unha conexión remota

• Nun script Bash permite indicar a saída de execución do script (exit 0...exit 255)

Exemplo:

$ exit

5.3 shutdown

O comando shutdown úsase para apagar ou reiniciar Linux desde o terminal. Pódense
engadir máis opcións, seguidas dunha especificación de hora e unha mensaxe. O
comando de apagado de Linux ten esta sintaxe:

• shutdown [OPCIÓNS] [TEMPO] [MENSAXE]

Para moitos dos comandos mencionados aquí, hai unha ou máis variantes que teñen o
mesmo resultado.

➔ Apagar Linux nun minuto:

$ shutdown -h

A opción -h indica un apagado ou apagado do sistema. Normalmente pódese


conseguir o mesmo simplemente dando o comando de apagado.

$ shutdown

➔ Reiniciar Linux nun minuto:

$ shutdown -r

36
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

A opción '-r' significa 'reboot', é dicir, reiniciar.

➔ Apagar Linux de xeito inmediato:

$ shutdown -h 0

O comando de apagado segue aquí ('-h'), e ao mesmo tempo '0', para indicar que
se execute de inmediato. Outro comando, moito máis común para o apagado
inmediato de Linux, é o seguinte:

$ shutdown now

➔ Reiniciar Linux inmediatamente :

$ shutdown -r 0,

Linux reiniciase inmediatamente. Despois do comando de apagado, indícanse a


opción '-r' (reiniciar) e ao mesmo tempo '0', para indicar que debería facerse de
xeito inmediato. Existe unha nomenclatura alternativa bastante estendida:

$ shutdown -r now

5.4 dmesg

dmesg (mensaxe de diagnóstico, mensaxes de diagnóstico) é unha instrución presente


nos sistemas operativos Unix que lista o búfer de mensaxes do núcleo.

Este búfer contén unha variedade de mensaxes importantes xeradas durante

• O inicio do sistema

• A detección de hardware

• A asignación de controladores

• Durante a depuración de aplicacións.

A información proporcionada por dmesg pode gardala no disco duro mediante un demo
(daemon) de rexistro (log), como 'syslog'. A sintaxe de dmesg é moi sinxela.

dmesg [OPCIÓNS]

Non é obrigatorio que apliques opcións, podes executalas tal cal.

37
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

$ dmesg

Normalmente esta ferramenta funciona con calquera usuario, se por un caso estraño non
permite o seu uso en usuarios sen permisos, recibirá unha mensaxe similar a:

dmesg: read kernel buffer failed: Operación non permitida

En Ubuntu, desde a versión 20.10, o uso deste comando está restrinxido por defecto, a
usuarios sen privilexios.

O erro anterior prodúcese pola configuración do parámetro "kernel.dmesg_restrict".


Podemos resolver o problema axustando os privilexios.

$ sudo sysctl -w kernel.dmesg_restrict=0

Exemplos:

➔ Amosar os últimos acontecementos do sistema :

$ dmesg | tail

A instrución dmesg redirecciónase ao comando 'tail', para ter unha visión dos
últimos acontecementos.

➔ Ver o ficheiro liña por liña e con cores :

$ dmesg --color=always | more

A saída impresa do comando pode ser moi longa, dificultando a lectura. Para ver o
ficheiro liña por liña ...

➔ Filtrar as mensaxes por dispositivo:

$ dmesg | grep -i usb

A ferramenta dmesg permítenos filtrar as mensaxes por dispositivo. No noso caso,


e como exemplo, extraemos un pendrive USB e un rato USB, despois duns
segundos volvémolos a inserir.

[ 5265.936151] usb 2-2: USB disconnect, device number 3

38
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

[ 5292.948110] usb 3-1: new low-speed USB device number 2 using


uhci_hcd
[ 5293.144136] usb 3-1: New USB device found, idVendor=046d,
idProduct=c077
[ 5293.144142] usb 3-1: New USB device strings: Mfr=1, Product=2,
SerialNumber=0
[ 5293.144146] usb 3-1: Product: USB Optical Mouse
[ 5293.144149] usb 3-1: Manufacturer: Logitech
[ 5293.159907] input: Logitech USB Optical Mouse as
/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/0003:046D:C077.0004/
input/input14
[ 5293.160911] hid-generic 0003:046D:C077.0004: input,hidraw2: USB HID
v1.11 Mouse [Logitech USB Optical Mouse] on usb-0000:00:1d.1-1/input0
[ 5300.036089] usb 1-2: new high-speed USB device number 5 using ehci-
pci
[ 5300.198040] usb 1-2: New USB device found, idVendor=13fe,
idProduct=4200
[ 5300.198046] usb 1-2: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[ 5300.198050] usb 1-2: Product: USB DISK 2.0
[ 5300.198054] usb 1-2: SerialNumber: C900589889F91731
[ 5300.322756] usb-storage 1-2:1.0: USB Mass Storage device detected
[ 5300.333790] scsi host2: usb-storage 1-2:1.0
[ 5300.334384] usbcore: registered new interface driver usb-storage
[ 5300.353236] usbcore: registered new interface driver uas
[ 5301.342373] scsi 2:0:0:0: Direct-Access USB DISK 2.0 PMAP
PQ: 0 ANSI: 6

5.5 history

Este é un dos comandos máis utilizados cando comezamos a usar o shell de Linux.
Encárgase de amosar o historial de todos os comandos que usaches no sistema.

$ history

O comando 'history' adoita usarse de xeito combinada con outros comandos, tal como
se amosa nos seguintes exemplos:

➔ Exemplo 1: Amosa os últimos 20 comandos executados

$ history 20

➔ Exemplo 2: Amosar os 10 primeiros comandos rexistrados en memoria

$ history | head -n 10

39
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

➔ Exemplo 3: Obter os comandos executados que conteñen unha determinada


secuencia de caracteres.

$ history | grep apt

➔ Exemplo 4: Para borrar o historial de comandos da memoria, só temos que


executar o seguinte comando:

$ history -c

Debemos ter en conta que cando se executan dous ou máis comandos idénticos, de xeito
consecutivo, so se garda unha copia (descártanse duplicados).

5.5.1 Configuración do history


Para o correcto funcionamento do comando 'history' na sesión do usuario, existen dous
ficheiros que debemos coñecer. Os dous están na carpeta do home de usuario
(representada polo símbolo ~):

➔ Base de datos: No ficheiro ~/.bash_history estarán gardados todos os comandos


executados na mesma orde que se executan. Cando invocamos ao comando
'history', a información que nos amosa, está gardada dentro deste ficheiro.

➔ Configuración: Hai dous ficheiros para configurar o funcionamento do historial:

◦ etc/bash.bashrc: Este é o ficheiro de configuración xeral, ou a configuración


por defecto de todos os usuarios do sistema.

◦ ~/.bashrc: Representa o ficheiro de configuración na 'home' do usuario, onde


se especifican os aspectos de funcionamento do comando para ese usuario.

5.5.2 Personalización do history

Para realizar a configuración, hai unha serie de aspectos sobre o funcionamento do


comando 'history' que debemos ter en conta:

• Número máximo de comandos gardados : A configuración estándar do historial fai


que se poidan almacenar até 2000 comandos como máximo no ficheiro
~/.bash_history. Este aspecto pódese modificar a través da variable HISTFILESIZE

• Número máximo de comandos en memoria: Se executamos o historial no


terminal, aínda que o ficheiro ~/.bash_history conteña 2000 comandos

40
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

almacenados, o terminal só amosará por defecto os últimos 1000 executados. Este


parámetro pódese configurar a través da variable HISTSIZE

• Rexistrar todos os comandos: Existe unha configuración predeterminada do


'history', pola cal non rexistra os comandos se os precedemos dun espazo. Este
comportamento pódese modificar a través da variable HISTCONTROL

5.5.3 Limpar e deshabilitar o 'history' do usuario


Podemos limpar e deshabilitar o 'history' a través dos seguintes mecanismos:

➔ Borrar todo o contido : Para eliminar o contido da memoria e da base de datos


(ficheiro ~ / .bash_history teremos que executar o seguinte comando:

$ history -c && history -w

➔ Borrar unha liña determinada: Se pretendemos borrar unha liña, por exemplo a
313 do historial almacenado na memoria, usaremos o seguinte comando:

$ history -d 313

➔ Desactivar o historial do historial de comandos : Se unha vez borrado o historial,


queremos desactivalo, poderiamos facelo engadindo ao final do noso ficheiro de
configuración (~/.bashrc) o seguinte comando:

unset HISTFILE

5.6 uname

Imprime información do sistema, incluíndo a versión do kernel, o núcleo e o sistema


operativo. Se queremos que nos amose información ampliada, podemos engadir o
parámetro "-a".

Exemplo:

$ uname -a

5.7 tee

É un comando da familia de sistemas operativos Unix que permite copiar os datos que
recibe da entrada estándar, a cero ou máis ficheiros especificados polo usuario, así como

41
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

á saída estándar.

O uso do comando resérvase só para o uso con tubos (pipes), e permite ao usuario
descargar a información xerada por calquera dos diferentes comandos que compoñen a
canalización nun ou máis ficheiros. Isto evita non ter que recorrer a outra execución
adicional para obter esta información.

A invocación do comando tee ten o seguinte formato:

$ tee [PARÁMETROS] [FICHEIRO, ...]

Os parámetros posibles son:

• "-a": Insire os datos ao final dos ficheiros.

• "-i": O sinal de interrupción SIGINT está configurado para ser ignorado. Esta
interrupción adoita ser lanzada polo usuario para cancelar a operación actual,
usando a combinación de teclas Ctrl+c.

Exemplos:

• Exemplo 1: Comprobar o reconto de liñas de file1.txt e emitirá a saída no terminal


e gardarao en file2.txt.

$ wc -l file1.txt | tee file2.txt

• Exemplo 2: Gardar a saída do comando ls en file.txt, e neste caso, ao indicar o


parámetro "-a", no caso de que xa exista o ficheiro, engadirá o contido ao final.

$ ls | tee –a file.txt

• Exemplo 3: Gardar a saída do comando ls en varios ficheiros.

$ ls | tee file1.txt file2.txt file3.txt

42
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

5.8 chroot

Trátase dun comando que permite executar un proceso baixo un directorio raíz simulado,
de xeito que o proceso non pode acceder a ficheiros fóra dese directorio.

Úsase principalmente para dúas cousas:

✔ Probar programas sospeitosos ou perigosos nun ambiente seguro (por exemplo,


instalar inestable nunha máquina estable sen interferir co ambiente principal).

✔ Engaiolar (executar baixo chroot) un servizo de rede (por exemplo, un servidor


web), de xeito que o contorno dese servizo sexa limitado e só acceda ao que
debería, evitando a escalada de acceso.

5.9 free

Amosa a memoria utilizada e dispoñible no sistema, incluíndo a SWAP. O seus parámetros


máis habituais son “-m” ou "-k", que serve para amosar a información en megabytes ou
kilobytes, respectivamente.

Exemplo:

$ free -m

5.10 clear

Este comando encárgase de borrar a pantalla.

$ clear

5.11 dpkg

É a ferramenta habitual para traballar cos paquetes con extensión .DEB, isto é, o xestor
de paquetes de Debian. O seu cometido é instalar, compilar, eliminar e manipular os
paquetes Debian.

5.12 md5sum

Crea hash MD5.

$ md5sum /etc/passwd

43
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

Crea hash MD5 do ficheiro /etc/passwd

5.13 sha512sum

Crea hash SHA512.

Exemplo:

$ sha512sum /etc/passwd

Crea o hash SHA512 do ficheiro /etc/passwd

44
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

6 USUARIOS
O concepto de usuario en Linux permite separar contornas de execución para diferentes
fins. Dúas persoas poden traballar simultaneamente no mesmo sistema, cada un con un
usuario diferente e un directorio persoal diferente.

Tamén é moi común que moitos servizos internos do sistema teñan o seu propio usuario
para restrinxir o acceso a ese servizo como mecanismo de seguridade. Deste xeito, se un
servizo ve comprometida a súa seguridade por un ataque, o acceso que ten o usuario
dese servizo servirá como contención do ataque e non poderá acceder a ficheiros
pertencentes a outro usuario (persoa ou servizo).

Demo (daemon) é o termo usado en Linux para referirse ao proceso dun servizo que se
executa de forma non interactiva en segundo plano. Xeralmente rematan coa letra d,
como httpd ou ftpd.

6.1 Ficheiros de configuración

A configuración do usuario en Linux manéxase esencialmente nos dous ficheiros


seguintes.

6.1.1 /etc/passwd
Contén información sobre as contas de usuario e as súas características. O seu formato é
o seguinte

nome: contrasinal: UID: GID: GECOS: directorio: shell

Podemos ver os campos con:

$ man passwd

Son os seguintes:

1. Login: Nome de usuario

2. Contrasinal: O contrasinal do usuario en texto plano, ou un asterisco * ou un X se

45
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

está cifrado.

3. ID de usuario (UID): Número único de identificación do usuario. Os usuarios


poden cambiar moitos parámetros, incluído o seu nome, pero o UID nunca se debe
cambiar. O UID raíz é 0. As contas de servizo e daemon teñen o número máis
baixo, mentres que as contas de usuario final comezan polo valor definido en
UID_MIN no ficheiro '/etc/login.defs'.

4. ID de Grupo (GID): Número de identificador único do grupo. Varios usuarios


poden ter o mesmo grupo, aínda que a creación dun usuario crea un grupo co
mesmo nome por defecto a non ser que se indique o contrario. Os datos do grupo
aparecen en '/etc/group'.

5. Información de usuario (GECOS): Campo de comentarios que inclúe


información adicional sobre o usuario (nome real, enderezo ...).

6. Directorio de inicio: Directorio persoal e d inicio do usuario. Os usuarios finais


adoitan colocarse baixo '/home'. Se o directorio non existe, o directorio de usuarios
pasa a ser '/'.

7. Shell: O shell que o usuario usa por defecto (en moitos casos é '/bin/bash'). Se o
usuario ten '/sbin/nologin' ou '/usr/bin/false', significa que non ten permiso para
iniciar sesión no sistema, o cal é común nos demos (daemons), como medida de
seguridade.

Exemplo de ficheiro:

root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
avahi:x:115:120:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
usuario:x:1000:1000:usuario,,,:/home/usuario:/bin/bash

Lista de comandos que usan o ficheiro '/etc/passwd':

• passwd

• su

• sulogin

• getent

• login

• pwck

46
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

• pwunconv command

• chpasswd

• chsh

• chfn

• useradd

• userdel

6.1.2 /etc/shadow
O sistema contén información sobre os contrasinais dos usuarios no ficheiro
'/etc/shadow', onde se almacenan cifrados.

Podemos ver os campos con:

$ man shadow

Son os seguintes:

1. Login: Nome de usuario

2. Password: Contrasinal cifrado. A función hash empregada para cifrar o contrasinal


indícase ao comezo. Sobre o valor deste campo debemos ter en conta:

▪ '*': úsase cando a conta nunca tivo contrasinal.

▪ '!': Significa que a conta foi desactivada para iniciar a sesión por
contrasinal.

Cando unha conta está bloqueada (bloqueo: 'usermod -l user'), o contrasinal do


usuario non se elimina, senón que se engade unha exclamación ao comezo do
hash do contrasinal, para indicar que foi bloqueado. Desbloquear o usuario
(desbloqueo: 'usermod -u user') elimina a exclamación, deixando o hash como
estaba antes.

3. Lastmod: Tempo transcorrido desde o último cambio da contrasinal.

4. Min: Número mínimo de días ata que se poida cambiar de novo o contrasinal.

5. Max: Número máximo de días ata que o sistema obriga a cambiar o contrasinal
do usuario.

6. Aviso: Número de días anteriores ao máximo no que se notifica ao usuario o seu

47
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

cambio de contrasinal forzado.

7. Inactividade: Número de días entre a caducidade do contrasinal e o bloqueo da


conta.

8. Expiración: Data da desactivación da conta. Se se deixa en branco, a conta nunca


caduca.

9. Reservado: Campo reservado para uso futuro.

6.2 Comandos de xestión de usuarios

A Shadow Tool Suite é unha colección de comandos, que permiten aos usuarios xestionar
sen ter que manipular directamente os ficheiros; '/etc/passwd' e '/etc/shadow', o que non
se recomenda debido á posibilidade de deixar incoherencias en ficheiros tan delicados.

6.2.1 Engadir un usuario: useradd


Engade un novo usuario ao sistema Linux co nome de usuario especificado.

Cando se engade un novo usuario créase unha entrada correspondente nos ficheiros
'/etc/passwd', '/etc/group' e '/etc/shadow'.

# useradd [opciones] [nombre_de_usuario]

Parámetros máis destacados:

• -d: Especifica o directorio persoal do usuario

• -s: Especifica a shell do usuario

• -g: Especifica o grupo principal do usuario

• -G: Especifica os grupos fillos do usuario

• -m: Crea o directorio home se non existe

• -M: Especifica que non se crea un directorio persoal para o usuario

• -e: Especifica a data de caducidade do usuario

• -uid: Especifica o identificador de usuario para o usuario

Exemplo:

# useradd -m -c "Usuario de prueba" -s "/bin/bash" usuario

48
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

6.2.2 Modificar un usuario: usermod


Este comando serve para cambiar os atributos dun usuario existente no sistema
(directorio persoal do usuario, nome de inicio de sesión, shell por defecto, a data de
caducidade do contrasinal , etc).

Os parámetros máis utilizados son:

• -a: Este parámetro serve para engadir o usuario indicado aos grupos
acompañantes combinado co parámetro -G.

• -c: Engade un novo valor ao campo de comentario no ficheiro de contrasinal do


usuario.

• -d: Novo directorio de inicio de sesión de usuario. Se se combina coa opción -m,
o contido do directorio actual moverase ao novo directorio de inicio, que se crea se
aínda non existe.

• -e: Data na que se desactivará a conta de usuario. A data especifícase no formato


AAAA-MM-DD.

• -f: O número de días ata que a conta se desactiva permanentemente despois de


que caducou o contrasinal. Un valor de '0' desactiva a conta en canto caducou o
contrasinal e un valor de '-1' desactiva esta función.

• -g: O nome do grupo ou ID do grupo principal do novo inicio de sesión do usuario.


O grupo debe existir. Calquera ficheiro do directorio persoal do usuario propiedade
do grupo principal anterior do usuario será propiedade deste novo grupo. O
propietario do grupo de ficheiros fóra do directorio persoal do usuario debe
configurarse manualmente.

• -G: Lista de grupos suplementarios dos que o usuario tamén é membro. Cada
grupo está separado do seguinte por unha coma, sen deixar un espazo en branco.
+Os grupos están suxeitos ás mesmas restricións que o grupo coa opción -g. Se o
usuario é membro dun grupo que non está na lista, o usuario será eliminado do
grupo. Este comportamento pódese cambiar a través da opción -a, que engade ao
usuario á lista actual de grupos engadidos.

• -l: O nome de usuario cambiarase para un novo inicio de sesión. Non hai cambios.
O directorio persoal do usuario probablemente necesite ser modificado
manualmente para reflectir o novo inicio de sesión.

• -L: Bloquear o contrasinal dun usuario. Isto pon un "!" diante do contrasinal

49
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

cifrado, desactivando efectivamente o contrasinal. Non podes usar esta opción


coas opcións -p ou -U. Nota: se desexa bloquear a conta (non só acceder cun
contrasinal), tamén pode configurar o EXPIRE_DATE a 1.

• -m: Move o contido do directorio persoal do usuario a unha nova localización. Esta
opción só é válida en combinación coa opción -d (ou --home) o usermod intentará
adaptar a propiedade do ficheiro y e os atributos ampliados, pero é posible que
teña que facerse cambios manuais máis tarde.

• -p: Permite modificar o contrasinal. Debe asegurarse de que o contrasinal cumpre


coa política de contrasinais do sistema. Non é o xeito recomendable de facelo pois
habería que pasarlle unha función de HASH xa que non encripta o contrasinal
automaticamente. Mellor usar o comando 'passwd'.

• -s: O nome do novo shell de inicio de sesión do usuario. Deixar este campo en
branco fai que o sistema seleccione a shell de inicio de sesión predeterminada.

• -u: Permite indicar un novo valor numérico para identificar ao usuario. Este valor
debe ser único e o seu valor non pode ser negativo. Os valores entre 0 e 999
normalmente resérvanse para contas do sistema. A caixa de correo do usuario e
os ficheiros que son propiedade do usuario e que se atopan no directorio persoal
do usuario cambiarán automaticamente o ID de usuario do ficheiro.

• -U: Permite desbloquear o contrasinal dun usuario. Isto elimina o "!" diante do
contrasinal cifrado.

Exemplos:

➔ Para cambiar o nome de inicio de sesión dun usuario:

# usermod -l nome_antigo nome_novo

➔ Para cambiar o directorio home / usuario, use:

# usermod -d /novo/directorio -m nome _de_usuario

➔ Para engadir o usuario a outros grupos suplementarios:

# usermod -G grupo1, grupo2, grupo3

➔ Use o parámetro --expiredate seguido da data en formato AAAA-MM-DD para

50
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

establecer a data de caducidade da conta de usuario:

# usermod --expiredate 2017-01-02 nome_de_usuario

➔ Para bloquear a conta dun usuario:

# usermod --lock nome_de_usuario

➔ Para desbloquear a conta dun usuario:

# usermod --unlock nome_de_usuario

➔ Cambiar o shell por defecto do usuario

# usermod -s "/bin/csh" nome_de_usuario

6.2.3 Xestionar as claves de usuario: passwd


O comando 'passwd' úsase para crear, cambiar e consultar datos do contrasinal dunha
conta de usuario. Un usuario normal pode executalo para cambiar o seu propio
contrasinal, e un usuario con permisos de administrador do sistema, pode usalo para
cambiar o contrasinal doutro usuario.

Funcionalidades máis utilizadas:

➔ Cambiar o contrasinal propio.

$ passwd

➔ Cambia o nome do usuario indicado.

# passwd nome_do_usuario

➔ Amosar a información de estado do contrasinal dun usuario, use a opción -S

# passwd -S nome_do_usuario
nome_do_usuario PS 2015-09-20 0 99999 7 -1

Na saída anterior, temos:

• 1º campo: amosa o nome de usuario

51
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

• 2º campo: o estado do contrasinal:

◦ PS: Password Set (Contrasinal definido)

◦ LK: Locked (Contrasinal bloqueado)

◦ NP: No Password (Sen contrasinal)

• 3º campo: mostra cando se modificou o contrasinal

• 4º campo: amosa a idade mínima, a idade máxima, o período de advertencia


e o período de inactividade do contrasinal

➔ Amosar información detallada do estado da contrasinal de todas as contas

# passwd -Sa nome_do_usuario

6.2.4 Eliminar un usuario: userdel


Para eliminar unha conta de usuario, empregamos o comando 'userdel', e para realizar
esta operación debemos ser 'root' para executar a acción:

Exemplos:

➔ Eliminar a conta de usuario pero non os ficheiros asociados ao usuario:

$ userdel nome_de_usuario

➔ Eliminar a conta de usuario e tamén os seus ficheiros asociados:

$ userdel -rf nome_de_usuario

6.2.5 Outros comandos

6.2.5.1 who

Amósanos quen está conectado no sistema. Importante se queremos reiniciar e non


queremos que ninguén usuario conectado se quede sen servizo e perda o que estaba
facendo.

Exemplo:

$ who
root tty1 2018-12-04 20:04
tux pts/0 2018-12-04 20:04

52
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

6.2.5.2 sudo

Con este comando podemos outorgar permisos de super usuario, sempre que teñamos
permisos para elo.

$ apt-get install gparted


¡Non tes permisos!
# sudo apt-get install gparted

7 GRUPOS
Os grupos permítenlle conceder permisos a un conxunto de usuarios simultaneamente. En
Linux un usuario ten os seguintes grupos:

• Grupo principal: é o que aparece como o seu GID en '/etc/passwd'. Só pode


haber un grupo principal por cada usuario.

• Grupos secundarios ou complementarios: son os xestionados no ficheiro


/etc/groups, onde se pode engadir un usuario a máis grupos.

Durante unha sesión, o usuario, se ten permisos, pode mudar temporalmente o grupo ao
que pertence:

• Grupo real: este é o seu grupo principal en '/etc/passwd'. É o grupo ao que


pertence un usuario cando inicia sesión.

• Grupo efectivo: é o grupo asignado como principal nun intre de tempo, e pode
non corresponder co real, pois usando o comando newgrp pódese mudar, de xeito
temporal, o grupo principal ao que pertence o usuario da sesión.

$newgrp adm

Esa configuración é efectiva ata pechar a sesión, ou que o usuario mude de novo o
seu grupo efectivo.

7.1 Ficheiro /etc/group

Este ficheiro contén información sobre os grupos do sistema. A súa estrutura é similar á
dos ficheiros passwd e shadow, cos seguintes campos:

• Grupo: Nome do grupo.

• passwd: Contrasinal que permite a un usuario cambiar de grupo. Se está baleiro,


non precisa contrasinal, e se ten unha 'x' significa que está xestionado polo

53
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

ficheiro '/etc/gshadow'.

• GID: Identificador único (numérico) para o grupo.

• Membros: Lista separada por comas de nomes de usuarios pertencentes a ese


grupo.

Do mesmo xeito ao que pasa co ficheiro '/etc/shadow' para os usuarios, existe o ficheiro
'/etc/gshadow', que almacena os contrasinais dos grupos cifrados cun hash, e tamén
funciona cos símbolos asterisco '*' e '!'.

Os principais comandos para a xestión de grupos son:

➔ groupadd: engade un novo grupo

➔ groupdel: elimina un grupo

➔ groupmod: Modificar a información '/etc/groups'

➔ gpasswd: Permite administrar os grupos e usuarios asignados, así como o


contrasinal do grupo, reflectido en '/etc/gshadow'

8 PERMISOS EN GNU/LINUX
O nivel de acceso a un ficheiro/directorio en GNU/Linux defínese mediante a asignación
de 9 bits principais (e unha serie de bits especiais a maiores) que determinan os dereitos
de lectura, escritura e execución que se posúen sobre os elementos en cuestión. A ese
conxunto de permisos coñécese coma UGO4 ou POSIX5.

Deste xeito, eses 9 bits repártense en 3 grupos de 3 bits cada un correspondendo, cada
grupo, a un usuario/conxunto de usuarios distinto:

 3 primeiros bits: corresponden ao usuario propietario do obxecto.

o O bit primeiro representa o permiso de lectura do propietario.

o O bit segundo representa o permiso de escritura do propietario.

o O bit terceiro representa o permiso de execución do propietario.

 3 bits centrais: corresponden ao grupo asociado a o obxecto (agás o


propietario se resultara ser membro do mesmo).

o O bit primeiro representa o permiso de lectura do grupo.

4 É polo anterior que o devandito esquema de establecemento de permisos recibe o nome de UGO (User – Group – Others).
5 Portable Operating System Interface for X.

54
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

o O bit segundo representa o permiso de escritura do grupo.

o O bit terceiro representa o permiso de execución do grupo.

 3 bits finais: corresponden a outros sistema (que non son o propietario nin
pertencen ao grupo anterior).

o O bit primeiro representa o permiso de lectura do resto de usuarios.

o O bit segundo representa o permiso de escritura do resto de usuarios.

o O bit terceiro representa o permiso de execución do resto de usuarios.

Por exemplo, un elemento que dispoña dos seguintes permisos:

111 110 100 → rwx rw- r--

Estaríanos a indicar que:

 O propietario dispón dos permisos de lectura, escritura e execución sobre o


elemento.

 O grupo dispón dos permisos de lectura e escritura, pero non execución.

 O resto de usuarios dispoñen do permiso de lectura, pero non dos de


escritura nin execución.

Así mesmo, eses permisos poden ser representados mediante a asignación de tres cifras
en octal comprendidas entre 000 e 777, de xeito que cada cifra representa:

 Primeira cifra octal: xogo de permisos relativo ao usuario propietario.

 Segunda cifra octal: xogo de permisos relativo ao grupo propietario/asociado.

 Terceira cifra octal: xogo de permisos relativo ao resto de usuarios.

Seguindo co exemplo anterior, e realizando unha conversión de cada bloque de 3 bits ao


seu correspondente en octal, teriamos:

rwx rw- r-- → 111 110 100 → 7 6 4

Independentemente do que se indique nos permisos, os usuarios propietario dun


elemento e root sempre disporán de potestade para modificar o xogo de permisos do
devandito elemento.

55
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

8.1 Permisos en ficheiros

No caso concreto de que o elemento sexa un ficheiro, os permisos teñen o seguinte


significado:

 Lectura (r): dereito a abri-lo ficheiro e ver o seu contido.

 Escritura (w): dereito a abri-lo ficheiro e modificar o seu contido.

 Execución (x): dereito a executar o ficheiro (sempre que este sexa ou ben de
tipo binario, ou un script de texto plano).

Así pois, se tiveramos o resultado de lanzar a orde ls –l e viramos o seguinte:

-rw-r--r-- 1 tux usuarios 40661 May 13 22:27 exemplo.txt

Implicaría que, para o ficheiro exemplo.txt, existiría o seguinte xogo de permisos:

 O usuario tux, en tanto que propietario, disporía dos permisos de lectura e


escritura sobre o ficheiro.

 Os membros do grupo usuarios poderían ler, pero non escribir.

 O resto de usuarios do sistema (isto é, tódolos que non sexa nin manolo nin
pertenzan ao grupo usuarios) tamén poderían ler, pero non escribir.

E ningún deles disporía de permisos de execución, o cal é razoable, xa que o ficheiro nin é
binario nin é un script.

8.1.1 Permisos en directorios


No caso dos directorios a cousa muda lixeiramente con respecto aos ficheiros:

 Lectura (r): dereito a listar e ver o contido do directorio (o que non implica
que poida ver o contido dos elementos sitos dentro do mesmo).

 Escritura (w): dereito a crear, renomear e eliminar elementos dentro do


directorio (o que non implica que poida modificar os seus contidos –aínda que
pareza absurdo-).

 Execución (x): dereito a acceder ao directorio e a empregar comandos que


realicen percorridos en profundidade da subárbore da estrutura de directorios
(que é o directorio en cuestión -por exemplo find, ls, etc.-).

Por exemplo, se executamos ls –l e vemos algo como o seguinte:

56
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

drwxrwxr-x 2 xoana xefes 48 Jan 26 11:28 recursos

Implicaría que, para o cartafol recursos, existiría o seguinte xogo de permisos:

 A usuaria xoana, en tanto que propietaria, disporía dos permisos de lectura,


escritura e execución (percorrido en profundidade) sobre o directorio.

 Os membros do grupo xefes poderían, igualmente, ler, escribir e percorrer en


profundidade o directorio.

 O resto de usuarios do sistema, en cambio, poderán ler e percorrer en


profundidade o directorio, pero non escribir.

8.1.2 Modificando permisos


Para modificar os aspectos relativos a permisos en contornas GNU/Linux póñense á nosa
disposición os comandos chmod (que permite alterar o xogo de permisos dun elemento),
chown (que permite mudar o usuario propietario dun elemento) e chgrp (que permite
trocar o grupo asociado a un elemento).

8.1.2.1 chmod

Comezaremos pois por chmod, cuxa sintaxe básica admite expresar os permisos tanto en
formato textual coma en formato octal. Así temos:

• Textual: emprega catro parámetros distintos segundo se refira a :

o Propietario: emprégase o parámetro u seguido de + (para engadir permisos), -


(para retirar permisos) ou = (para establecer permisos). O seguinte exemplo
amosa como engadir, para un elemento denominado ficheiro o permiso de
execución para o usuario propietario:

chmod u+x ficheiro

o Grupo: emprégase o parámetro g seguido de + (para engadir permisos), -


(para retirar permisos) ou = (para establecer permisos).

No exemplo podemos ver como retirar os permisos de escritura e execución


para o grupo sobre os elementos ficheiro e cartafol simultaneamente.

chmod g-wx ficheiro cartafol

57
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

o Resto de usuarios: emprégase o parámetro o seguido de + (para engadir


permisos), - (para retirar permisos) ou = (para establecer permisos).

A continuación vemos un exemplo de como alterar os permisos para o resto de


usuarios asignándolles control total sobre o elemento cartafol.

chmod o=rwx cartafol

o Todos: emprégase o parámetro a seguido de + (para engadir permisos), -


(para retirar permisos) ou = (para establecer permisos).

O exemplo seguinte permite establecer só os permisos de lectura e escritura a


tódolos niveis sobre o elemento ficheiro:

chmod a=rw ficheiro

E sería análogo a realizar o seguinte:


chmod u=rw,g=rw,o=rw ficheiro

 Octal: permite mudar globalmente o xogo de permisos a través dos seus


correspondentes en octal. De seguido vemos un exemplo de como establecer o xogo
de permisos rwxrw-r—sobre o elemento cartafol:

chmod 764 cartafol

O comando chmod permite ademais aplicar cambios nos permisos recursivamente co


modificador –R, de xeito que se aplique a un directorio e todos os seus subdirectorios e
ficheiros contidos nos mesmos.

chmod 764 cartafol

O xeito anterior de traballar implica o perigo de habilitar o permiso de execución sobre


ficheiros que doutra maneira non o terían. Iso resólvese empregando o X maiúsculo, que
determina que se habilitará o permiso de acceso se o elemento afectado é un directorio,
pero que non se habilitará no caso de ser un ficheiro. Por exemplo, a orde seguinte
concede os permisos de lectura, escritura e acceso sobre o directorio cartafol e todos os
seus subdirectorios, pero só lectura e escritura sobre os ficheiros contidos nos mesmos:

58
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

chmod –R u+rwX cartafol

8.1.2.2 chown

Noutra banda, o comando chown (xa mencionado) emprégase para trocar o propietario
dun elemento (ou conxunto deles). Un exemplo sería o seguinte, onde facemos co usuario
pedro pase a ser o propietario do elemento cousa.

chown pedro cousa

8.1.2.3 chgrp

De xeito análogo ao anterior funciona o comando chgrp que, coma xa dixemos, posibilita
trocar o grupo asignado a un elemento. Neste exemplo vemos como tornar o grupo do
elemento ficheiro para que pase a ser persoal.

chgrp persoal ficheiro

8.1.3 Permisos por defecto: umask


En Linux o parámetro 'umask' defínese por usuario, e serve de referencia ao sistema para
coñecer cales son os permisos por defecto cos que se crean os ficheiros e directorios no
sistema. En Ubuntu, por exemplo, a máscara por defecto é '0002', iso significa que os
ficheiros se crean co permiso '644' e os directorios co '776' (en notación octal).

O xeito de calcular este valor é coa seguinte fórmula:

• Permisos = [∀ Permisos a 1] AND NOT [Máscara]

A regra básica é que os ficheiros nunca reciben permiso de execución mediante a


configuración de máscara (os directorios si). Sabendo isto, a continuación indico como se
faría o cálculo para os ficheiros e directorios:

• Ficheiros normais:

◦ Dado que a través da máscara non van poder ter nunca permisos de
execución. Neste caso, todos permisos habilitados (menos o de execución),
serían en binario: 110 110 110 => 666

◦ Tomando como referencia a máscara por defecto (0002), para os ficheiros o


permiso por defecto calcularíase así:

Perm: 110 110 110 & NOT (000 000 010) = 110 110 110 & 111 111 101

59
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

Perm: 110 110 100 = 664

• Directorios:

◦ Os directorio si poden ter permiso de execución por defecto, que no caso dos
directorios o que indica é que podemos entrar dentro do mesmo. Polo tanto,
todos permisos habilitados (menos o de execución), serían en binario: 111 111
111 => 777

◦ Tomando como referencia a máscara por defecto (0002), para os ficheiros o


permiso por defecto calcularíase así:

Perm: 111 111 111 & NOT (000 000 010) = 111 111 111 & 111 111 101

Perm: 111 111 101 = 775

Para consultar o valor da máscara por defecto podemos facelo con:

$ umask

Así mesmo, pódese empregar o comando umask para consultar o xogo de permisos por
defecto a aplicar aos directorios en formato texto mediante a orde:

$ umask –S

Para modificar a máscara, sería co mesmo comando, seguido do novo valor a configurar,
por exemplo:

$ umask 122

8.1.4 Permisos especiais


A maiores dos 9 bits mencionados, existen outros 3 bits especiais que poden ser
asignados sobre ficheiros e directorios para unha maior versatilidade no uso dos mesmos.

8.1.4.1 SetUID

Este bit asígnase sobre ficheiros executables e binarios, xa que por motivos de
seguridade, a meirande parte de distribucións GNU/Linux desactivan esta
propiedade sobre os scripts por motivos de seguridade.

Cando se activa este bit (valor 1) sobre un binario, permite o seguinte comportamento.
Calquera usuario que dispoña de permiso de execución sobre un binario, ao executalo,

60
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

farao baixo o usuario propietario do ficheiro, en lugar de facelo baixo o seu propio usuario
(o habitual). Por exemplo se a execución dese binario xera novos ficheiros, estes
crearanse co mesmo usuario que ten asignado o binario.

O modo de activación do mesmo é, comunmente, mediante o comando chmod. Por


exemplo: supoñamos que queremos activar setUID6 sobre un ficheiro binario
denominado mostra cuxo propietario é o usuario felipe.

chmod u+s mostra

De tal modo, os usuarios que dispuxeran dos axeitados permisos de execución, poderían
lanzar o programa mostra co identificador de usuario de felipe, isto é, coma se fora el
mesmo quen tivera lanzado a execución no primeiro lugar.

Agora, se lanzaramos a orde ls –l recibiriamos algo semellante a isto:

-rwsrwxr-x 1 felipe felipe 29 Jan 26 14:03 mostra

Onde a “s” do xogo de permisos representa o bit setUID activado.

Un exemplo práctico disto dánolo o comando su, que leva o bit setUID activado por
defecto, permitindo a un usuario executar binarios como root ou como outro usuario.

Para pasar a root serve calquera das dúas liñas:

$ su
$ su root

Para pasar a un usuario do sistema:

$ su nome_usuario

Para executar comandos do sistema baixo outro usuario do sistema:

$ su usuario -c ‘comandos’

6 Só é aplicable a ficheiros, pero nunca a directorios.

61
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

8.1.4.2 SetGID

8.1.4.2.1 SetGID sobre ficheiros

De xeito análogo a como ocorría co anterior, este bit asígnase sobre ficheiros
executables binarios de xeito que, ao estar activado (con valor “1”) permite, a
calquera usuario que dispoña de permiso de execución sobre o binario, ao
executalo farao coas credenciais do grupo asociado a ese ficheiro.

O modo de activación é tamén, polo xeral, o comando chmod. Por exemplo: supoñamos
que quixeramos activar, sobre o ficheiro executable programa (propiedade da usuario
xiana e asignado ao grupo facturacion) o bit setGID.

chmod g+s programa

Agora, aqueles usuarios que dispoñan dos axeitados permisos de execución sobre
programa, poderán executalos coma se pertenceran ao grupo asociado (facturacion).
Agora, ao lanzar a orde ls –l obteriamos algo así:

-rwxrwsr-x 1 xiana facturacion 13 Oct 15 18:33 programa

Apreciándose co bit está activado pola “s” presente no segundo grupo de permisos.

8.1.4.2.2 SetGID sobre directorios

No caso de activar este bit sobre un directorio, estaremos a forzar o grupo asignado aos
elementos de xeito que desde ese intre (nunca retroactivamente), sexan creados dentro
do mesmo directorio contedor.

Por exemplo: supoñamos co directorio cartafol ten como grupo asignado


administracion e que activamos setGID sobre el. Posteriormente un usuario chamado
carlos e pertencente ao grupo homónimo (carlos) crea un novo ficheiro dentro de
cartafol ao que denomina arquivo. Dado que cartafol ten setGID activado, o ficheiro
arquivo automaticamente terá como grupo asignado administracion no canto de
carlos (que sería o comportamento habitual dun sistema GNU/Linux).

8.1.4.3 Sticky Bit

8.1.4.3.1 Sticky Bit sobre ficheiros

Esta opción7 hoxe en día está obsoleta e non soportada pola maioría de distribucións de

7 Bit apegañento.

62
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

GNU/Linux. Permitía manter un ficheiro executable permanentemente en espazo de


intercambio (swap) para así mellorar o rendemento do mesmo, pero ficou descontinuada
en base á mellora das tecnoloxías de almacenamento secundario e memoria principal.

8.1.4.3.2 Sticky Bit sobre directorios

Cando se activa este bit sobre un directorio, os seus contidos fican protexidos contra
borrado (independentemente do xogo de permisos de que dispoña o directorio) agás
por parte do propietario do directorio contedor, o propietario do elemento e o
usuario root. Para activalo adoita empregarse tamén chmod. Por exemplo, do seguinte
xeito:

chmod +t directorio

Onde directorio é o directorio no cal queremos activar sticky bit. Se o devandito


directorio, consultado con ls –l dispón dos seguintes permisos:

drwxrwxr-t 2 luisa direccion 48 Jul 12 12:12 directorio

Agora, se un usuario (digamos ricardo), creara un novo ficheiro dentro de directorio,


tan só el, luisa e root poderían borralo, por moito que semelle indicar o contrario o xogo
de permisos de directorio.

8.1.4.4 Permisos especiais deshabilitados (carácter maiúscula)

A maiores, é importante aclarar que, se activamos calquera bit especial sobre un obxecto
que carece do permiso de execución correspondente, a letra que representa ao bit
especial aparecerá en maiúsculo. Por exemplo:

• Se activamos sticky bit sobre un directorio que carecía do permiso de execución


para o resto de usuarios, o “t” que aparecerá ao visualizar o seu xogo de permisos
será maiúsculo (“T”), pero o comportamento será análogo.

• Se activamos SetUID sobre un ficheiro executable no cal o propietario carecía do


permiso de execución, o “s” que aparecerá será maiúsculo (“S”).

• Se activamos SetGID sobre un ficheiro executable no cal o grupo asociado non


posúe o permiso de execución, o “s” que aparecerá será, igualmente, maiúsculo
(“S”).

63
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

8.1.4.5 Bits especiais en octal

Do mesmo xeito que ocorría cos permisos convencionais, os bits especiais poden ser
establecidos en formato octal considerando un grupo de tres bits:

 O primeiro bit pola esquerda (correspondente á cifra 4 en decimal) pertence ao


bit SetUID.

 O bit central pertence ao bit SetGID.

 O bit situado máis á dereita corresponde ao sticky bit.

No seguinte exemplo vemos como establecer o xogo de permisos rwsrw-r-- sobre o


elemento cartafol:

chmod 4764 cartafol

Nestoutro exemplo vemos como establecer o xogo de permisos rwxr-sr-t sobre o


elemento cartafol:

chmod 3755 cartafol

8.1.5 Listas de control de acceso (ACL - Access Control List)


As ACL8 supoñen un segundo nivel de concesión de permisos sobre sistemas de ficheiros
en GNU/Linux que permiten sobrescribir o establecido polo sistema UGO (o sistema
tradicional, tamén coñecido coma rwx). Cando son empregadas correctamente, as ACL
permítennos establecer con maior finura os accesos a ficheiros e directorios, indicando
distintos usuarios e grupos e forzando a herdanza dos mesmos ás sub-árbores de
directorios cando nos interese.

Nótese que, a pesares de que a maioría de sistemas GNU/Linux actuais montan as súas
particións ext4 automaticamente coas ACL habilitadas, iso non ten porque ser así
obrigatoriamente, polo que poida que nos vexamos na obriga de activar a tal opción
remontando a partición/volume sobre o cal pretendemos definir un novo xogo de
permisos. Así, por exemplo, se quixeramos editar as ACL do dispositivo /dev/sda1
(supoñendo que non as tivera xa habilitadas) executariamos:

mount -o remount -o acl /dev/sda1

8 Listas de Control de Acceso (Access Control Lists).

64
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

Un concepto importante que temos que comprender para manexar ACL en GNU/Linux é o
de permisos efectivos, é dicir, o verdadeiro xogo de permisos de que disporá un usuario
ou conxunto de usuarios en base aos permisos específicos (UGO ou ACL) e a máscara de
permisos ACL. Os permisos efectivos calcularanse sempre coma aqueles que figuren
simultaneamente nos específicos e na máscara ACL, isto é, os mínimos dos que haxa en
conflito. Vexamos un par de exemplos:

 Se o propietario dun directorio ten os permisos rwx (lectura, modificación e


acceso) sobre o mesmo, pero a máscara ACL está fixada a r-x entón os
permisos efectivos para o propietario serán r-x.

 Se o usuario paulo ten os permisos rw- (lectura e modificación) sobre o


mesmo, pero a máscara ACL está fixada a –wx entón os permisos efectivos
para o usuario serán –w-.

Para a xestión das ACL GNU/Linux pon á nosa disposición tres comandos: getfacl,
setfacl e chacl.

8.1.5.1 Consultar ACL: getfacl

Este comando permite consultar as ACL de ficheiros e directorios. Consideraremos, da


listaxe de dispoñibles, os parámetros indicados a continuación.

Consulta simple da ACL sobre un obxecto:

getfacl elemento

Por exemplo, se quixeramos consultar a ACL do directorio cartafol executariamos:

getfacl cartafol

O resultado, para un directorio cartafol con permisos UGO rwxr-x---, propiedade do


usuario paulo e asociado ao grupo empregados será:

# file: cartafol
# owner: paulo
# group: empregados
user::rwx
group::r-x
other::---

Podemos consultar unicamente os permisos de base (sen incluír os permisos por defecto)

65
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

empregando:

getfacl –a elemento

En ocasións, como por exemplo cando nos interesa acceder á ACL a través dun script que
empregará os seus datos, podemos querer extraer os datos sen os comentarios de
cabeceira:

getfacl –c elemento

Para consultar só os permisos efectivos facemos:

getfacl –e elemento

De xeito equivalente, podemos optar por non amosar os permisos efectivos:

getfacl –E elemento

Para consultar de xeito recursivo un directorio cos seus subdirectorios empregamos:

getfacl –R elemento

Tamén temos a posibilidade de consultar os permisos de xeito tabular, para acceder á


información de xeito máis ordeado:

getfacl –t elemento

O resultado, para o mesmo directorio cartafol que empregamos anteriormente, e cos


mesmos permisos UGO rwxr-x---, propiedade do usuario paulo e asociado ao grupo
empregados será:

# file: cartafol/
USER paulo rwx
GROUP empregados r-x
other

8.1.5.2 Máscara ACL

A máscara ACL representa a cantidade máxima de permisos que se poden outorgar a un


ficheiro ou directorio. Calcúlase de xeito automático a partires da suma de todos os

66
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

permisos que se asignan mediante as regras ACL.

8.1.5.2.1 Modificar máscara ACL

Pódese modificar de xeito manual, facendo uso do parámetro "-m", do seguinte xeito:

setfacl -m m::2 dir1

8.1.5.3 Modificar ACL: setfacl

Este comando permite definir as entradas das ACL dun elemento establecendo todo tipo
de permisos.

8.1.5.3.1 Asignar permisos a usuarios e grupos

De seguido veremos algúns dos parámetros de uso máis habitual do comando. Así, se
queremos modificar a ACL dun elemento empregamos –m ou –M:

setfacl -m u::[rwx],g::[rwx],o::[rwx],u:[usuario]:[rwx],g:[grupo]:[rwx]
elemento

Así, poderiamos establecer, sobre o directorio cartafol os permisos 7 para o seu


propietario, 5 para o grupo asociado, 0 para o resto de usuarios, 5 para o usuario paulo e
7 para o grupo xerencia do xeito que sigue:

setfacl –m u::rwx,g::r-x,o::---,u:paulo:r-x,xerencia:rwx cartafol

Ou tamén, en octal:

setfacl –m u::7,g::5,o::0,u:paulo:5,xerencia:7 cartafol

8.1.5.3.1.1 Asignar permisos de xeito recursivo

Como é habitual en moitos outros comandos de GNU/Linux que traballan con directorios,
setfacl pon á nosa disposición unha opción que permite estender recursivamente os
permisos indicados aos subdirectorios do directorio actual e os seus contidos. Por
exemplo, no caso de querer modificar permisos dun directorio e a súa subárbore,
executariamos:

setfacl –R -m u::[rwx],g::[rwx],o::[rwx],u:[usuario]:[rwx],g:[grupo]:[rwx]
directorio

67
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

8.1.5.3.2 Asignar permisos usando tubos (pipes)

Un xeito rápido de establecer unha ACL é copiala exactamente dun elemento, o cal pode
facerse conectando getfacl e setfacl a través dun pipe.

• “—set-file=”: Para asignar permisos desde cero, debemos ter en conta que se
ten outras regras ACL sobrescribiríaas.

getfacl ficheiro_orixinal | setfacl --set-file=- [ficheiro|directorio]

• “–M” ou “—modify-file=”: Para modificar os permisos desde un ficheiro


conservando aquelas regras ACL que xa teña o ficheiro ou directorio e que non se
vexan afectadas polas novas que se asignan a través do ficheiro.

getfacl –access cartafol_orixinal | setfacl –d –M- cartafol_destino

8.1.5.3.3 Retirar ACL a usuarios e/ou grupos

Para eliminar unha entrada concreta dunha ACL empregamos o modificador –x ou –X:

setfacl –x [u|g]:[usuario|grupo] elemento

Por exemplo, se quixeramos eliminar a entrada correspondente ao usuario paulo sobre o


elemento ficheiro executariamos:

setfacl –x u:paulo ficheiro

8.1.5.3.4 Eliminar todas as regras ACL (conserva so as UGO)

Para eliminar todas as entradas estendidas, conservando polo tanto só as de tipo UGO
empregamos –b:

setfacl –b elemento

8.1.5.3.5 ACLs por defecto

Todo o anterior está ben, pero ten un problema, pois os novos ficheiros e directorios que
se crean non terán todas esas ACL cos valores correctos e, polo tanto, teremos que estar
cada dous por tres axustando os valores do ACL, o que non é moi operativo.

As ACL predeterminadas veñen na nosa axuda, aínda que en realidade, para ser exactos,
deberíamos falar das ACE (Access Control Entry) por defecto. Manteremos a mesma

68
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

terminoloxía para non crear máis confusión.

As ACL predeterminadas (ou por defecto), permítenos indicar cal é o conxunto de ACE
que queremos que se apliquen automaticamente aos novos ficheiros e directorios que se
crean nun directorio dado. Nestes casos dise que os permisos se herdan do directorio pai.

A sintaxe é idéntica á vista até agora, coa diferenza de que tamén debemos empregar a
opción -d:

setfacl –d –x [u|g]:[usuario|grupo] elemento

8.1.5.3.5.1 Consultar ACL por defecto

Podemos consultar só os permisos facendo uso do parámetro “-d” por defecto mediante o
comando:

getfacl –d elemento

8.1.5.3.5.2 Asignar ACL por defecto

Por exemplo, para engadir/modificar entradas por defecto para determinados grupos
poderiamos executar:

$ setfacl -d -m g:system:rw dir_raiz


$ setfacl -d -m g:dev:rw dir_base/dir_1
$ setfacl -d -m g:dev:rw dir_base/dir_2
$ setfacl -d -m g:prod:rw dir_base/dir_2

Ou tamén, para engadir/modificar entradas por defecto de usuarios e grupos:

setfacl –d -m u::[rwx],g::[rwx],o::[rwx],u:[usuario]:[rwx],g:[grupo]:[rwx]
elemento

8.1.5.3.5.3 Eliminar ACL por defecto

Caso concreto de querer afectar a unha entrada por defecto, empregariamos o


modificador –d, por exemplo, para eliminar entradas:

setfacl –d –x [u|g]:[usuario|grupo] elemento

Mais, se o que quixeramos fora eliminar só as entradas por defecto, empregariamos entón
o modificador –k:

69
SISTEMAS INFORMÁTICOS
1º CICLO SUPERIOR DE DAM

setfacl –k elemento

8.1.5.4 Modificar ACL de xeito masivo: chacl

O comando chacl permite traballar coas ACL de xeito máis «masivo», poñendo á nosa
disposición diversos modificadores.

Para establecer simultaneamente a listaxe de permisos base que posuirá o elemento


executamos:

chacl u::[rwx],g::[rwx],o::[rwx],u:[usuario]:[rwx],g:[grupo]:[rwx],m::[rwx]
elemento

Se o que queremos é establecer os permisos por defecto 9 dun directorio (isto é, os


herdables), empregamos o modificador –d:

chacl –d u::[rwx],g::[rwx],o::[rwx],u:[usuario]:[rwx],g:[grupo]:[rwx],m::
[rwx] directorio

Para eliminar todas as ACL dun elemento usamos:

chacl –B elemento

E para aplicar unha modificación recursivamente a un directorio e toda a súa subárbore


de directorios e contidos respectivos, usamos –r:

chacl –r u::[rwx],g::[rwx],o::[rwx],u:[usuario]:[rwx],g:[grupo]:[rwx],m::
[rwx] directorio

9 Se aplicamos un permiso por defecto de execución sobre un directorio recoméndase empregar a letra X maiúscula, dese xeito será herdada só polos
subdirectorios, pero non polos ficheiros (este mecanismo pode non funcionar en todas as distribucións de GNU/Linux como, por exemplo, en
Ubuntu 18.04).

70

You might also like