Permesoj en Linukso (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Saluton al ĉiuj. Ĉi tio estas traduko de artikolo el la libro RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 kaj EX300.

Puŝo: Mi esperas, ke la artikolo estos utila ne nur por komencantoj, sed ankaŭ helpos pli spertajn administrantojn plifaciligi siajn sciojn.

Do ni iru.

Permesoj en Linukso (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Por aliri dosierojn en Linukso, permesoj estas uzataj. Ĉi tiuj permesoj estas asignitaj al tri objektoj: la dosierposedanto, la grupposedanto kaj alia objekto (tio estas, ĉiuj aliaj). En ĉi tiu artikolo, vi lernos kiel apliki permesojn.

Ĉi tiu artikolo komenciĝas per superrigardo de la bazaj konceptoj, sekvita de diskuto pri Specialaj permesoj kaj Alirkontrolaj Listoj (ACLs). Ĉe la fino de ĉi tiu artikolo, ni kovras agordon de defaŭltaj permesoj per umask, kaj ankaŭ pri administrado de plilongigitaj uzant-atributoj.

Administrado de proprieto de dosieroj

Antaŭ diskuti permesojn, vi devus esti konscia pri la rolo de dosiero kaj dosierujo posedanto. Posedo de dosieroj kaj dosierujoj estas esenca por trakti permesojn. En ĉi tiu sekcio, vi unue lernos kiel vi povas vidi la posedanton. Vi tiam lernos kiel ŝanĝi la grupposedanton kaj uzanton por dosieroj kaj dosierujoj.

Montrante la posedanton de dosiero aŭ dosierujo

En Linukso, ĉiu dosiero kaj ĉiu dosierujo havas du posedantojn: uzanto kaj grupposedanto.

Ĉi tiuj posedantoj estas fiksitaj kiam dosiero aŭ dosierujo estas kreita. La uzanto kiu kreas la dosieron iĝas la posedanto de tiu dosiero, kaj la ĉefa grupo al kiu apartenas la sama uzanto ankaŭ iĝas la posedanto de tiu dosiero. Por determini ĉu vi, kiel uzanto, havas permeson aliri dosieron aŭ dosierujon, la ŝelo kontrolas pri proprieto.

Ĉi tio okazas en la sekva ordo:

  1. La ŝelo kontrolas ĉu vi estas la posedanto de la dosiero, kiun vi volas aliri. Se vi estas la posedanto, vi ricevas permesojn kaj la ŝelo ĉesas kontroli.
  2. Se vi ne estas la posedanto de la dosiero, la ŝelo kontrolos ĉu vi estas membro de grupo kiu havas permesojn pri la dosiero. Se vi estas membro de ĉi tiu grupo, vi aliros la dosieron kun la permesoj kiujn la grupo starigis, kaj la ŝelo ĉesos kontroli.
  3. Se vi estas nek uzanto nek posedanto de grupo, vi ricevas la rajtojn de aliaj uzantoj (Aliaj).

Por vidi la nunajn posedantojn, vi povas uzi la komandon ls-l. Ĉi tiu komando montras la uzanton kaj posedanton de la grupo. Malsupre vi povas vidi la posedantojn agordojn por dosierujoj en la /hejma dosierujo.

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

Uzante la komandon ls vi povas montri la posedanton de dosieroj en difinita dosierujo. Kelkfoje povas esti utile ricevi liston de ĉiuj dosieroj en la sistemo, kiuj havas donitan uzanton aŭ grupon kiel posedanton. Por tio vi povas uzi trovi. Argumento trovi-uzanto povas esti uzata por ĉi tiu celo. Ekzemple, la sekva komando listigas ĉiujn dosierojn, kiuj estas posedataj de la uzanto linda:

find / -user linda

Vi ankaŭ povas uzi trovi serĉi dosierojn, kiuj havas certan grupon kiel posedanton.

Ekzemple, la sekva komando serĉas ĉiujn dosierojn apartenantaj al la grupo uzantoj:

find / -group users

Ŝanĝo de posedado

Por apliki la taŭgajn permesojn, la unua afero por konsideri estas proprieto. Estas ordono por ĉi tio sufokita. La sintakso de ĉi tiu komando estas facile komprenebla:

chown кто что

Ekzemple, la sekva komando ŝanĝas la posedanton de la dosierujo /home/account al la uzanto linda:

chown linda /home/account

teamo sufokita havas plurajn eblojn, unu el kiuj estas precipe utila: -R. Vi povas diveni, kion ĝi faras, ĉar ĉi tiu opcio disponeblas ankaŭ por multaj aliaj komandoj. Ĉi tio ebligas al vi rekursie agordi la posedanton, kio ebligas al vi agordi la posedanton de la nuna dosierujo kaj ĉio sube. La sekva komando ŝanĝas la proprieton de la /hejma dosierujo kaj ĉio sub ĝi al la linda uzanto:

Nun la posedantoj aspektas jene:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

Ni faru:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

Nun la uzanto lisa estas la posedanto de la konta dosierujo:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

Ŝanĝu la posedanton de grupo

Estas du manieroj ŝanĝi la proprieton de grupo. Vi povas fari ĉi tion uzante sufokita, sed estas speciala komando nomita chgrptio faras la laboron. Se vi volas uzi la komandon sufokita, uzi .: antaŭ la grupnomo.

La sekva komando ŝanĝas ajnan posedanton de la /home/konta grupo al la konta grupo:

chown .account /home/account

vi povas uzi sufokita ŝanĝi la posedanton de uzanto kaj/aŭ grupo plurmaniere. Jen kelkaj ekzemploj:

  • chown lisa mia dosiero1 metas la uzanton lisa kiel la posedanton de myfile1.
  • chown lisa.sales mia dosiero fiksas la uzanton lisa kiel la posedanton de la mia dosiero, kaj ankaŭ fiksas la vendan grupon kiel la posedanton de la sama dosiero.
  • chown lisa:venda mia dosiero la sama kiel la antaŭa teamo.
  • chown .sales mia dosiero fiksas la vendan grupon kiel la posedanton de mia dosiero sen ŝanĝi la posedanton de la uzanto.
  • chown :vendoj mia dosiero la sama kiel la antaŭa teamo.

Vi povas uzi la komandon chgrpŝanĝi la posedanton de la grupo. Konsideru la sekvan ekzemplon, kie vi povas uzi chgrp starigu la posedanton de la konta dosierujo al la venda grupo:

chgrp .sales /home/account

Kiel kun sufokita, vi povas uzi la opcion -R с chgrp, same kiel rekursie ŝanĝi la posedanton de la grupo.

Kompreni la Defaŭltan Posedanton

Vi eble rimarkis, ke kiam uzanto kreas dosieron, la defaŭlta proprieto estas aplikata.
La uzanto kiu kreas la dosieron aŭtomate iĝas la posedanto de tiu dosiero, kaj la ĉefa grupo de tiu uzanto aŭtomate iĝas la posedanto de tiu dosiero. Ĉi tio estas kutime la grupo kiu estas listigita en la /etc/passwd dosiero kiel la ĉefa grupo de la uzanto. Tamen, se la uzanto estas membro de pli ol unu grupo, la uzanto povas ŝanĝi la efikan primaran grupon.

Por montri la nunan efikan primaran grupon, la uzanto povas uzi la komandon grupoj:

[root@server1 ~]# groups lisa
lisa : lisa account sales

Se la nuna linda uzanto volas ŝanĝi la efikan primaran grupon, li uzos la komandon novgrpsekvata de la nomo de la grupo kiun li volas agordi kiel la novan efikan primaran grupon. Post uzi la komandon novgrp la primara grupo estos aktiva ĝis la uzanto enmetas komandon eliro aŭ ne elsaluti.

La sekvanta montras kiel la uzanto linda uzas ĉi tiun komandon, kun vendoj kiel la ĉefa grupo:

lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1

Post ŝanĝi la efikan ĉefan grupon, ĉiuj novaj dosieroj kreitaj de la uzanto havos tiun grupon kiel la grupposedanto. Por reveni al la originala primara grupo agordo, uzu eliro.

Por povi uzi la komandon novgrp, la uzanto devas esti membro de la grupo kiun ili volas uzi kiel la ĉefan grupon. Krome, gruppasvorto povas esti uzata por grupo uzante la komandon gpasswd. Se la uzanto uzas la komandon novgrpsed ne estas membro de la celgrupo, la ŝelo petas la pasvorton de la grupo. Post kiam vi enigas la ĝustan gruppasvorton, nova efika primara grupo estos establita.

Administrado de fundamentaj rajtoj

La Linukso-permessistemo estis inventita en la 1970-aj jaroj. Ĉar la komputadbezonoj estis limigitaj en tiuj jaroj, la baza permessistemo estis sufiĉe limigita. Ĉi tiu permessistemo uzas tri permesojn, kiuj povas esti aplikataj al dosieroj kaj dosierujoj. En ĉi tiu sekcio, vi lernos kiel uzi kaj ŝanĝi ĉi tiujn permesojn.

Kompreni Legi, Skribi kaj Efektivigi Permesojn

Tri bazaj permesoj permesas vin legi, skribi kaj ekzekuti dosierojn. La efiko de ĉi tiuj permesoj malsamas kiam aplikata al dosieroj aŭ dosierujoj. Por dosiero, la legpermeso donas al vi la rajton malfermi la dosieron por legado. Sekve, vi povas legi ĝian enhavon, sed tio signifas, ke via komputilo povas malfermi la dosieron por fari ion kun ĝi.

Programdosiero kiu bezonas aliron al biblioteko devas, ekzemple, havi legan aliron al tiu biblioteko. Sekvas, ke la legpermeso estas la plej baza permeso, kiun vi bezonas por labori kun dosieroj.

Se aplikita al dosierujo, legado permesas al vi montri la enhavon de tiu dosierujo. Vi devas konscii, ke ĉi tiu permeso ne permesas vin legi la dosierojn en la dosierujo. La Linuksa permessistemo ne konas heredon, kaj la nura maniero por legi dosieron estas uzi legpermesojn sur tiu dosiero.

Kiel vi verŝajne povas diveni, skribi permeson, se aplikite al dosiero, permesas skribi al la dosiero. Alivorte, ĝi permesas vin ŝanĝi la enhavon de ekzistantaj dosieroj. Tamen, ĝi ne permesas al vi krei aŭ forigi novajn dosierojn aŭ ŝanĝi dosierojn permesojn. Por fari tion, vi devas doni skribpermeson al la dosierujo, kie vi volas krei la dosieron. En dosierujoj, ĉi tiu permeso ankaŭ permesas krei kaj forigi novajn subdosierujojn.

Ekzekuti permeson estas tio, kion vi bezonas por ekzekuti la dosieron. Ĝi neniam estos instalita defaŭlte, kio faras Linukson preskaŭ tute imuna kontraŭ virusoj. Nur iu kun skribpermesoj sur la dosierujo povas apliki ekzekutpermeson.

La sekvanta resumas la uzon de bazaj permesoj:

Permesoj en Linukso (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Uzante chmod

La komando estas uzata por administri permesojn. chmod... Uzanta chmod vi povas agordi permesojn por la uzanto (uzanto), grupoj (grupo) kaj aliaj (aliaj). Vi povas uzi ĉi tiun komandon en du reĝimoj: relativa reĝimo kaj absoluta reĝimo. En absoluta reĝimo, tri ciferoj estas uzataj por agordi bazajn permesojn.

Permesoj en Linukso (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Kiam vi agordas permesojn, kalkulu la valoron, kiun vi bezonas. Se vi volas agordi legi/skribi/ekzekuti por uzanto, legi/ekzekuti por grupo, kaj legi/ekzekuti por aliaj en /somefile tiam vi uzas la jenan komandon chmod:

chmod 755 /somefile

Kiam vi uzas chmod tiamaniere, ĉiuj nunaj permesoj estas anstataŭigitaj per la permesoj kiujn vi starigis.

Se vi volas ŝanĝi la permesojn rilate al la nunaj permesoj, vi povas uzi chmod en relativa modo. Uzanta chmod en relativa reĝimo vi laboras kun tri indikiloj por indiki kion vi volas fari:

  1. Unue vi specifu por kiu vi volas ŝanĝi permesojn. Por fari tion vi povas elekti inter uzanto (u), grupo (g) kaj aliaj (o).
  2. Vi tiam uzas deklaron por aldoni aŭ forigi permesojn de la nuna reĝimo, aŭ agordi ilin absolute.
  3. Fine vi uzas r, w и xpor specifi kiujn permesojn vi volas agordi.

Kiam vi ŝanĝas permesojn en relativa reĝimo, vi povas preterlasi la parton "al" por aldoni aŭ forigi permeson por ĉiuj objektoj. Ekzemple, ĉi tiu komando aldonas ekzekuti permeson por ĉiuj uzantoj:

chmod +x somefile

Kiam vi laboras en relativa reĝimo, vi ankaŭ povas uzi pli kompleksajn komandojn. Ekzemple, ĉi tiu komando aldonas skribpermeson al grupo kaj forigas legpermeson por aliaj:

chmod g+w,o-r somefile

Kiam vi uzas chmod -R o+rx /datumoj vi starigas ekzekutpermeson por ĉiuj dosierujoj kaj ankaŭ dosieroj en la /data dosierujo. Por agordi ekzekutpermeson nur por dosierujoj kaj ne por dosieroj, uzu chmod -R o+ rX /datumoj.

La majuskla X certigas, ke dosieroj ne ricevas ekzekutpermeson krom se la dosiero jam fiksis ekzekutpermeson por iuj objektoj. Ĉi tio faras X pli inteligenta maniero trakti ekzekutpermesojn; ĉi tio evitos agordi ĉi tiun permeson sur dosieroj kie ĝi ne estas bezonata.

Plilongigitaj rajtoj

Krom la bazaj permesoj, pri kiuj vi ĵus legis, Linukso ankaŭ havas aron da altnivelaj permesoj. Ĉi tiuj ne estas la permesoj, kiujn vi agordas defaŭlte, sed foje ili provizas utilan aldonon. En ĉi tiu sekcio, vi lernos kio ili estas kaj kiel agordi ilin.

Kompreni SUID, GUID, kaj Sticky Bit Plilongigitajn Permesojn

Estas tri altnivelaj permesoj. La unua el ili estas la permeso agordi uzantan identigilon (SUID). En iuj specialaj kazoj, vi povas apliki ĉi tiun permeson al ruleblaj dosieroj. Defaŭlte, uzanto kiu prizorgas ruleblan ekzekutas tiun dosieron kun siaj propraj permesoj.

Por ordinaraj uzantoj, tio kutime signifas, ke la uzo de la programo estas limigita. Tamen, en iuj kazoj, la uzanto bezonas specialajn permesojn, nur por plenumi specifan taskon.

Konsideru, ekzemple, situacion kie uzanto bezonas ŝanĝi sian pasvorton. Por fari tion, la uzanto devas skribi sian novan pasvorton al la /etc/shadow-dosiero. Tamen, ĉi tiu dosiero ne estas skribebla de ne-radikaj uzantoj:

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

La SUID-permeso proponas solvon al ĉi tiu problemo. La ilo /usr/bin/passwd uzas ĉi tiun permeson defaŭlte. Ĉi tio signifas, ke kiam la pasvorto estas ŝanĝita, la uzanto provizore akiras radikajn privilegiojn, kio permesas al ili skribi al la /etc/shadow-dosiero. Vi povas vidi la SUID-permeson kun ls-l kiom s en pozicio kie vi normale atendus vidi x por kutimaj permesoj:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

La SUID-permeso povas aspekti utila (kaj en iuj kazoj ĝi estas), sed samtempe ĝi estas potenciale danĝera. Se ne aplikata ĝuste, vi povas hazarde fordoni radikajn permesojn. Tial mi rekomendas uzi ĝin nur kun la plej granda zorgo.

Plej multaj administrantoj neniam bezonos uzi ĝin; vi nur vidos ĝin en iuj dosieroj kie la operaciumo devus agordi ĝin defaŭlte.

La dua speciala permeso estas la grupidentigilo (SGID). Ĉi tiu permeso havas du efikojn. Se aplikite al rulebla dosiero, ĝi donas al la uzanto, kiu plenumas la dosieron, la permesojn de la grupposedanto de la dosiero. Do SGID povas fari pli-malpli la samon kiel SUID. Tamen, SGID praktike ne estas uzata por ĉi tiu celo.

Kiel kun SUID-permeso, SGID estas aplikata al iuj sistemaj dosieroj kiel defaŭlta agordo.

Se aplikita al dosierujo, la SGID povas esti utila ĉar vi povas uzi ĝin por agordi la defaŭltan grupposedanton por dosieroj kaj subdosierujoj kreitaj en tiu dosierujo. Defaŭlte, kiam uzanto kreas dosieron, ilia efika primara grupo estas agordita kiel la grupposedanto por tiu dosiero.

Ĉi tio ne ĉiam estas tre utila, precipe ĉar uzantoj de Red Hat/CentOS havas sian ĉefan grupon agordita al grupo kun la sama nomo kiel la uzanto, kaj de kiu la uzanto estas la sola membro. Tiel, defaŭlte, la dosieroj kiujn la uzanto kreas estos dividitaj en amaso.

Imagu situacion kie uzantoj linda kaj lori laboras en kontado kaj estas membroj de grupo konto. Defaŭlte, ĉi tiuj uzantoj estas membroj de privata grupo, kies sola membro ili estas. Tamen ambaŭ uzantoj estas membroj de la konta grupo, sed ankaŭ kiel malĉefa grupparametro.

La defaŭlta situacio estas ke kiam iu el ĉi tiuj uzantoj kreas dosieron, la primara grupo iĝas la posedanto. Tial, defaŭlte, linda ne povas aliri dosierojn kreitajn de lori, kaj inverse. Tamen, se vi kreas komunan grupan dosierujon (diru /groups/account) kaj certigas, ke la SGID-permeso estas aplikita al tiu dosierujo kaj ke la grupkonto estas agordita kiel la grupposedanto por tiu dosierujo, ĉiuj dosieroj kreitaj en tiu dosierujo kaj ĉiuj de ĝiaj subdosierujoj , ankaŭ ricevu la grupan konton kiel la grupposedanton defaŭlte.

Tial, la SGID-permeso estas tre utila permeso por agordi en publikaj grupaj dosierujoj.

La SGID-permeso estas montrita en la eligo ls-l kiom s ĉe la pozicio kie vi normale trovus grupan ekzekutpermeson:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

La tria el la specialaj permesoj estas glueca peco. Ĉi tiu permeso estas utila por protekti dosierojn kontraŭ hazarda forigo en medio kie pluraj uzantoj havas skribaliron al la sama dosierujo. Se glueca peco estas uzata, uzanto povas forigi dosieron nur se ili estas la uzantposedanto de la dosiero aŭ dosierujo, kiu enhavas la dosieron. Tial ĝi estas uzata kiel defaŭlta permeso por la dosierujo /tmp kaj povas esti utila ankaŭ por publikaj grupaj dosierujoj.

Sen la glueca peco, se uzanto povas krei dosierojn en dosierujo, ili ankaŭ povas forigi dosierojn de tiu dosierujo. En publika grupa medio, tio povas esti ĝena. Imagu uzantojn linda kaj lori, kiuj ambaŭ havas skribpermesojn al la dosierujo /data/account kaj akiras ĉi tiujn permesojn per membreco en la kontgrupo. Tial, linda povas forigi dosierojn kreitajn de lori kaj inverse.

Kiam vi aplikas la gluecan pecon, la uzanto povas forigi dosierojn nur se unu el la sekvaj kondiĉoj estas vera:

  • La uzanto estas la posedanto de la dosiero;
  • La uzanto estas la posedanto de la dosierujo kie troviĝas la dosiero.

Kiam vi uzas ls-l, vi povas vidi la gluecan pecon kiel t en la pozicio kie vi normale vidus ekzekutpermeson por aliaj:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

Aplikante plilongigitajn rajtojn

Por apliki SUID, SGID kaj glueca bit vi povas ankaŭ uzi chmod. SUID havas nombran valoron de 4, SGID havas nombran valoron de 2, kaj glueca bito havas nombran valoron de 1.

Se vi volas apliki ĉi tiujn permesojn, vi devas aldoni kvarciferan argumenton al chmod, kies unua cifero rilatas al specialaj permesoj. La sekva linio, ekzemple, aldonos SGID-permeson al la dosierujo kaj starigos rwx por uzanto kaj rx por grupo kaj aliaj:

chmod 2755 /somedir

Ĉi tio estas sufiĉe nepraktika se vi bezonas vidi la nunajn permesojn, kiuj estas agordita antaŭ ol labori chmod en absoluta reĝimo. (Vi riskas anstataŭi permesojn se vi ne faras.) Do mi rekomendas kuri en relativa reĝimo se vi bezonas apliki iun el la specialaj permesoj:

  1. Por SUID uzo chmod u+s.
  2. Por uzo de SGID chmod g+s.
  3. Por gluiĝema uzo chmod +t, sekvata de la nomo de la dosiero aŭ dosierujo por kiu vi volas agordi permesojn.

La tabelo resumas ĉion, kion vi bezonas scii pri administrado de specialaj permesoj.

Permesoj en Linukso (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Ekzemplo de laboro kun specialaj rajtoj

En ĉi tiu ekzemplo, vi uzas specialajn permesojn por faciligi al grupanoj kunhavi dosierojn en la komuna grupa dosierujo. Vi asignas la ID-bitaĵon al la fiksita grupa ID same kiel la gluiĝema bito, kaj vi vidas, ke post kiam ili estas agordita, funkcioj estas aldonitaj por faciligi la kunlaboron de grupanoj.

  1. Malfermu terminalon kie vi estas la linda uzanto. Vi povas krei uzanton per la komando uzantoadd linda, aldonu pasvorton paswd Linda.
  2. Kreu la /data dosierujon en la radiko kaj la /data/sales subdosierujon kun la komando mkdir -p /datumoj/vendoj. Kompleta cd /datumoj/vendojpor iri al la venda adresaro. Kompleta tuŝu linda1 и tuŝu linda2krei du malplenajn dosierojn posedatajn de linda.
  3. Ekzekutu su-lisa por ŝanĝi la nunan uzanton al la uzanto lisa, kiu ankaŭ estas membro de la venda grupo.
  4. Ekzekutu cd /datumoj/vendoj kaj de tiu dosierujo ekzekuti ls-l. Vi vidos du dosierojn, kiuj estis kreitaj de la uzanto linda kaj apartenas al la grupo linda. Ekzekuti rm -f linda*. Ĉi tio forigos ambaŭ dosierojn.
  5. Ekzekutu tuŝu lisa1 и tuŝu lisa2krei du dosierojn, kiuj estas posedataj de la uzanto lisa.
  6. Ekzekutu su- por levi viajn privilegiojn al radiko.
  7. Ekzekutu chmod g+s,o+t /datumoj/vendojpor agordi la grupidentigilon (GUID) biton same kiel la gluecan biton en la komuna grupa dosierujo.
  8. Ekzekutu su-linda. Tiam faru tuŝu linda3 и tuŝu linda4. Vi nun vidu, ke la du dosieroj, kiujn vi kreis, estas posedataj de la venda grupo, kiu estas la grupposedanto de la dosierujo /data/sales.
  9. Ekzekutu rm -rf lisa*. La glueca peco malhelpas ĉi tiujn dosierojn esti forigitaj nome de la linda uzanto, ĉar vi ne estas la posedanto de ĉi tiuj dosieroj. Notu, ke se la linda uzanto estas la posedanto de la /data/sales dosierujo, ili povas forigi ĉi tiujn dosierojn ĉiukaze!

ACL-administrado (setfacl, getfacl) en Linukso

Kvankam la progresintaj rajtoj diskutitaj supre aldonas utilajn funkciojn al la maniero kiel Linukso traktas permesojn, ĝi ne permesas al vi doni permesojn al pli ol unu uzanto aŭ unu grupo en ununura dosiero.

Alirkontrollistoj ofertas ĉi tiun funkcion. Krome, ili permesas al administrantoj agordi defaŭltajn permesojn en kompleksa maniero, kie la fiksitaj permesoj povas varii de dosierujo al dosierujo.

Komprenante ACLojn

Kvankam la ACL-subsistemo aldonas bonegan funkciecon al via servilo, ĝi havas unu malavantaĝon: ne ĉiuj iloj subtenas ĝin. Sekve, vi eble perdos viajn ACL-agordojn kiam vi kopias aŭ movas dosierojn, kaj via rezerva programaro eble malsukcesos sekurkopii viajn ACL-agordojn.

La gudro-utilo ne subtenas ACLojn. Por certigi, ke ACL-agordoj ne estas perditaj kiam vi kreas sekurkopion, uzu stelo anstataŭ gudro. stelo funkcias kun la samaj elektoj kiel gudro; ĝi nur aldonas subtenon por ACL-agordoj.

Vi ankaŭ povas subteni la ACL uzante getfacl, kiu povas esti restarigita per la setfacl-komando. Por krei sekurkopion, uzu getfacl -R /dosierujo > dosiero.acls. Por restarigi agordojn de rezerva dosiero, uzu setfacl --restore=dosiero.acl.

Manko de subteno de iuj iloj ne devus esti problemo. ACLoj ofte estas aplikitaj al dosierujoj kiel struktura mezuro prefere ol al individuaj dosieroj.
Tial, ne estos multaj el ili, sed nur kelkaj, aplikataj en inteligentaj lokoj en la dosiersistemo. Tial restarigi la originalajn ACL-ojn, kun kiuj vi laboris, estas relative facila, eĉ se via rezerva programaro ne subtenas ilin.

Preparante la dosiersistemon por ACLs

Antaŭ ol vi komencas labori kun ACL-oj, vi eble bezonos prepari vian dosiersistemon por subteni ACL-ojn. Ĉar dosiersistemaj metadatenoj devas esti etenditaj, ne ĉiam estas defaŭlta subteno por ACLoj en la dosiersistemo. Se vi ricevas mesaĝon "operacio ne subtenata" kiam vi agordas ACL-ojn por dosiersistemo, via dosiersistemo eble ne subtenas ACL-ojn.

Por ripari ĉi tion, vi devas aldoni la opcion akl monto en la /etc/fstab dosiero tiel ke la dosiersistemo estas muntita kun ACL-subteno defaŭlte.

Ŝanĝi kaj vidi ACL-agordojn per setfacl kaj getfacl

Por agordi ACL vi bezonas la komandon setfacl. Por vidi la nunajn ACL-agordojn, vi bezonas getfacl. Teamo ls-l ne montras iujn ajn ekzistantajn ACLojn; ĝi nur montras + post la permeslisto, kiu indikas ke la ACLoj validas ankaŭ por la dosiero.

Antaŭ ol agordi ACL-ojn, ĉiam estas bona ideo montri la nunajn ACL-agordojn per getfacl. En la malsupra ekzemplo, vi povas vidi la nunajn permesojn, kiel montrite per ls-l, kaj ankaŭ kiel montrite kun getfacl. Se vi rigardas sufiĉe atente, vi vidos, ke la informoj montritaj estas ĝuste la sama.

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Kiel rezulto de ekzekuto de la komando getfacl sube vi povas vidi, ke la permesoj estas montritaj por tri malsamaj objektoj: uzanto, grupo kaj aliaj. Nun ni aldonu ACL por doni legi kaj ekzekuti permesojn ankaŭ al la venda grupo. komando por ĉi tio setfacl -mg:sales:rx /dir. En ĉi tiu teamo -m indikas ke la nunaj ACL-agordoj devas esti ŝanĝitaj. Post tio g:vendoj:rx diras al la komando agordi la leg-ekzekutan ACL (rx) por la grupo (g) vendoj. Malsupre vi povas vidi kiel aspektas la komando, kaj ankaŭ la eliron de la komando getfacl post ŝanĝi la nunajn ACL-agordojn.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

Nun kiam vi komprenas kiel agordi grupan ACL, estas facile kompreni ACL-ojn por uzantoj kaj aliaj uzantoj. Ekzemple, la komando setfacl -mu:linda:rwx /data donas permesojn al la linda uzanto en la dosierujo /data sen fari ĝin la posedanto aŭ ŝanĝi la taskon de la nuna posedanto.

teamo setfacl havas multajn funkciojn kaj eblojn. Unu opcio estas precipe grava, la parametro -R. Se uzata, la opcio faras la ACL agordita por ĉiuj dosieroj kaj subdosierujoj kiuj nuntempe ekzistas en la dosierujo kie vi starigas la ACL. Oni rekomendas, ke vi ĉiam uzu ĉi tiun opcion kiam ŝanĝas ACL-ojn por ekzistantaj dosierujoj.

Laborante kun Defaŭltaj ACL-oj

Unu el la avantaĝoj de uzado de ACL-oj estas, ke vi povas doni permesojn al pluraj uzantoj aŭ grupoj en dosierujo. Alia avantaĝo estas, ke vi povas ebligi heredon laborante kun la defaŭltaj ACL-oj.

Agordante la defaŭltan ACL, vi determinas la permesojn kiuj estos agordita por ĉiuj novaj eroj kreitaj en la dosierujo. Konsciu, ke la defaŭlta ACL ne ŝanĝas permesojn pri ekzistantaj dosieroj kaj subdosierujoj. Por ŝanĝi ilin, vi ankaŭ devas aldoni normalan ACL!

Ĉi tio estas grave scii. Se vi volas uzi ACL por agordi plurajn uzantojn aŭ grupojn por aliri la saman dosierujon, vi devas agordi la ACL dufoje. Unua uzo setfacl -R -mpor ŝanĝi la ACL por la nunaj dosieroj. Tiam uzu setfacl-md:prizorgi ĉiujn novajn elementojn, kiuj ankaŭ estos kreitaj.

Por agordi la defaŭltan ACL, vi nur bezonas aldoni la opcion d post opcio -m (ordo gravas!). Do uzu setfacl -md:g:sales:rx /datumojse vi volas grupvendojn legi kaj ekzekuti ĉion, kio iam ajn estas kreita en la dosierujo /data.

Kiam vi uzas defaŭltajn ACL-ojn, ankaŭ povas esti utile agordi ACL-ojn por aliaj. Ĉi tio kutime ne havas multe da senco ĉar vi ankaŭ povas ŝanĝi la permesojn por aliaj uzantaj chmod. Tamen, kion vi ne povas fari chmod, estas specifi la rajtojn kiuj devas esti konceditaj al aliaj uzantoj por ĉiu nova dosiero kiu iam estas kreita. Se vi volas malhelpi aliajn ricevi permesojn pri io ajn kreita en /data ekzemple uzu setfacl -md:o::- /data.

ACL-oj kaj normalaj permesoj ne ĉiam estas bone integritaj. Problemoj povas ekesti se vi aplikas defaŭltan ACL al dosierujo, tiam eroj estas aldonitaj al tiu dosierujo, kaj poste provas ŝanĝi la normalajn permesojn. Ŝanĝoj kiuj validas por normalaj permesoj ne estos bone reflektitaj en la ACL-superrigardo. Por eviti problemojn, unue agordu normalajn permesojn, poste agordu la defaŭltajn ACL-ojn (kaj provu ne ŝanĝi ilin denove post tio).

Ekzemplo de Altrajtaj Administrado Uzanta ACLojn

En ĉi tiu ekzemplo, vi daŭrigos kun la dosierujoj /data/account kaj /data/sales, kiujn vi kreis antaŭe. En la antaŭaj ekzemploj, vi certigis, ke la venda grupo havas permesojn sur /data/sales kaj la kontgrupo havas permesojn sur /data/account.

Unue, certigu, ke la konta grupo ricevas legajn permesojn sur la /data/sales-dosierujo kaj la venda grupo ricevas legajn permesojn sur la /data/account-dosierujo.

Vi tiam agordas defaŭltajn ACLojn por certigi, ke ĉiuj novaj dosieroj havas la ĝustajn permesojn fiksitajn por ĉiuj novaj eroj.

  1. Malfermu terminalon.
  2. Ekzekutu setfacl -mg:konto:rx /datumoj/vendoj и setfacl -mg:sales:rx /datumoj/konto.
  3. Ekzekutu getfaclpor certigi, ke la permesoj estas fiksitaj kiel vi volis.
  4. Ekzekutu setfacl -md:g:konto:rwx,g:vendo:rx /datumoj/vendojpor agordi la defaŭltan ACL por la venda adresaro.
  5. Aldonu defaŭltan ACL por la dosierujo /data/account uzante setfacl -md:g:vendoj:rwx,g:konto:rx /datumoj/konto.
  6. Kontrolu, ke la ACL-agordoj validas aldonante novan dosieron al /data/sales. Kompleta tuŝu /datenoj/vendoj/nova dosiero kaj ekzekuti getfacl /data/sales/newfile por kontroli aktualajn permesojn.

Agordi defaŭltajn permesojn uzante umask

Supre, vi lernis kiel labori kun defaŭltaj ACL-oj. Se vi ne uzas ACL, ekzistas ŝelo-opcio, kiu determinas la defaŭltajn permesojn, kiujn vi ricevos: umasko (inversa masko). En ĉi tiu sekcio, vi lernos kiel ŝanĝi la defaŭltajn permesojn per umasko.

Vi eble rimarkis, ke kiam vi kreas novan dosieron, iuj defaŭltaj permesoj estas fiksitaj. Ĉi tiuj permesoj estas determinitaj de la agordo umasko. Ĉi tiu ŝela agordo validas por ĉiuj uzantoj ĉe ensaluto. En parametro umasko oni uzas numeran valoron, kiu estas subtrahita de la maksimumaj permesoj aŭtomate agordeblaj por la dosiero; la maksimuma agordo por dosieroj estas 666 kaj por dosierujoj estas 777.

Tamen, iuj esceptoj validas por ĉi tiu regulo. Vi povas trovi kompletan superrigardon de agordoj umasko en la suba tabelo.

El la nombroj uzataj en umasko, kiel en la kazo de nombraj argumentoj por la komando chmod, la unua cifero rilatas al la permesoj de la uzanto, la dua cifero rilatas al la permesoj de la grupo, kaj la lasta rilatas al la defaŭltaj permesoj fiksitaj por aliaj. Signifo umasko la defaŭlta 022 donas 644 por ĉiuj novaj dosieroj kaj 755 por ĉiuj novaj dosierujoj kreitaj sur via servilo.

Kompleta superrigardo de ĉiuj nombraj valoroj umasko kaj iliaj rezultoj en la suba tabelo.

Permesoj en Linukso (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Facila maniero vidi kiel funkcias la umask-agordo estas jena: komencu kun la defaŭltaj permesoj de la dosiero fiksitaj al 666 kaj subtrahi la umask por akiri la efikajn permesojn. Faru la samon por la dosierujo kaj ĝiaj defaŭltaj permesoj de 777.

Estas du manieroj ŝanĝi la umask-agordon: por ĉiuj uzantoj kaj por individuaj uzantoj. Se vi volas agordi la umask por ĉiuj uzantoj, vi devas certigi, ke la umask-agordo estas konsiderata kiam vi komencas ŝelajn mediodosierojn, kiel specifite en /etc/profile. La ĝusta aliro estas krei ŝelan skripton nomatan umask.sh en la dosierujo /etc/profile.d kaj specifi la umaskon, kiun vi volas uzi en tiu ŝel-skripto. Se la umasko estas ŝanĝita en ĉi tiu dosiero, ĝi estas aplikata al ĉiuj uzantoj post ensaluto en la servilon.

Alternativo al agordo de la umask per /etc/profile kaj rilataj dosieroj, kie ĝi validas por ĉiuj uzantoj ensalutantaj, estas ŝanĝi la umask-agordojn en dosiero nomata .profile kiu estas kreita en la hejmdosierujo de ĉiu uzanto.

La agordoj aplikataj en ĉi tiu dosiero validas nur por la individua uzanto; tial ĉi tio estas bona metodo se vi bezonas pli da detaloj. Mi persone ŝatas ĉi tiun funkcion ŝanĝi la defaŭltan umaskon por la radika uzanto al 027 dum normalaj uzantoj funkcias kun la defaŭlta umasko de 022.

Laborante kun etenditaj uzant-atributoj

Ĉi tiu estas la fina sekcio pri Linukso-permesoj.

Kiam oni laboras kun permesoj, ĉiam estas rilato inter uzanto aŭ grupobjekto kaj la permesoj kiujn uzanto aŭ grupobjektoj havas en dosiero aŭ dosierujo. Alternativa metodo por protekti dosierojn sur Linuksa servilo estas labori kun atributoj.
Atributoj faras sian laboron sendepende de la uzanto aliranta la dosieron.

Kiel ĉe ACL-oj, dosiero-atributoj eble bezonos inkluzivi la opcion monto.

Ĉi tio estas opcio uzanto_xattr. Se vi ricevas mesaĝon "operacio ne subtenata" kiam vi laboras kun plilongigitaj uzant-atributoj, nepre agordu la parametron monto en /etc/fstab.

Multaj atributoj estas dokumentitaj. Iuj atributoj estas disponeblaj sed ankoraŭ ne efektivigitaj. Ne uzu ilin; ili alportos nenion al vi.

Malsupre estas la plej utilaj atributoj, kiujn vi povas apliki:

A Ĉi tiu atributo certigas, ke la dosiera alirtempo de la dosiero ne ŝanĝiĝas.
Tipe, ĉiufoje kiam dosiero estas malfermita, la alirtempo de la dosiero devas esti registrita en la metadatenoj de la dosiero. Ĉi tio negative influas rendimenton; do por dosieroj, kiuj estas regule aliritaj, la atributo A povas esti uzata por malŝalti ĉi tiun funkcion.

a Ĉi tiu atributo permesas aldoni, sed ne forigi, dosieron.

c Se vi uzas dosiersistemon, kiu subtenas volumen-nivelan kunpremadon, ĉi tiu dosier-atributo certigas, ke la dosiero estas kunpremita la unuan fojon kiam la kunprema mekanismo estas ebligita.

D Ĉi tiu atributo certigas, ke ŝanĝoj al dosieroj estas tuj skribitaj al disko anstataŭ konservita unue. Ĉi tio estas utila atributo en gravaj datumbazaj dosieroj por certigi, ke ili ne perdiĝas inter la dosierkaŝmemoro kaj la malmola disko.

d Ĉi tiu atributo certigas, ke la dosiero ne estos konservita en sekurkopioj, kie la rubejo estas uzata.

I Ĉi tiu atributo ebligas indeksadon por la dosierujo en kiu ĝi estas ebligita. Ĉi tio disponigas pli rapidan dosieraliron por primitivaj dosiersistemoj kiel Ext3 kiuj ne uzas la B-arban datumbazon por rapida dosieraliro.

i Ĉi tiu atributo igas la dosieron neŝanĝebla. Tial, neniuj ŝanĝoj povas esti faritaj al la dosiero, kio estas utila por dosieroj kiuj bezonas kroman protekton.

j Ĉi tiu atributo certigas, ke en ext3-dosiersistemo, la dosiero unue estas skribita al la ĵurnalo kaj poste al datumblokoj sur la malmola disko.

s Anstataŭigu la blokojn en kiuj la dosiero estis konservita al 0s post forigo de la dosiero. Ĉi tio certigas, ke la dosiero ne povas esti restarigita post kiam ĝi estis forigita.

u Ĉi tiu atributo konservas informojn pri la forigo. Ĉi tio ebligas al vi evoluigi ilon, kiu funkcias kun ĉi tiuj informoj por savi forigitajn dosierojn.

Se vi volas apliki la atributojn, vi povas uzi la komandon babilado. Ekzemple, uzu chattr +s iu dosieroapliki atributojn al iu dosiero. Ĉu vi bezonas forigi atributon? Tiam uzu chattr -s iu dosierokaj ĝi estos forigita. Por ricevi superrigardon de ĉiuj atributoj kiuj estas nuntempe aplikataj, uzu la komandon lsattr.

Resumo

En ĉi tiu artikolo, vi lernis kiel labori kun permesoj. Vi legas pri la tri bazaj permesoj, altnivelaj permesoj kaj kiel apliki ACL-ojn en dosiersistemo. Vi ankaŭ lernis kiel uzi la umask-opcion por apliki defaŭltajn permesojn. Ĉe la fino de ĉi tiu artikolo, vi lernis kiel uzi uzantajn plilongigitajn atributojn por apliki plian tavolon de dosiersistema sekureco.

Se vi ŝatis ĉi tiun tradukon, bonvolu skribi pri ĝi en la komentoj. Estos pli da instigo fari utilajn tradukojn.

Korektis kelkajn tajperarojn kaj gramatikajn erarojn en la artikolo. Reduktis kelkajn volumenajn alineojn en pli malgrandajn por pli bona legebleco.

Anstataŭ "Nur iu kun administraj rajtoj al la dosierujo povas apliki ekzekutpermeson." fiksita al "Nur iu kun skribpermesoj sur la dosierujo povas apliki ekzekutpermeson.", kio estus pli ĝusta.

Dankon pro la komentoj berez.

Anstataŭita:
Se vi ne estas la posedanto de la uzanto, la ŝelo kontrolos ĉu vi estas membro de grupo, ankaŭ konata kiel la grupo de la dosiero.

Sur la:
Se vi ne estas la posedanto de la dosiero, la ŝelo kontrolos ĉu vi estas membro de grupo kiu havas permesojn pri la dosiero. Se vi estas membro de ĉi tiu grupo, vi aliros la dosieron kun la permesoj kiujn la grupo starigis, kaj la ŝelo ĉesos kontroli.

Dankon pro via komento CryptoPirate

fonto: www.habr.com

Aldoni komenton