Salta el contingut

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
En aquest cas, cada begada que s'ompli la pantalla s'atura i podem prémer:

  • espai per a veure la següent pàgina
  • b (backward) per a veure la pàgina anterior
  • f (forward) per a veure la pàgina següent
  • intro (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
Aquesta comanda ens servirà per veure els errors del fitxer de log i per tal de no haver d'executar la comanda sovint, podem deixar que es vagi executant i a mesura que el futxer rebi més línies les vagi mostrant. Per això utilitzarem el paràme -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 fitxer file pàgina a pàgina
  • less 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 de ls -l
  • head file : Mostra les primeres 10 línies del fitxer file
  • tail file : Mostra les darreres 10 línies del fitxer file
  • tail -n 30 file : Mostra les darreres 30 línies del fitxer file
  • head -n 4 file | tail -n 2 : Mostra les línies 3 i 4 del fitxer file
  • cat file | head -n 4 | tail -n 2 : Mostra les línies 3 i 4 del fitxer file (igual que l'anterior)

Gestió de fitxers: moure, copiar i eliminar

  • ls : lllista els titxers del directori actual
  • ls /dir : lllista els titxers del directori /dir
  • ls -l : idem en format llarg
  • ls -a: lllista tots els titxers incloent els ocults
  • mkdir dir : Crea el directori dir
  • rmdir dir : Borra) el directori dir (ha d'estar buit)
  • rm file : borra el fitxer file
  • rm -f file : força l'eliminació del fitxer file encara que estigui protegit
  • rm -r dir : Borra de forma recursiva el directori dir
  • cp file dir : Copia el fitxer file al directori dir
  • cp -r dir1 dir2 : Copia de forma recursiva el directori dir1 a dir2
  • mv file dir : Mou el fitxer file al directori dir
  • mv dir1 dir2 : Mou el directori dir1 al directori dir2
  • ln -fs file-real file-virtual : Crea un enllaç simbòlic entre file-real i file-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 cdja 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 -
o relativa
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 findserveix 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 fitxer file dins del directori dir i els seus subdirectoris.
  • find /dir -name "*file*" : Busca fitxers dins el directori i subdirectoris de dir que en el seu nom de fitxer continguin la paraula file.

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
Així estem buscant la paraula directoryindex independentpe¡ment de si està en majúscules, minúscules, etc (i) i en els fitxers del directori /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 comanda ls -l en el fitxer file
  • ls -l >> file : Afegeix la sortida de la comanda ls -l al fitxer file
  • ls -l 2> file : Escriu la sortida d'errors de la comanda ls -l en el fitxer file
  • prog < file : El programa prog llegeix/rep com entrada de dades el contingut de file
  • ls | sort : Ordenem la sortida de ls
  • ls | grep alfa | sort : Ordena els fitxers d'una sortida de ls 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
Per a crear l'usuari i posar-li password a la vegada podem utilitzar
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
En aquest cas se'ns demanarà que entrem el password dues vegades. No veurem res en pantalla.

chpasswd

echo usuari001:usuari001 | chpasswd
En aquest cas hem hagut d'entrar l'usuari i el password a la part del echo separats per dos punts :.

Control de procesos

  • top : Programa interactiu per a veure els processos del sistema
  • ps : Llista els processos associados a l'usuari
  • ps aux : Llista tots els processos del sistema
  • ps -ef : Llista tots els processos del sistema
  • kill -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
Permisos
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 fitxer file
  • chmod g-rx file : Treu els permisos de lectura i execució al grupo pel fitxer file
  • chmod a+rwx file : Afegeix a tots els usuaris (ugo) permisos de lectura, escriptura i execució
  • chown usuari file : Posa como a propietari del fitxer file a l'usuari usuari
  • chgrp grup file : Posa como grup del fitxer file el grup grup
  • chown usuari:grup file : Posa como a propietari del fitxer file a l'usuari usuari i como grup del fitxer file el grup grup
  • chown usuari.grup file : Posa como a propietari del fitxer file a l'usuari usuari i como grup del fitxer file el grup grup
  • chown usuari. file : Posa como a propietari del fitxer file a l'usuari usuari i como grup del fitxer file el grup de l'usuari usuari

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 xtambé 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 xtambé 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 xtambé 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 particions
  • du -sh dir : Mostra el tamany dels diferents subdirectoris de dir
  • 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