MP08 - Comandes Linux
Com que els servidors els utilitzarem sota un entorn Linux farem esment de les comandes més utilitzades i que cal dominar completament per treballar amb l'entorn Linux ja que ens facilitarà el treball.
serveis
En aquest mòdul hem d'instal·lar alguns serveis: servidor web, servidor de transferència de fitxers ftp, etc.
En Linux els serveis es poden gestionar amb diferents comandes però dins els contingutrs podem utilitzar la comanda service
del System V o la comanda ' systemctl` del systemd. La sintaxis d'aquesta comanda és
-
service <servei> start | stop | status | restart | reload
mentre que el nom del servei pot ser apache2, proftpd, etc. -
systemctl start | stop | status | restart | reload <servei>
mentre que el nom del servei pot ser apache2, proftpd, etc.
En un servdor ubuntu utilitzem systemctl
, en un contenidor Docker service
Així doncs, com a tall d'exemple, per a gestionar el servidor web apache utilitzarem:
-
systemctl start apache2
: per iniciar el servidor web apache -
systemctl stop apache2
: per aturar el servidor web apache -
systemctl restart apache2
: per aturar i iniciar el servidor web apache amb una sola comanda -
systemctl reload apache2
: per recarregar el fitxer de configuració sense aturar el servidor
Segons el servei pot ser que algunes opcions no estiguin dispoibles o que n'hi hagi més.
La comanda service --status-all
ens mostra l'estat de tots els serveis instal·lats.
Visualitzem el contnigut d'un (o varis) fitxers
cat
- more
- head
- tail
- less
Mostar el contingut d'un fitxer - cat
- more
- head
- tail
- less
Per a mostrat en contingut d'un fitxer utilitzarem les comandes segons la necessitat. Ho veurem en exemples i serà més fàcil d'entendre.
Mostrem tot el contingut de cop
La comanda cat
ens mostra el contingut del fitxer tot de cop sense cap aturada.
cat /etc/apache2/apache2.conf
Si el que volem és que s'aturi cada vegada que ompli la pàgina utilitzarem la comanda more
more /etc/apache2/apache2.conf
espai
per a veure la següent pàginab
(backward) per a veure la pàgina anteriorf
(forward) per a veure la pàgina següentintro
(return) per a veure la línia següent. Anem avançant línia a línia.q
(quit) per a sortir
La comanda less
és semblant a more
però permet fer cerques de la mateixa manera que es fan amb l'editor vi
(/nN?
). Com que no està inclosa dins el contingutr ubuntu no l'expliquem.
La comanda head
permet veure les primeres línies d'un fitxer. Per defecte mostra les primeres 10 línies. Amb el paràmetre -n
podem indicar-li quantes línies (numero positiu) o quantes del final no volem veure (numero negatiu). Vegem-ho.
head /etc/apache2/apache2.conf
head -n 5 /etc/apache2/apache2.conf
head -n -5 /etc/apache2/apache2.conf
La comanda tail
permet veure les darreres línies d'un fitxer. Per defecte mostra les darreres 10 línies. Amb el paràmetre -n
podem indicar-li quantes línies (numero positiu) o a partir de quina línia contant des del principi volem veure (signe més +
). Vegem-ho.
tail /etc/apache2/apache2.conf
tail -n 5 /etc/apache2/apache2.conf
tail -n +5 /etc/apache2/apache2.conf
-f
. Un exemple típic serà mirar els missatges de log que arribin al fitxer d'errors de l'apache
tail -n 0 -f /var/log/apache2/error.log
Exemples
more file
: Mostra el contingut del fitxerfile
pàgina a pàginaless file
: Igual que l'anterior però amb més opcions (no disponible en els contenidors)ls -l | more
: Mostra pàgina a pàgina la sortida dels -l
head file
: Mostra les primeres 10 línies del fitxerfile
tail file
: Mostra les darreres 10 línies del fitxerfile
tail -n 30 file
: Mostra les darreres 30 línies del fitxerfile
head -n 4 file | tail -n 2
: Mostra les línies 3 i 4 del fitxerfile
cat file | head -n 4 | tail -n 2
: Mostra les línies 3 i 4 del fitxerfile
(igual que l'anterior)
Gestió de fitxers: moure, copiar i eliminar
ls
: lllista els titxers del directori actualls /dir
: lllista els titxers del directori/dir
ls -l
: idem en format llargls -a
: lllista tots els titxers incloent els ocultsmkdir dir
: Crea el directoridir
rmdir dir
: Borra) el directoridir
(ha d'estar buit)rm file
: borra el fitxerfile
rm -f file
: força l'eliminació del fitxer file encara que estigui protegitrm -r dir
: Borra de forma recursiva el directoridir
cp file dir
: Copia el fitxer file al directoridir
cp -r dir1 dir2
: Copia de forma recursiva el directoridir1
adir2
mv file dir
: Mou el fitxerfile
al directoridir
mv dir1 dir2
: Mou el directoridir1
al directoridir2
ln -fs file-real file-virtual
: Crea un enllaç simbòlic entrefile-real
ifile-virtual
Movem-nos pels directoris
cd
Anar a un directori determinat - cd
Per moure'ns per diferents directoris hem d'utilitzar la comanda cd
(Change Directory). Sempre ñes millor anar d'un lloc a l'altre amb una sola comanda cd
ja que aqmb cd -
tornem al directori on estavem anteriorment.
La ruta que indica el directori on volem anar pot ser absoluta
cd /etc/apache2/sites-available
cd /var/log/apache2
cd -
cd /etc/apache2
cd sites-avalilable
cd ../mods-enabled
cd ..
Per acabar d'escriure el nom del directori/fitxer és útil utilitzar la tecla tabulador una o dues vegades. Prova-ho.
Cerques
find (cerca de fitxers)
La comanda find
serveix per a cercar fitxers segons algunes de les seves característiques: tamany, propietari, tipus de fitxer, nom de fitxer, etc.
Vegem-ne algun exemple:
find /dir -name file
: Busca el fitxerfile
dins del directoridir
i els seus subdirectoris.find /dir -name "*file*"
: Busca fitxers dins el directori i subdirectoris dedir
que en el seu nom de fitxer continguin la paraulafile
.
grep (cerca en l'interior de fitxers)
Busquem paraules dins un fitxer o dins molts fitxers - grep
Sovint voldrem saber on tenim confiurat un apràmetre determinat. El més fàcil és demanar-li al sistema que ens busqi la paraula dins el fitxer o conjunt de fitxers. Per això utilitzem la comanda grep
.
Anem a veure en quins fitxers tenim la directiva DirectoryIndex
. El més fàcil serà fer una cerca així...
grep -ir directoryIndex /etc/apache2
/etc/apache2
i a tots els fitxers dels subdirectoris, de forma recursiva (r)-.
També podriem haver-nos situat al directori i buscar a partir d'ell
cd /etc/apache2
grep -ir directoryIndex *
Tuberies (Pipe) i redireccionamient
ls -l > file
: Escriu la sortida de la comandals -l
en el fitxerfile
ls -l >> file
: Afegeix la sortida de la comandals -l
al fitxerfile
ls -l 2> file
: Escriu la sortida d'errors de la comandals -l
en el fitxerfile
prog < file
: El programaprog
llegeix/rep com entrada de dades el contingut defile
ls | sort
: Ordenem la sortida dels
ls | grep alfa | sort
: Ordena els fitxers d'una sortida dels
dels fitxers que contenen la paraula alfa
Gestió d'usuaris
useradd
Creació d'usuaris - useradd
Per a crear un usuari utilitzarem la comanda useradd
de la següent forma:
useradd -m -s /bin/bash usuari
passwd usuari
useradd -m -s /bin/bash usuari001 && echo usuari001:password001 | chpasswd usuari001
Si després volem iniciar sessió amb aquest usuari podem utilitzar la comanda
su - usuari001
password
Per a posar password a un usuari podem fer-ho de diferents formes.
passwd
passwd usuari001
chpasswd
echo usuari001:usuari001 | chpasswd
echo
separats per dos punts :
.
Control de procesos
top
: Programa interactiu per a veure els processos del sistemaps
: Llista els processos associados a l'usuarips aux
: Llista tots els processos del sistemaps -ef
: Llista tots els processos del sistemakill -9 123
: Mata el procés amb ID 123
Permisos sobre fitxers
owner u |
group g |
others o |
|
---|---|---|---|
d | rwx | rwx | rwx |
Tipus de fitxer:- : fitxer d : directori l : link |
r - lectura w - escriptura x - execució |
A'executar ls -l
obtenim a la primera columna el format que es mostra a la taula anterior.
Correspon als permisos de lectura, escriptura i execució sobre un fitxer o directori, pel propietari, el grup o la resta d'usuaris.
Per a canviar els permisos utilitzem la comanda chmod
:
chmod u+rw file
: Afegeix permis de lectura i escriptura al propietari pel fitxerfile
chmod g-rx file
: Treu els permisos de lectura i execució al grupo pel fitxerfile
chmod a+rwx file
: Afegeix a tots els usuaris (ugo) permisos de lectura, escriptura i execucióchown usuari file
: Posa como a propietari del fitxerfile
a l'usuariusuari
chgrp grup file
: Posa como grup del fitxerfile
el grupgrup
chown usuari:grup file
: Posa como a propietari del fitxerfile
a l'usuariusuari
i como grup del fitxerfile
el grupgrup
chown usuari.grup file
: Posa como a propietari del fitxerfile
a l'usuariusuari
i como grup del fitxerfile
el grupgrup
chown usuari. file
: Posa como a propietari del fitxerfile
a l'usuariusuari
i como grup del fitxerfile
el grup de l'usuariusuari
SUID, GUID i Bit d'sticky
A Linux, tot és un fitxer i tot té propietaris. El propietari especial, conegut com root
, també té permisos especials per executar qualsevol cosa. Tots els altres tenen privilegis limitats i un accés molt limitat als fitxers i carpetes. Per augmentar els nostres privilegis, cal utilitzar la comanda sudo
. Tanmateix, no és una bona idea donar la contrasenya e root
a persones aleatòries cada vegada que necessiten fer alguna cosa que requereixi privilegis més alts. Aleshores, què pots fer? Bé, podem utilitzar el que es coneix com SUID
, GUID
i bit d'sticky
.
SUID
SUID
o Set Owner User ID és un indicador de bits de permís que s'aplica als executables. SUID
permet a un usuari alternatiu executar un executable amb els mateixos permisos que el propietari del fitxer en lloc dels permisos de l'usuari alternatiu. Un exemple clar és la comanda passwd
.
Aquest bit es veu en la part de permisos de l'usuari propietari quan encomptes d'una x
veiem una s
. Si la s
és minúscula significa que la x
també està activa mentre que si la S
és majúscula significarà que la x
no està activa.
Podem activar el bit SUID amb la comanda:
chmod u+s fitxer
GUID
GUID
és similar a SUID
. Al SUID
, l'executable en qüestió s'executa amb els privilegis del propietari del fitxer. Al GUID
, si és un executable, s'executa amb els permisos del grup. Si es tracta d'un directori, es generaran tots els fitxers i directoris nous creats per pertànyer al grup. Aquest darrer as és el que solem utilitzar més sovint nosltres.
Igual que el SUID
aquest bit es veu en la part de permisos del grup propietari quan encomptes d'una x
veiem una s
. Si la s
és minúscula significa que la x
també està activa mentre que si la S
és majúscula significarà que la x
no està activa.
Podem activar el bit GSUID amb la comanda:
chmod g+s directori
Bit d'Sticky
El bit d'Sticky s'aplica als directoris. Quan s'estableix el bit d'Sticky en un directori determinat, qualsevol usuari que tingui accés al directori i al seu contingut només pot esborrar els seus propis fitxers i no pot tocar ni eliminar fitxers que pertanyen a algú altre. El bit d'Sticky s'utilitza normalment quan s'utilitza una carpeta compartida. Ningú pot suprimir el fitxer d'una altra persona dins de la carpeta compartida encara que el permís sigui 777 (rwxrwxrwx). Un exemple clar és el diretori /tmp
.
Igual que el SUID
aquest bit es veu en la part de permisos de la resta d'usuaris quan encomptes d'una x
veiem una t
. Si la t
és minúscula significa que la x
també està activa mentre que si la T
és majúscula significarà que la x
no està activa.
Podem activar el bit GSUID amb la comanda:
chmod o+t directori
Varis
df -h
: Mostra l'espai ocupat en les diferents particionsdu -sh dir
: Mostra el tamany dels diferents subdirectoris dedir
-
alias new= 'comanda -opt'
: Crea un alias anomenat new -
man -k tema
: Mostra totes les pàgines de manual que contenen la paraula tema dmesg
: Mostra els misstges generats a l'iniciar el sistema/var/log/
: Conté els fitxers amb la informació del sistema