Permisos i drets en Linux

Quants de nosaltres hem tingut la necessitat de "limitar l'accés" als arxius continguts en determinat directori / carpeta o simplement necessitem evitar que algunes persones vegin, eliminin o modifiquin el contingut de determinat arxiu? Més d'un, veritat? Podrem aconseguir-ho en el nostre estimat pingüí? La resposta és: per descomptat que sí : D.

Introducció

Molts dels que provenim de Windows, estàvem acostumats a bregar amb aquesta "problemàtica" d'una manera molt diferent, per aconseguir aquest objectiu havíem de recórrer a "tècniques" poc ortodoxes, com, amagar el fitxer per mitjà dels seus atributs, moure la nostra informació a el lloc més recòndit del nostre equip (dins de 20,000 carpetes) per intentar dissuadir nostre "enemic" XD, canviant o eliminant l'extensió de l'arxiu, o la més "comú" de les pràctiques, descarregar un programa que ens permeti " tancar "el nostre directori darrere d'un bonic quadre de diàleg que ens demani una contrasenya per accedir a la mateixa. Teníem una altra alternativa molt millor? no.

btrfs
Article relacionat:
Com muntar HDDs o particions mitjançant terminal

Ho sento molt pels meus amics "Windoleros" (ho dic amb molt d'afecte perquè ningú s'ofengui, ok?;)), Però avui em toca ensañarme una miqueta amb Windows: P, ja que explicaré el perquè aquest SO no permet de manera nativa aquesta funcionalitat.

Quants de vostès hauran notat que quan ens asseiem darrere d'un equip "Windows" (encara que no sigui el nostre) ens convertim automàticament en amos de tot allò que conté l'ordinador (imatges, documents, programes, etc.)? A que em refereixo? Bé, al fet que simplement a l'agafar el "control de Windows", podem copiar, moure, eliminar, crear, obrir o modificar carpetes i arxius a dreta i esquerra, independentment si nosaltres som els "amos" d'aquesta informació o no. Això reflecteix una gran fallada en la seguretat de sistema operatiu, veritat? Bé, tot això es deu al fet que els sistemes operatius de Microsoft no van ser dissenyats des de l'inici per ser multiusuari. Quan es van llançar les versions de MS-DOS i algunes versions de Windows, confiaven plenament en què l'usuari final seria el responsable de "custodiar" el seu respectiu equip perquè cap altre usuari tingués accés a la informació emmagatzemada en el mateix ... vaja ingenuïtat ¬ ¬. Ara amics WinUsers, ja saben el perquè ha aquest "misteri": D.

A contrapartida, GNU / Linux, a l'ésser un sistema dissenyat fonamentalment per a treball en xarxa, la seguretat de la informació que emmagatzemem en els nostres equips (i no es digui en els servidors) és fonamental, ja que molts usuaris tindran o poden tenir accés a part dels recursos de programari (tant aplicacions com informació) i maquinari que estan gestionats en aquests ordinadors.

Ara podem veure perquè la necessitat d'un sistema de permisos? Endinsem-nos en el tema;).

Article relacionat:
DU: com veure els 10 directoris que ocupen més espai

En GNU / Linux, els permisos o drets que els usuaris poden tenir sobre determinats arxius continguts en ell s'estableixen en tres nivells clarament diferenciats. Aquests tres nivells són els següents:

Permisos d'propietari.
Permisos d'el grup.
Permisos d'la resta d'usuaris (o també anomenats "els altres").

Per tenir clars aquests conceptes, en els sistemes en xarxa (com ho és el pingüí) sempre hi ha la figura de l'administrador, root o root. Aquest administrador és l'encarregat de crear i donar de baixa usuaris, així com també, d'establir els privilegis que cada un d'ells tindrà en el sistema. Aquests privilegis s'estableixen tant per al directori HOME de cada usuari com per als directoris i arxius als que l'administrador decideixi que l'usuari pugui accedir.

Permisos d'el propietari

El propietari és aquell usuari que genera o crea un arxiu / carpeta dins del seu directori de treball (HOME), o en algun altre directori sobre el qual tingui drets. Cada usuari té la potestat de crear, per defecte, els arxius que vulgui dins del seu directori de treball. En principi, ell i només ell serà el que tingui accés a la informació continguda en els arxius i directoris que hi ha al seu directori HOME.

Permisos d'el grup

El més normal és que cada usuari pertanyi a un grup de treball. D'aquesta manera, quan es gestiona un grup, es gestionen tots els usuaris que pertanyen a aquest. És a dir, és més fàcil integrar diversos usuaris en un grup a què se li concedeixen determinats privilegis en el sistema, que assignar els privilegis de forma independent a cada usuari.

Permisos d'la resta d'usuaris

Finalment, també els privilegis dels arxius continguts en qualsevol directori, poden tenir-los altres usuaris que no pertanyin a el grup de treball en què està integrat l'arxiu en qüestió. És a dir, als usuaris que no pertanyen a el grup de treball en què està l'arxiu, però que pertanyen a altres grups de treball, se'ls denomina resta d'usuaris de sistema.

Molt bonic, però com puc identificar tot això? Senzill, obre una terminal i realitza el següent:

$ ls -l

Nota: són lletres “L” minúscules 

Ens apareixerà alguna cosa com el següent:

Com podran observar, aquesta comanda desplega o "llista" el contingut del meu HOME, el que ens ocupa són les línies de color vermell i verd. El requadre de color vermell, ens mostra qui és propietari i el requadre de color verd indica a quin grup pertany cada un dels arxius i carpetes anteriorment llistades. En aquest cas tant el propietari i el grup es diuen "perseo", però bé van poder haver-se trobat amb un grup diferent com podria ser "vendes". Per la resta, no es preocupin per ara, ho veurem més endavant: D.

Tipus de permisos en GNU / Linux

Abans d'aprendre com s'estableixen els permisos en GNU / Linux, hem de saber com es poden diferenciar els diferents tipus d'arxius que el sistema pot tenir.

Cada arxiu en GNU / Linux queda identificat per 10 caràcters mateixos als quals se'ls denomina màscara. D'aquests 10 caràcters, el primer (d'esquerra a dreta) fa referència a l'tipus d'arxiu. Els 9 següents, d'esquerra a dreta i en blocs de 3, fan referència als permisos que se li concedeixen, respectivament, a l'propietari, a el grup i a la resta o altres. Una captura per demostrar tot aquest rotllo:

El primer caràcter dels arxius pot ser el següent:

Permís identifica
- Arxiu
d Directori
b Arxiu de blocs especials (Arxius especials de dispositiu)
c Arxiu de caràcters especials (Dispositiu tty, impressora ...)
l Arxiu de vincle o enllaç (soft / symbolic link)
p Arxiu especial de llit (pipe o canonada)

Els següents nou caràcters són els permisos que se'ls concedeix als usuaris de sistema. Cada tres caràcters, es referencien els permisos de propietari, grup i resta d'usuaris.

Els caràcters que defineixen aquests permisos són els següents:

Permís identifica
- sense permís
r Permís de lectura
w Permís d'escriptura
x Permís d'execució

Permisos per a arxius

Lectura: permet, fonamentalment, visualitzar el contingut de l'arxiu.
Escriptura: permet modificar el contingut de l'arxiu.
Execució: permet executar l'arxiu com si d'un programa executable es tractés.

Permisos per a directoris

Lectura: Permet saber quins fitxers i directoris conté el directori que té aquest permís.
Escriptura: permet crear arxius en el directori, bé siguin arxius ordinaris o nous directoris. Es poden esborrar directoris, copiar arxius en el directori, moure, canviar el nom, etc.
Execució: permet situar-se sobre el directori per poder examinar el seu contingut, copiar arxius d'o cap a ell. Si a més es disposa dels permisos d'escriptura i lectura, es podran realitzar totes les operacions possibles sobre arxius i directoris.

Nota: Si no es disposa de l'permís d'execució, no podrem accedir a aquest directori (encara que utilitzem la comanda "cd"), ja que aquesta acció serà denegada. També permet delimitar l'ús d'un directori com a part d'una ruta (com quan vam passar la ruta d'un arxiu que es troba en aquest directori com a referència. Suposem que volem copiar l'arxiu "X.ogg" el qual es troba a la carpeta " / home / perseo / Z "-per la qual cosa la carpeta" Z "no té permís d'execució-, faríem el següent:

$ cp /home/perseo/Z/X.ogg /home/perseo/Y/

obtenint amb això un missatge d'error dient-nos que no tenim els permisos suficients per accedir a l'arxiu: D). Si el permís d'execució d'un directori està desactivat, es podrà veure el seu contingut (si es compta amb permís de lectura), però no es podrà accedir a cap dels objectes continguts en ell, ja que per a això aquest directori és part de el camí necessari per resoldre la ubicació dels seus objectes.

Gestió de permisos en GNU / Linux

Fins ara, hem vist perquè ens serveixen els permisos en GNU / Linux, a continuació veurem com assignar o restar permisos o drets.

Abans de començar, hem de tenir en compte que quan donem d'alta o creem un usuari en el sistema, li concedim de forma automàtica uns privilegis. Aquests privilegis, per descomptat, no seran totals, és a dir, els usuaris no disposaran, normalment, dels mateixos permisos i drets de l'superusuari. Quan l'usuari es crea, el sistema genera per defecte els privilegis de l'usuari per a maneig d'arxius i per a maneig de directoris. Evidentment, aquests poden ser modificats per l'administrador, però el sistema genera uns privilegis més o menys vàlids per a la majoria de les operacions que cada usuari realitzarà sobre el seu directori, els seus arxius i sobre els directoris i arxius de la resta d'usuaris. En general, són els següents permisos:

<° Per arxius: - rw- r-- r--
<° Per directoris: - rwx rwx rwx

Nota: no són els mateixos permisos per a totes les distribucions de GNU / Linux.

Aquests privilegis ens permeten crear, copiar i esborrar arxius, crear nous directoris, etc. Vegem a la pràctica tot això: D:

Prenguem com a exemple l'arxiu "CSS Avanzado.pdf". Observem que apareix de la següent manera: -rw-r--r-- ... CSS Avanzado.pdf. Mirem més a fons.

Tipus usuari Grup Resta d'usuaris (altres) Nom del fitxer
- rw- r-- r-- CSS Avançat.pdf

Això vol dir que:

<° Tipus: Arxiu
<° L'usuari pot: Llegir (visualitzar el contingut) i escriure (modificar) l'arxiu.
<° El grup a què pertany l'usuari pot: Llegir (únicament) l'arxiu.
<° Altres usuaris poden: Llegir (únicament) l'arxiu.

Per a aquells curiosos que s'estan preguntant ara mateix a què es refereixen els altres camps de la llista obtingut per ls -l, aquí la resposta:

Si voleu saber més sobre els hard i soft / symbolic links, aquí l'explicació i els seus diferències.

Bé amics, arribem a la part més interessant i pesada del tema en qüestió ...

Assignació de permisos

la comanda Chmod ( «Change mode») permet modificar la màscara perquè es puguin realitzar més o menys operacions sobre arxius o directoris, dit d'una altra manera, amb chmod pots treure o eliminar drets a cada tipus d'usuaris. Si no s'especifica el tipus d'usuari a què volem treure, posar o assignar privilegis, el que succeirà a l'realitzar l'operació és afectar a tots els usuaris simultàniament.

El bàsic que cal recordar és que li donem donar o treure permisos a aquests nivells:

paràmetre Nivell Descripció
u amo amo de l'arxiu o directori
g grup grup a què pertany l'arxiu
o altres tots els altres usuaris que no són el propietari ni de el grup

Tipus de permís:

Permís identifica
r Permís de lectura
w Permís d'escriptura
x Permís d'execució

 Donar permís d'execució a l'amo:

$ chmod u+x komodo.sh

Treure permís d'execució a tots els usuaris:

$ chmod -x komodo.sh

Donar permís de lectura i escriptura als altres usuaris:

$ chmod o+r+w komodo.sh

Deixar només accés de lectura a el grup a què pertany l'arxiu:

$ chmod g+r-w-x komodo.sh

Permisos en format numèric octal

Hi ha una altra forma d'utilitzar la comanda chmod que, per a molts usuaris, resulta "més còmoda", encara que a priori sigui una mica més complexa d'entendre ¬¬.

La combinació de valors de cada grup dels usuaris forma un nombre octal, el bit "x" és 20 és a dir 1, el bit w és 21 és a dir 2, el bit r és 22 és a dir 4, tenim llavors:

r = 4
w = 2
x = 1

La combinació de bits encesos o apagats en cada grup dóna vuit possibles combinacions de valors, és a dir la suma dels bits encesos:

Permís valor Octal Descripció
- - - 0 no té cap permís
- - x 1 només permís d'execució
- w - 2 només permís d'escriptura
- wx 3 permisos d'escriptura i execució
r - - 4 només accés de lectura
r - x 5 permisos de lectura i execució
rw - 6 permisos de lectura i escriptura
rwx 7 tots els permisos establerts, lectura, escriptura i execució

Quan es combinen els permisos de l'usuari, grup i altres, s'obtenen un nombre de tres xifres que conformen els permisos de l'arxiu o de directori. exemples:

Permís Valor Descripció
rw- --- -- 600 El propietari té permisos de lectura i escriptura
rwx --x --x 711 El propietari lectura, escriptura i execució, el grup i altres només execució
rwx rx rx 755 El propietari lectura, escriptura i execució, el grup i altres poden llegir i executar l'arxiu
rwx rwx rwx 777 L'arxiu pot ser llegit, escrit i executat per qui sigui
r-- --- -- 400 Només el propietari pot llegir l'arxiu, però ni el mateix pot modificar-lo o executar-lo i per descomptat ni el grup ni altres poden fer res en el
rw- r-- --- 640 L'usuari propietari pot llegir i escriure, el grup pot llegir l'arxiu i altres no poden fer res

permisos especials

Encara hi ha un altre tipus de permisos que cal considerar. Es tracta del bit de permisos SUID (setembre User ID), el bit de permisos SGID (setembre Group ID) i el bit de permisos de persistència (sticky bit).

fixar l'hora

El bit setuid és assignable a fitxers executables, i permet que quan un usuari executi aquest fitxer, el procés adquireixi els permisos de propietari de l'arxiu executat. L'exemple més clar de fitxer executable i amb el bit setuid és:

$ su

Podem veure que el bit està assignat com "s" en la següent captura:

Per assignar aquest bit a un fitxer seria:

$ chmod u+s /bin/su

I per llevar-:

$ chmod u-s /bin/su

Nota: Hem d'utilitzar aquest bit amb extrema cura ja que pot provocar una escalada de privilegis en el nostre sistema ¬¬.

setgid

El bit setid permet adquirir els privilegis de el grup assignat a el fitxer, també és assignable a directoris. Això serà molt útil quan diversos usuaris d'un mateix grup necessitin treballar amb recursos dins d'un mateix directori.

Per assignar aquest bit fem el següent:

$ chmod g+s /carpeta_compartida

I per llevar-:

$ chmod g-s /carpeta_compartida

enganxós

Aquest bit sol assignar-se a directoris als quals tots els usuaris tenen accés, i permet evitar que un usuari pugui esborrar fitxers / directoris d'un altre usuari dins d'aquest directori, ja que tots tenen permís d'escriptura.
Podem veure que el bit està assignat com "t" en la següent captura:

Per assignar aquest bit fem el següent:

$ chmod o+t /tmp

I per llevar-:

$ chmod o-t /tmp

Bé amics, ara ja saben com protegir de millor manera la seva informació, amb això espero que deixin de buscar alternatives per Bloqueig de carpetes o Protector de carpetes que en GNU / Linux no els necessitem per a res XD.

PD: Aquest article en particular m'ho sol·licito el veí del cosí d'un amic XD, espero haver-li resolt els dubtes… 