Szavazás

Milyen virtualizációt használsz?

Online felhasználók

Jelenleg 0 felhasználó van a webhelyen

Új felhasználók

  • Morello
  • gyo
  • jbaksa
  • tomassy
  • Kalacska13

Ajánlott böngészők

Google Chrome

Jelenlegi hely

Linux fájl és könyvtárjogosultságok kezdőknek

Linux előtt az emberek túlnyomó többsége má$ rendszereken kívül nem nagyon ismer alternatívát. Első megdöbbentő élmény: Hová lettek az exek? Mi az, hogy valami 777 jogosultságokkal rendelkezik? Mit jelent egyátalán ez? Miért nem tudom törölni valamelyik fájlt?
Eme kérdésekre próbál lehetőleg kimerítő válaszokat adni a cikk, elkerülve azt a jópár órás Google-harcot (amit szinte mindenki megvív elősször) ami legtöbbször angol találatokat dob elő, így nehezítve az amúgy sem egyszerűt.
Chmod, umask, lsattrib, chattrib elsőre értelmetlen karaktersornak tűnhet, holott a leghatékonyabb eszközök a felhasználók fájljogosultságainak variálásához.
Miről is van szó:

A Linux fájlrendszere tárolja a fájl tulajdonosának azonosítóját a fájlhoz tartozó csoportokat és a hozzáférési jogosultságot is. A hozzáférési jogosultságok ábrázolásához egy 3 jegyű számból álló kódot használ, amit fájlmodnak nevezünk.

  • Első szám a saját (user) jogot
  • Második szám a csoport (group) jogot
  • Harmadik a többiek (others) jogait rögzíti

A saját jog alatt a fájl tulajdonosának jogait értjük, legtöbb esetben ő az adott fájl vagy könyvtár létrehozója is. Minden komponens a következő részekből áll:

  1. Saját   r w x | 4 2 1
  2. Csoport r w x | 4 2 1
  3. Többiek r w x | 4 2 1


(Nulladik helyen esetenként a speciális jogok állnak, erről később)

  • r (Read): Olvasási jog (vagyis az adott fájl ezáltal olvasható)
  • w (Write): Írási jog (az adott fájl ezáltal válik írhatóvá)
  • x (Executabe): Végrehajtási jog (Futási)

Jogosultságok megváltoztatása:
Egy fájlt tulajdonosi (hozzáférési) jogait csak a fájl tulajdonosa, vagy a rendszergazda tudja megváltoztatni.
chmod +|-<mód> <fájlnév>
Chmodnál meg kell határozni az alábbiakat:
Adunk vagy elveszünk jogot (+ : adunk, - : elveszünk)
Kinek/kitől (saját, csoport, mások (ugo))
Milyen jogot adunk (r w x / 4 2 1 )
u – saját (User)
chmod u+w munka.tar.gz Saját magunknak írási jog
g – csoport (Group)
chmod o+x munka.tar.gz Másoknak futtatási jog
o – mások (Other)
chmod o+x,u+w munka.tar.gz
a - mindenki (All)
chmod 777 munka.tar.gz Mindenkinek minden jog, ugyanaz mint:
chmod a+rwx <fájlnév>
chmod 700 munka.tar.gz Csak nekem van jogom mindenhez, ugyanaz mint
chmod u+rwx,g-rwx,o-rwx <fájlnév>

Fájlok esetében a végrehajtási jognak csak a futtatható fájloknál van jelentőségük (bináris állományok, scriptek).
Könyvtárak esetén az olvasási jog azt jelenti, hogy elolvashatja a fájlok neveit az adott könyvtárban, az írási jog jelenti, hogy a könyvtárban állományt, könyvtárat hozhatunk létre, míg a futtatási jog megengedi a belépést a könyvtárba.

Amikor egy fájlt létrehozunk, akkor az a jogosultságoknak egy alapértelmezett csoportjával fog rendelkezni. Pl.: Létrehozunk egy üres fájlt:

#touch akarmi
#ls –la akarmi
rw-r--r—

A létrehozáson kívül, hogy bármit is tettünk volna mint tulajdonosok, alapértelmezés szerint írási és olvasási joggal, a csoportba és a nem csoportba tartozók pedig csak olvasási joggal rendelkeznek. Ennek az az oka, hogy az operációs rendszer a fájl létrehozásakor a 022 maszkot alkalmazza. Egy adott állomány létrehozásakor alapértelmezésben senki sem kap futtatási jogot.
Az alapértelmezett maszk lekérdezése:

#umask
-> 022
#umask –S
->u=rwx g=rx o=rx

A maszk megváltoztatása:

#umask 420

A beállításból adódik, hogy egy állomány létrehozásakor kap-e futtatási jogot.
Sok esetben a Linux állományok attribútumaival akkor találjuk magunkat szembe, ha rendszerünket valaki feltörte. Ilyenkor feltűnő lehet, hogy ha például frissíteni akarunk egy csomagot ami megváltozott, azt a rendszer nem engedi, és eltávolítani sem tudjuk annak ellenére, hogy root-ként vagyunk bejelentkezve. Ezeket a fájlokat megváltoztathatatlan (immutable) fájloknak nevezzük, mivel sem mozgatni sem törölni, de még átnevezni sem lehet. Egy állomány attribútumainak megjelenítése:

#lsattr <állomány név>
-------- állomány neve megjegyzés

A parancs az adott fájl tulajdonságait, attribútumait jeleníti meg. Normális, alapértelmezett esetben, egyetlen egy tulajdonság bit sincs beállítva. A – jelek azoknak a tulajdonságoknak a helyét jelzik, amelyek a chattr paranccsal megváltoztatható.

chattr <+|- tulajdonság> <állomány neve>

Megadható attribútumok:

a: Kizárólag a root adhatja meg, az adott fájlhoz csak hozzáfűzni lehet, így nem felülírható és nem frissül a módosítás időpontja. (egész fájlrendszerre is megadható)
i: Ez a tulajdonság teszi megváltoztathatatlanná az állományt. (csak root-ként)
c: Ha az állomány ritkán használt és nagyméretű, akkor érdemes használni. A rendszer tömörített formában tárolja. (Automatikusan tömörít, kibont használatkor.)
d: Az állományról nem készül biztonsági másolat (dd).
S: Ezzel a bittel megjelölt állomány, ha azon bármilyen változás történik, azonnal mentésre kerül.
u: Törlés esetén a fájl fájlrendszertől függően azonnal visszaállítható (kivétel például az XFS).
S: Titkos anyagoknál van értelme. Fizikailag is törli az állományt a törlésnél, nem csak a bejegyzés tűnik el. (sima törlésnél csak a bejegyzést törli az inode-táblából és a kapcsolódó katalógusokból és szabad területként jelöli meg amit az állomány addig foglalt a partíción)

Setuid / Setgid

A korábbi beállításokból ismert r w x jogosultsági biteken kívül létezik még egy úgynevezett „s” bithármas is, melyet tulajdonságaiból adódóan setuid vagy setgid néven is említ az irodalom. Az „s” bit szükségessége: Az egyes programok működése közben szükség lehet rá, hogy úgy tűnjön számára, mintha más felhasználóként jelentkeztünk be a rendszerbe. Előfordulhat, hogy egy programot úgy szeretnénk futtatni, mintha rendszergazdák lennénk. Ez lehet valamilyen program, amit a root birtokol, de bizonyos okokból más felhasználóknak is futtathatóvá kívánják tenni. Lehet olyan megoldás is, hogy egy adott felhasználói program működéséhez olyan fájlok írása és olvásása is szükséges, melyeket a root birtokol. A setuid bit mely futtathatósági bit, az egyik változat. Ha pl. az „amator_ssb „ nevű programot bárki számára futtathatóvá akarjuk tenni, viszont ez rendszergazdai tulajdonságokkal rendelkezik, a következő megoldásokat választhatjuk:

chmod u+s amator_ssb

A setuid bit összevonható más jogosultságokkal. Minthogy az rwx helyettesíthető 4 2 1 számokkal, a setuid 4-es a setgid 2-es számmal helyettesíthető.
Megj.: A setuid és a setgid bitek nem használhatók parancsállományokra (shell vagy más néven bash scriptekre, biztonsági okokból).

chmod u=rwxs g=rx o= <fájlnév>
chmod 4750 <fájlnév>

Sticky bit (tapadós, Unix alatt más szerepet tölt be, innen kapta a nevét is: Némely Unix-szerű (vagy Unix) rendszernél (pl: NetBSD) sticky bit beállítása eseten a program egy része a memóriában marad, így biztosítva a gyorsabb elindulást) beállítása esetén csak is kizárólag a tulajdonos vagy a root felhasználó törölheti / módosíthatja az adott állományt. Chmoddal az oktális szám elején egy 1-essel adhatjuk meg:
chmod 1777 <fajl>
Megjegyzés: A megadott kapcsolók/attribútumok egy része fájlrendszerenként másképpen viselkedhet. A parancsoknak disztribúciófüggetlenül minden Linux rendszerben ugyanaz a hatásuk.

Köszönet Babokanak a korrekciókért, tesztekért és az őszinte véleményéért.

Témakörök: 

Hozzászólások

Már próbálkoztam az s-bit beállításával az init parancsra régebben, hogy ne kelljen állandóan root-ként bejelentkeznem ahhoz, hogy kikapcsoljam a gépet, de a ha jól értem a cikket, akkor nem lehet megoldani.
Valami más megoldás nincs erre?
Desktopnak használom a rendszert és bosszantó, hogy kikapcsolás előtt állandóan szórakozni kell ezzel.

Én a gombot szoktam nyomogatni, ha véletlen havonta egyszer kikapcsolom a gépet...

BaBo


Ez egy nedves kor
Nappal vér folyik, éjjel bor

Hobo Blues Band - Vadászat
.oOOo.oOOo.oOOo.oOOo.oOOo.oOOo.
2.6.19.2-grsec @ Slackware 11.0

Nem árt az a rendszernek?

Neeeem 8)

Ha megnyomom a gombot, akkor rendesen init(0) -al kikapcsol a gép.

BaBo


Ez egy nedves kor
Nappal vér folyik, éjjel bor

Hobo Blues Band - Vadászat
.oOOo.oOOo.oOOo.oOOo.oOOo.oOOo.
2.6.19.2-grsec @ Slackware 11.0

Gondolom, akkor olyasmi mint xp alatt.
Hol lehet beállítani? Én hiába nyomogatom...

tamas.csabi képe

Szevasztok

Én kicsit más megoldást alkalmazok, bár kétségtelen, Babo megoldása egyszerűbb.
Az /sbin/shutdown parancsot átadod a sudo -nak.
visudo -val tegyél egy ilyen bejegyzést a /etc/sudoers fájlba:

forresty ALL = NOPASSWD: /sbin/shutdown

Ezután, vagy csinálsz egy aliast, vagy készítesz egy kis scriptet, pl így:

#!/bin/sh
# leallitas

sudo shutdown -h now

Elmented mondjuk leall néven, beteszed pl. a /usr/bin -be, oszt ha kiadod a leall parancsot, akkó leáll, rendesen.

Szevasztok

Linuxbazár
Slackware 11.0 kernel 2.6.18.3
Fluxbox 1.0rc2

Szia

Ezt az ACPI BUTTON intézi a kernelból. Ha beleforgatod ekkor nálad is működni fog.

BaBo


Ez egy nedves kor
Nappal vér folyik, éjjel bor

Hobo Blues Band - Vadászat
.oOOo.oOOo.oOOo.oOOo.oOOo.oOOo.
2.6.19.2-grsec @ Slackware 11.0

Köszi a válaszokat!

gonye képe

Vannak még az ACL-ek (Access Control List), amikkel finoman lehet szabályozni a hozzéféréseket, öröklődéseket különösen windows környezetben. Ezeket használja valamelyikőtök a minennapi életben? Akár más linux verzió alatt? Azt tudom, hogy nem minden alkalmazás kompatibilis vele, vannak amelyek felülírják a jogokat, és csak a star archiver tud korrekt backupot készíteni róla.
De ezt olvastam még a 8.2-es SuSE linux kiadásakor, nem hiszem hogy ne mozdult volna a dolog valamilyen irányba...

Belépés

Friss hozzászólások