Destûrên li Linux-ê (chown, chmod, SUID, GUID, bit, ACL, umask)

Silav hemû. Ev wergera gotarekê ye ji pirtûka RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 û EX300.

Lêqellibîn: Ez hêvî dikim ku gotar dê ne tenê ji bo destpêkan bikêr be, lê di heman demê de dê ji rêvebirên bi tecrube re jî bibe alîkar ku zanîna xwe xweş bikin.

De ka em herin.

Destûrên li Linux-ê (chown, chmod, SUID, GUID, bit, ACL, umask)

Ji bo gihîştina pelên li Linux-ê, destûr têne bikar anîn. Ev destûr ji sê tiştan re têne destnîşan kirin: xwediyê pelê, xwediyê komê, û tiştek din (ango, her kesê din). Di vê gotarê de, hûn ê fêr bibin ka meriv çawa destûran bicîh tîne.

Ev gotar bi nihêrînek li ser têgehên bingehîn dest pê dike, li dûv nîqaşek li ser Destûrên Taybet û Lîsteyên Kontrola Gihîştinê (ACL). Di dawiya vê gotarê de, em danîna destûrên xwerû bi navgîniya umask, û her weha rêvebirina taybetmendiyên bikarhêner ên dirêjkirî vedigirin.

Rêveberiya xwedîtiya pelê

Berî nîqaşkirina destûrên, divê hûn ji rola xwedan pel û pelrêça haydar bin. Xwedîtiya pel û peldankan ji bo mijûlbûna bi destûrên girîng e. Di vê beşê de, hûn ê pêşî fêr bibin ka hûn çawa dikarin xwedê bibînin. Dûv re hûn ê fêr bibin ka meriv çawa xwediyê komê û bikarhêner ji bo pel û peldankan biguhezîne.

Nîşandana xwediyê pel an pelrêçek

Di Linuxê de, her pel û her pelrêçek du xwedan hene: bikarhênerek û xwediyê komê.

Dema ku pel an peldankek çêdibe ev xwedan têne danîn. Bikarhênerê ku pelê çêdike dibe xwediyê wê pelê, û koma seretayî ya ku heman bikarhêner tê de ye jî dibe xwediyê wê pelê. Ji bo destnîşankirina ka we, wekî bikarhêner, destûr heye ku hûn bigihîjin pel an pelrêçek, şêl ji bo xwedaniyê kontrol dike.

Ev di rêza jêrîn de pêk tê:

  1. Shell kontrol dike ku bibîne ka hûn xwediyê pelê ne ku hûn dixwazin bigihîjin. Ger hûn xwedan in, hûn destûr digirin û şêl kontrolê rawestîne.
  2. Ger hûn ne xwediyê pelê bin, şêl dê kontrol bike ka hûn endamê komekê ne ku li ser pelê destûr hene. Heke hûn endamê vê komê bin, hûn ê bi destûrên ku komê destnîşan kirine bigihîjin pelê, û şêl dê kontrolê rawestîne.
  3. Heke hûn ne bikarhêner û ne jî xwediyê komekê bin, mafên bikarhênerên din (Yên din) têne dayîn.

Ji bo dîtina peywirên xwediyê heyî, hûn dikarin fermanê bikar bînin ls-l. Ev ferman bikarhêner û xwediyê komê nîşan dide. Li jêr hûn dikarin mîhengên xwedan pelrêçikên di pelrêça /home de bibînin.

[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

Bi fermanê ls hûn dikarin xwediyê pelan di pelrêça diyarkirî de nîşan bidin. Carinan meriv dikare bikêr be ku meriv navnîşek hemî pelên li ser pergalê ku xwedan bikarhênerek an grûpek diyarkirî ye bigire. Ji bo vê yekê hûn dikarin bikar bînin dîtin. Bersivk peyda-bikarhêner dikare ji bo vê armancê were bikar anîn. Mînakî, fermana jêrîn hemî pelên ku xwediyê bikarhêner linda ne navnîş dike:

find / -user linda

Her weha hûn dikarin bikar bînin dîtin ji bo lêgerîna pelên ku xwediyê komek diyarkirî ne.

Mînakî, fermana jêrîn li hemî pelên girêdayî komê digere users:

find / -group users

Guhertina Xwedî

Ji bo sepandina destûrên guncan, yekem tiştê ku meriv li ber çavan digire xwedîtî ye. Fermanek ji bo vê heye çenandin. Têgihîştina hevoksaziya vê fermanê hêsan e:

chown кто что

Mînakî, fermana jêrîn xwedan pelrêça /home/hesabê diguherîne linda bikarhêner:

chown linda /home/account

tîma çenandin gelek vebijark hene, yek ji wan bi taybetî bikêr e: -R. Hûn dikarin texmîn bikin ka ew çi dike ji ber ku ev vebijark ji bo gelek fermanên din jî heye. Ev destûrê dide te ku hûn bi paşverû xwedan saz bikin, ku dihêle hûn xwediyê pelrêça heyî û her tiştê jêrîn bicîh bikin. Fermana jêrîn xwediyê pelrêça /home û her tiştê li jêr ji bikarhênerê linda re diguhezîne:

Niha xwediyên vê yekê dibînin:

[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

Ka em bikin:

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

Naha bikarhêner lisa bûye xwediyê pelrêça hesabê:

[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

Xwediyê komekê biguherînin

Du rê hene ku meriv xwedaniya komekê biguhezîne. Hûn dikarin vê bikar bînin çenandin, lê fermanek taybetî bi navê heye chgrpku karî dike. Heke hûn dixwazin fermanê bikar bînin çenandin, bikar bînin . an : li ber navê komê.

Fermana jêrîn her xwediyê koma /home/hesabê diguhezîne koma hesabê:

chown .account /home/account

hûn dikarin bikar bînin çenandin ji bo guherandina xwediyê bikarhêner û/an komekê bi çend awayan. Li vir çend nimûne hene:

  • chown lisa myfile1 bikarhêner lisa wekî xwediyê myfile1 destnîşan dike.
  • chown lisa.firotina myfile bikarhêner lisa wekî xwediyê pelê myfile destnîşan dike, û koma firotanê jî wekî xwediyê heman pelê destnîşan dike.
  • chown lisa:firotina myfile eynî wek fermana berê.
  • chown .firotina myfile bêyî ku xwediyê bikarhênerê biguhezîne koma firotanê wekî xwediyê myfile destnîşan dike.
  • chown :firotina myfile eynî wek fermana berê.

Hûn dikarin fermanê bikar bînin chgrpku xwediyê komê biguhere. Mînaka jêrîn bifikirin, ku hûn dikarin bikar bînin chgrp xwediyê pelrêça hesabê koma firotanê bicîh bikin:

chgrp .sales /home/account

Wek bi çenandin, hûn dikarin vebijarkê bikar bînin -R с chgrp, û her weha bi vegerî xwediyê komê biguhezîne.

Fêmkirina Xwediyê Default

Dibe ku we ferq kiriye ku gava bikarhênerek pelek diafirîne, xwedaniya xwerû tê sepandin.
Bikarhênerê ku pelê çêdike bixweber dibe xwediyê wê pelê, û koma seretayî ya bikarhêner bixwe dibe xwediyê wê pelê. Ev bi gelemperî koma ku di pelê /etc/passwd de wekî koma bingehîn a bikarhêner tête navnîş kirin e. Lêbelê, heke bikarhêner endamek ji yek komê be, bikarhêner dikare koma bingehîn a bi bandor biguhezîne.

Ji bo ku koma bingehîn a bi bandor a heyî nîşan bide, bikarhêner dikare fermanê bikar bîne komên:

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

Ger bikarhênerê niha yê linda bixwaze koma bingehîn a bi bandor biguhezîne, ew ê fermanê bikar bîne newgrpli pey navê koma ku ew dixwaze wekî koma bingehîn a nû ya bi bandor destnîşan bike. Piştî bikaranîna fermanê newgrp koma bingehîn dê çalak be heya ku bikarhêner fermanek bikeve derî yan jî dernekevin.

Ya jêrîn destnîşan dike ka bikarhêner linda çawa vê fermanê bikar tîne, bi firotanê wekî koma bingehîn:

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

Piştî guherandina koma seretayî ya bi bandor, hemî pelên nû yên ku ji hêla bikarhêner ve hatine afirandin dê ew kom bibin xwediyê komê. derî.

Ji bo ku bikaribe fermanê bikar bîne newgrp, bikarhêner divê endamê koma ku ew dixwazin wekî koma bingehîn bikar bînin be. Wekî din, şîfreyek komê dikare ji bo komek ku fermanê bikar tîne were bikar anîn gpasswd. Ger bikarhêner fermanê bikar tîne newgrplê ne endamê koma mebestê ye, şêl şîfreya komê vedibêje. Piştî ku hûn şîfreya koma rast binivîsin, dê komek seretayî ya nû ya bi bandor were damezrandin.

Rêveberiya mafên bingehîn

Sîstema destûra Linux di sala 1970-an de hate îcad kirin. Ji ber ku di wan salan de hewcedariyên hesabkirinê sînordar bûn, pergala destûra bingehîn pir kêm bû. Ev pergala destûrê sê destûrên ku dikarin li pel û peldankan werin sepandin bikar tîne. Di vê beşê de, hûn ê fêr bibin ka meriv çawa van destûran bikar tîne û biguhezîne.

Fêmkirina Destûrên Xwendin, Nivîsandin û Bicihkirinê

Sê destûrên bingehîn dihêlin hûn pelan bixwînin, binivîsin û bicîh bikin. Dema ku li ser pelan an peldankan têne sepandin bandora van destûran cûda dibe. Ji bo pelek, destûra xwendinê mafê vekirina pelê ji bo xwendinê dide we. Ji ber vê yekê, hûn dikarin naveroka wê bixwînin, lê ev tê vê wateyê ku komputera we dikare pelê veke da ku bi wê re tiştek bike.

Ji bo nimûne, pelek bernameyek ku pêdivî bi gihîştina pirtûkxaneyek heye, pêdivî ye ku ji bo pirtûkxaneyê bixwîne. Ji ber vê yekê destûra xwendinê destûra herî bingehîn e ku hûn hewce ne ku hûn bi pelan re bixebitin.

Dema ku li pelrêçekê were sepandin, xwendin dihêle hûn naveroka wê pelrêçê nîşan bidin. Divê hûn zanibin ku ev destûr nahêle hûn pelên di pelrêçê de bixwînin. Pergala destûra Linuxê mîrasiyê nizane, û riya yekane ya xwendina pelê ew e ku meriv destûrên xwendinê li ser wê pelê bikar bîne.

Wekî ku hûn dikarin texmîn bikin, destûra nivîsandinê, heke li pelek were sepandin, destûrê dide nivîsandina pelê. Bi gotineke din, ew dihêle hûn naveroka pelên heyî biguhezînin. Lêbelê, ew nahêle ku hûn pelên nû biafirînin an jêbirin an destûrnameyên pelan biguhezînin. Ji bo vê yekê, hûn hewce ne ku destûra nivîsandinê bidin pelrêça ku hûn dixwazin pelê biafirînin. Di pelrêçan de, ev destûr di heman demê de destûrê dide te ku hûn binerdekrêkûkên nû biafirînin û jêbirin.

Destûra bicîhkirinê ya ku hûn hewce ne ku pelê bicîh bikin e. Ew ê çu carî ji hêla xwerû ve neyê saz kirin, ku Linux hema hema bi tevahî ji vîrusan bêpar dike. Tenê kesê ku li ser pelrêçê destûrnameyên nivîsandinê heye dikare destûra îcrayê bicîh bîne.

Ya jêrîn karanîna destûrên bingehîn kurt dike:

Destûrên li Linux-ê (chown, chmod, SUID, GUID, bit, ACL, umask)

Bikaranîna chmod

Ferman ji bo birêvebirina destûran tê bikar anîn. chmod. Bikaranîna chmod hûn dikarin ji bo bikarhêner (bikarhêner), kom (kom) û yên din (yên din) destûrê bidin. Hûn dikarin vê fermanê di du awayan de bikar bînin: moda têkildar û moda mutleq. Di moda bêkêmasî de, sê jimar têne bikar anîn da ku destûrên bingehîn saz bikin.

Destûrên li Linux-ê (chown, chmod, SUID, GUID, bit, ACL, umask)

Dema ku destûran saz bikin, nirxa ku hûn hewce ne hesab bikin. Heke hûn dixwazin ji bo bikarhêner bixwînin / binivîsin / darve bikin, ji bo komê bixwînin / bicîh bikin, û ji bo yên din di /somefile de bixwînin / bikin, wê hingê hûn fermana jêrîn bikar tînin. chmod:

chmod 755 /somefile

Dema ku hûn bikar bînin chmod bi vî rengî, hemî destûrên heyî bi destûrên ku we destnîşan kirine têne guheztin.

Heke hûn dixwazin destûrên li gorî destûrên heyî biguhezînin, hûn dikarin bikar bînin chmod di moda nisbî de. Bikaranîna chmod di moda têkildar de hûn bi sê nîşanan re dixebitin da ku destnîşan bikin ka hûn dixwazin çi bikin:

  1. Pêşî hûn diyar dikin ku hûn dixwazin ji bo kê destûr biguherînin. Ji bo vê yekê, hûn dikarin di navbera bikarhêner de hilbijêrin (u), kom (g) û yên din (o).
  2. Dûv re hûn daxuyaniyek bikar tînin da ku destûrên ji moda heyî zêde bikin an jêbirin, an jî wan bi tevahî saz bikin.
  3. Di dawiyê de hûn bikar tînin r, w и xji bo destnîşankirina kîjan destûrên ku hûn dixwazin saz bikin.

Dema ku destûrên di moda têkildar de diguhezînin, hûn dikarin beşa "to" derbas bikin da ku destûrê ji bo hemî tiştan zêde bikin an jê bikin. Mînakî, ev ferman ji bo hemî bikarhêneran destûra darvekirinê zêde dike:

chmod +x somefile

Dema ku di moda têkildar de dixebitin, hûn dikarin fermanên tevlihevtir jî bikar bînin. Mînakî, ev ferman destûra nivîsandinê li komekê zêde dike û destûra xwendinê ji bo yên din radike:

chmod g+w,o-r somefile

Dema ku bikar bînin chmod -R o+rx /dane we destûra bicihkirinê ji bo hemî pelrêçan û her weha pelên di pelrêça /data de destnîşan dike. Ji bo danîna destûra darvekirinê tenê ji bo pelrêçan û ne ji bo pelan, bikar bînin chmod -R o+ rX /dane.

X-ya mezin piştrast dike ku pel destûrnameya darvekirinê nagirin heya ku pelê berê ji bo hin tiştan destûrnameya darvekirinê destnîşan neke. Ev X rêgezek biaqiltir dike ku meriv bi destûrdanan re mijûl bibe; ev ê ji danîna vê destûrê li ser pelên ku ne hewce ye dûr bixe.

Mafên berfirehkirî

Ji bilî destûrên bingehîn ên ku hûn tenê li ser dixwînin, Linux di heman demê de komek destûrên pêşkeftî jî heye. Ev ne destûrên ku we ji hêla xwerû destnîşan kirine ne, lê carinan ew pêvekek kêrhatî peyda dikin. Di vê beşê de, hûn ê fêr bibin ka ew çi ne û meriv çawa wan saz dike.

Fêmkirina SUID, GUID, û Destûrên Berfirehkirî yên Bit Sticky

Sê destûrên pêşkeftî hene. Ya yekem ji van destûra danîna nasnameyek bikarhêner (SUID) ye. Di hin rewşên taybetî de, hûn dikarin vê destûrnameyê li pelên îcrakar bicîh bikin. Ji hêla xwerû, bikarhênerek ku darvekerek dimeşîne wê pelê bi destûrên xwe dimeşîne.

Ji bo bikarhênerên asayî, ev bi gelemperî tê vê wateyê ku karanîna bernameyê tixûbdar e. Lêbelê, di hin rewşan de, bikarhêner hewceyê destûrên taybetî ne, tenê ji bo pêkanîna karek taybetî.

Mînakî, rewşek ku bikarhênerek pêdivî ye ku şîfreya xwe biguhezîne, bifikirin. Ji bo vê yekê, bikarhêner divê şîfreya xwe ya nû li pelê /etc/shadow binivîse. Lêbelê, ev pel ji hêla bikarhênerên ne-root ve nayê nivîsandin:

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

Destûra SUID ji vê pirsgirêkê re çareseriyek pêşkêşî dike. Alîkariya /usr/bin/passwd vê destûrê bi xweber bikar tîne. Ev tê vê wateyê ku dema ku şîfreyê diguhezîne, bikarhêner bi demkî dibe root, ku destûrê dide wî ku li pelê /etc/shadow binivîse. Hûn dikarin bi destûra SUID-ê re bibînin ls-l çawa s di rewşek ku hûn bi gelemperî hêvî dikin ku bibînin x ji bo destûrên xwerû:

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

Dibe ku destûra SUID kêrhatî xuya bike (û di hin rewşan de ew e), lê di heman demê de ew potansiyel xeternak e. Ger rast neyê sepandin, hûn dikarin bi xeletî destûrên root bidin. Ji ber vê yekê, ez pêşniyar dikim ku wê tenê bi lênêrîna herî zêde bikar bînin.

Piraniya rêvebiran dê qet hewce nebe ku wê bikar bînin; hûn ê tenê wê di hin pelan de bibînin ku pergala xebitandinê divê wê ji hêla xwerû ve saz bike.

Destûra taybetî ya duyemîn nasnameya komê (SGID) ye. Ev destûr du bandorên xwe hene. Dema ku li ser pelek îcrakar tê sepandin, ew destûrên xwediyê koma pelê dide bikarhênerê ku pelê dimeşîne. Ji ber vê yekê SGID dikare kêm-zêde heman tiştê SUID bike. Lêbelê, SGID bi pratîkî ji bo vê armancê nayê bikar anîn.

Mîna destûra SUID, SGID li hin pelên pergalê wekî mîhengek xwerû tê sepandin.

Dema ku li pelrêçekê were sepandin, SGID dikare bikêr be ji ber ku hûn dikarin wê bikar bînin da ku xwedan koma xwerû ji bo pel û jêrderhênerên ku di wê pelrêçê de hatine afirandin destnîşan bikin. Ji hêla xwerû, dema ku bikarhênerek pelek diafirîne, koma wan a bingehîn a bi bandor wekî xwedan komê ji bo wê pelê tê destnîşan kirin.

Ev her gav ne pir bikêr e, nemaze ji ber ku bikarhênerên Red Hat / CentOS koma xweya bingehîn ji komeke bi heman navî ya bikarhêner re danîne, û ku bikarhêner tenê endamê wê ye. Bi vî rengî, bi xwerû, pelên ku bikarhêner diafirîne dê bi girseyî werin parve kirin.

Bifikirin rewşek ku bikarhêner linda û lori di hesabgiriyê de dixebitin û endamên komekê ne konto. Bi xwerû, ev bikarhêner endamên komek taybet in ku ew tenê endam in. Lêbelê, her du bikarhêner endamên koma hesabê ne, lê di heman demê de wekî pîvanek koma duyemîn jî ne.

Rewşa xwerû ev e ku gava yek ji van bikarhêneran pelek diafirîne, koma bingehîn dibe xwedan. Ji ber vê yekê, bi xwerû, linda nikare bigihîje pelên ku ji hêla lori ve hatine afirandin, û berevajî. Lêbelê, heke hûn pelrêça komê ya hevpar biafirînin (bibêjin / kom / hesab) û piştrast bikin ku destûra SGID li wê pelrêçayê tê sepandin û ku hesabê komê ji bo wê pelrêçê wekî xwediyê komê were danîn, hemî pelên ku di wê pelrêçayê de hatine afirandin û hemî ji jêrderhênerên wê, di heman demê de hesabê komê wekî xwedan komê ji hêla xwerû ve bistînin.

Ji ber vê yekê, destûra SGID destûrek pir bikêr e ku meriv li ser pelrêçikên koma giştî saz bike.

Destûra SGID di encam de tê xuyang kirin ls-l çawa s li cihê ku hûn bi gelemperî destûr ji bo pêkanîna komekê bibînin:

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

Ya sêyem ji destûrnameyên taybetî bitka asê ye. Ev destûr ji bo parastina pelan ji jêbirina bêserûber li hawîrdorek ku pir bikarhêner gihîştina heman pelrêça nivîsandinê heye bikêr e. Ger bitek asayî were bikar anîn, bikarhêner tenê dikare pelê jêbibe heke ew xwediyê pelê an pelrêça ku pel tê de ye be. Ji ber vê yekê, ew wekî destûra xwerû ya pelrêça /tmp tête bikar anîn û dikare ji bo pelrêçanên koma gelemperî jî bikêr be.

Bêyî bit-ê, ger bikarhêner bikaribe pelan di pelrêçekê de biafirîne, ew dikare pelan ji wê pelrêça jî jêbibe. Di hawîrdorek koma gelemperî de, ev dikare acizker be. Bikarhênerên linda û lori bifikirin, ku herdu jî xwediyê destûrnameyên nivîsandinê li pelrêça /data/hesabê ne û bi endambûna koma hesabê wan destûran digirin. Ji ber vê yekê, linda dikare pelên ku ji hêla lori ve hatî afirandin jêbirin û berevajî.

Dema ku hûn bit-a asê bicîh dikin, bikarhêner tenê dikare pelan jêbibe heke yek ji şertên jêrîn rast be:

  • Bikarhêner xwediyê pelê ye;
  • Bikarhêner xwediyê pelrêça ku pel lê ye ye.

Dema ku bikar bînin ls-l, hûn dikarin bit asê wek bibînin t di rewşa ku hûn bi gelemperî destûra darvekirinê ji bo yên din bibînin:

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

Serlêdana mafên dirêjkirî

Ji bo sepandina SUID, SGID û bit-a asê hûn jî dikarin bikar bînin chmod. SUID xwedan nirxa hejmarî 4, SGID nirxa hejmarî ya 2 ye, û bit asê xwedan nirxa hejmarî 1 ye.

Heke hûn dixwazin van destûran bicîh bînin, hûn hewce ne ku argumanek çar reqem lê zêde bikin chmod, ku reqema yekem ji destûrên taybetî re vedibêje. Mînakî, rêzika jêrîn dê destûra SGID li pelrêsê zêde bike û ji bo bikarhêner rwx û ji bo kom û yên din rx saz bike:

chmod 2755 /somedir

Heke hûn hewce ne ku hûn destûrên heyî yên ku berî ku hûn pê re bixebitin hatine danîn bibînin, ev pir nepraktîk e chmod di moda mutleq. (Heke hûn nexwazin hûn rîska nivîsandina destûran dikişînin.) Ji ber vê yekê ez pêşniyar dikim ku hûn di moda têkildar de bimeşînin heke hûn hewce ne ku yek ji destûrên taybetî bicîh bînin:

  1. Ji bo bikaranîna SUID chmod u+s.
  2. Ji bo bikaranîna SGID chmod g+s.
  3. Ji bo karanîna bitikên hişk chmod +t, li dûv navê pel an pelrêça ku hûn dixwazin destûran saz bikin.

Tablo her tiştê ku hûn hewce ne ku di derbarê rêvebirina destûrên taybetî de zanibin kurt dike.

Destûrên li Linux-ê (chown, chmod, SUID, GUID, bit, ACL, umask)

Mînaka xebata bi mafên taybet

Di vê nimûneyê de, hûn destûrên taybetî bikar tînin da ku ji endamên komê re hêsantir bikin ku pelan di pelrêça koma hevbeş de parve bikin. Hûn bit-a ID-ê ji nasnama koma sazkirî û hem jî bit-a asê re destnîşan dikin, û hûn dibînin ku gava ku ew hatine danîn, taybetmendî têne zêdekirin da ku ji endamên komê re hêsantir bixebitin ku bi hev re bixebitin.

  1. Termînalek ku hûn bikarhênerê linda ne vekin. Hûn dikarin bi fermanê bikarhênerek biafirînin bikarhêner lê zêde bike, şîfreyê lê zêde bike passwd Linda.
  2. Bi fermanê re pelrêça / data-yê di root de û binerxeya /data/firotanê biafirînin mkdir -p /dane/firotin. Temamkirin cd /dane/firotinku biçin pelrêça firotanê. Temamkirin linda1 bixin и linda2 bixinji bo afirandina du pelên vala yên xwediyê linda.
  3. Dardekirin su-lisa da ku bikarhênerê heyî biguhezîne bikarhêner lisa, ku ew jî endamê koma firotanê ye.
  4. Dardekirin cd /dane/firotin û ji wê pelrêça îdam bikin ls-l. Hûn ê du pelên ku ji hêla bikarhênerê linda ve hatine afirandin û di koma linda de ne bibînin. Temamkirin rm -f linda*. Ev ê her du pelan jê bibe.
  5. Dardekirin lisa1 bixin и lisa2 bixinji bo afirandina du pelên ku xwediyê bikarhêner lisa ne.
  6. Dardekirin su- da ku îmtiyazên xwe ji root re bilind bikin.
  7. Dardekirin chmod g+s,o+t /dane/firotinji bo danîna bit nasnama komê (GUID) û hem jî bitka asê di pelrêça komê ya hevpar de.
  8. Dardekirin su-linda. Paşê bikin linda3 bixin и linda4 bixin. Naha divê hûn bibînin ku du pelên ku we afirandine xwediyê koma firotanê ne, ku xwediyê komê pelrêça /dane/firotanê ye.
  9. Dardekirin rm -rf lisa*. Bitka asê nahêle ku ev pel li ser navê bikarhênerê linda werin jêbirin, ji ber ku hûn ne xwediyê van pelan in. Bala xwe bidinê ku ger bikarhênerê linda xwediyê pelrêça /data/sales be, ew dikare van pelan bi her awayî jêbibe!

Rêveberiya ACL (setfacl, getfacl) di Linux de

Her çend destûrên dirêjkirî yên ku li jor hatine nîqaş kirin fonksiyonek bikêr bi awayê ku Linux destûran digire jî zêde dike, ew nahêle ku hûn di heman pelê de destûrê bidin zêdetirî bikarhênerek an komê.

Lîsteyên kontrola gihîştinê vê taybetmendiyê pêşkêş dikin. Wekî din, ew rê didin rêvebiran ku destûrnameyên xwerû bi rengek tevlihev bicîh bikin, ku destûrên set dibe ku ji pelrêçek heya pelrêçek cûda bibin.

Fêmkirina ACLs

Her çend binepergala ACL fonksiyonek mezin li servera we zêde dike, ew yek kêmasiyek heye: ne hemî karûbar wê piştgirî dikin. Ji ber vê yekê, dibe ku hûn mîhengên ACL-ya xwe winda bikin dema ku hûn pelan kopî bikin an bar bikin, û dibe ku nermalava weya hilanînê nekare mîhengên ACL-ya xwe paşve vegerîne.

Karsaziya tar piştgirî nade ACL. Ji bo ku hûn pê ewle bibin ku mîhengên ACL winda nebin dema ku hûn hilanînê diafirînin, bikar bînin stêrk şûna tar. stêrk bi vebijarkên heman tar re dixebite; ew tenê ji bo mîhengên ACL piştgirî zêde dike.

Di heman demê de hûn dikarin bi ACL-yên paşve bikin getfacl, ku dikare bi karanîna fermana setfacl were sererast kirin. Ji bo afirandina hilanînê, bikar bînin getfacl -R /directory > file.acls. Ji bo vegerandina mîhengan ji pelek hilanînê, bikar bînin setfacl --restore=file.acl.

Nebûna piştgirî ji hêla hin amûran ve divê ne pirsgirêk be. ACL bi gelemperî ji pelên kesane re wekî pîvanek avahîsaziyê li pelrêçan têne sepandin.
Ji ber vê yekê, dê ne pir ji wan hebin, lê tenê çend hebin, ku li cîhên jîr ên di pergala pelan de têne sepandin. Ji ber vê yekê, vejandina ACL-yên orîjînal ên ku we pê re xebitî bi rengek hêsan hêsan e, hetta nermalava weya paşvekêşanê wan piştgirî nake.

Amadekirina pergala pelê ji bo ACLs

Berî ku hûn bi ACL-an re dest bi xebatê bikin, dibe ku hûn hewce ne ku pergala pelê xwe amade bikin da ku ACL piştgirî bikin. Ji ber ku pêdivî ye ku metadata pergala pelan were dirêj kirin, di pergala pelê de her gav ji bo ACL-yan piştgirîya xwerû tune. Ger dema ku hûn ACL-yên ji bo pergalek pelan saz dikin peyamek "operasyon nayê piştgirî kirin" bistînin, dibe ku pergala weya pelê ACL-yan piştgirî neke.

Ji bo rastkirina vê yekê hûn hewce ne ku vebijarkê lê zêde bikin acl mount di /etc/fstab de da ku pergala pelan ji hêla xwerû ve bi piştgiriya ACL-ê ve were saz kirin.

Guhertin û dîtina mîhengên ACL bi setfacl û getfacl

Ji bo sazkirina ACL-ê hûn hewceyê fermanê ne setfacl. Ji bo ku hûn mîhengên ACL yên heyî bibînin, hûn hewce ne getfacl. Kom ls-l tu ACL-yên heyî nîşan nade; ew tenê piştî navnîşa destûr + + nîşan dide, ku destnîşan dike ku ACL li ser pelê jî derbas dibe.

Berî sazkirina ACL-an, her gav ramanek baş e ku meriv mîhengên ACL-ya heyî bi wan re nîşan bide getfacl. Di mînaka jêrîn de, hûn dikarin destûrên heyî bibînin, wekî ku bi wan tê xuyang kirin ls-l, û her weha wekî ku bi nîşan dide getfacl. Ger hûn têra xwe ji nêz ve lê mêze bikin, hûn ê bibînin ku agahdariya hatî destnîşan kirin tam heman e.

[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

Di encama pêkanîna fermanê de getfacl li jêr hûn dikarin bibînin ku destûr ji bo sê tiştên cûda têne destnîşan kirin: bikarhêner, kom û yên din. Naha em ACL lê zêde bikin da ku destûrên xwendin û bicîhkirinê jî bidin koma firotanê. ferman ji bo vê setfacl -mg: sales:rx /dir. Di vê tîmê de -m destnîşan dike ku pêdivî ye ku mîhengên ACL yên heyî bêne guheztin. Paş vê g:firotin:rx fermanê dide ku ACL-ya xwendin-xebatê saz bike (rx) ji bo komê (g) firotin. Li jêr hûn dikarin bibînin ka ferman çawa xuya dike, û hem jî derketina fermana getfacl piştî guheztina mîhengên heyî yên ACL-ê.

[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

Naha ku hûn fêm dikin ka meriv çawa komek ACL saz dike, hêsan e ku meriv ACL-yên ji bo bikarhêner û bikarhênerên din fam bike. Ji bo nimûne, ferman setfacl -mu:linda:rwx /data destûrê dide bikarhênerê linda di pelrêça /data de bêyî ku wê bike xwedan an guheztina peywira xwediyê heyî.

tîma setfacl gelek taybetmendî û vebijarkên xwe hene. Vebijêrkek bi taybetî girîng e, parametre -R. Heke were bikar anîn, vebijark ji bo hemî pel û jêrderhênerên ku niha di pelrêça ku hûn ACL lê saz dikin de hene ACL saz dike. Tête pêşniyar kirin ku hûn her gav vê vebijarkê bikar bînin dema ku ACL-yên ji bo pelrêçanên heyî biguhezînin.

Bi ACL-yên Default re dixebitin

Yek ji feydeyên karanîna ACL-an ev e ku hûn dikarin destûrê bidin gelek bikarhêner an komên di pelrêçek de. Feydeyek din ev e ku hûn dikarin bi xebata bi ACL-yên xwerû re mîrasiyê çalak bikin.

Bi danîna ACL-ya xwerû, hûn destûrên ku dê ji bo hemî tiştên nû yên ku di pelrêçê de hatine çêkirin de bêne danîn destnîşan dikin. Hay ji xwe hebin ku ACL-ya xwerû destûrên li ser pel û jêrderhênerên heyî naguhezîne. Ji bo guhertina wan, hûn hewce ne ku ACL-ya normal jî lê zêde bikin!

Ev girîng e ku bizanibin. Heke hûn dixwazin ACL bikar bînin da ku pir bikarhêner an koman mîheng bikin da ku bigihîjin heman pelrêça, divê hûn ACL du caran saz bikin. Yekem bikar bînin setfacl -R -mji bo pelên heyî ACL biguherînin. Piştre bikar bînin setfacl-md:lênêrîna hemî hêmanên nû yên ku dê jî bêne afirandin.

Ji bo danîna ACL-ya xwerû hûn tenê hewce ne ku vebijarkê lê zêde bikin d piştî vebijêrkê -m (ferman girîng e!). Ji ber vê yekê bikar bînin setfacl -md:g:firotin:rx /daneheke hûn dixwazin ku firotana komê her tiştê ku di pelrêça / daneyê de hatî afirandin bixwînin û bicîh bînin.

Dema ku ACL-yên xwerû bikar tînin, dibe ku ji bo kesên din ACL-an saz bikin jî kêrhatî be. Ev bi gelemperî pir wate nake ji ber ku hûn dikarin destûrên ji bo kesên din jî bikar bînin biguhezînin chmod. Lêbelê, tiştê ku hûn nekarin pê bikin chmod, ew e ku mafên ku divê ji bo her pelê nû yê ku heya niha hatî afirandin ji bikarhênerên din re bêne dayîn. Heke hûn dixwazin rê li ber kesên din bigirin ku li ser her tiştê ku di /daneyê de hatî afirandin destûr negirin, mînakî bikar bînin setfacl -md:o::- /dane.

ACL û destûrên normal her gav baş ne yekgirtî ne. Pirsgirêk dikarin derkevin holê heke hûn ACL-ya xwerû li pelrêçekê bicîh bikin, wê hingê tişt li wê pelrêçê têne zêdekirin, û dûv re hewl bidin ku destûrên normal biguhezînin. Guhertinên ku li ser destûrên normal derbas dibin dê di pêşandana ACL de baş neyên xuyang kirin. Ji bo ku ji pirsgirêkan dûr nekevin, pêşî destûrên normal saz bikin, dûv re ACL-yên xwerû destnîşan bikin (û hewl bidin ku piştî wê dîsa wan neguhezînin).

Mînaka Rêvebiriya Mafên Bilind Bi Bikaranîna ACL

Di vê nimûneyê de, hûn ê bi pelrêktorên /data/hesab û /data/firotanê yên ku we berê afirandine bidomînin. Di mînakên berê de, we piştrast kir ku koma firotanê li ser /data/firotanê destûr heye û koma hesabê li ser /data/hesabê destûr heye.

Pêşîn, pê ewle bine ku koma hesabê li ser pelrêça /data/firotanê destûrên xwendinê digire û koma firotanê li pelrêça /data/hesabê destûrên xwendinê digire.

Dûv re hûn ACL-yên xwerû destnîşan dikin da ku pê ewle bibin ku hemî pelên nû ji bo hemî tiştên nû destûrnameyên rast hatine destnîşan kirin.

  1. Termînalek vekin.
  2. Dardekirin setfacl -mg:account:rx /dane/firotin и setfacl -mg: sales:rx /dane/hesab.
  3. Dardekirin getfaclda ku bicîh bikin ku destûr bi awayê ku hûn dixwazin hatine danîn.
  4. Dardekirin setfacl -md:g:account:rwx,g:sales:rx /data/firotji bo pelrêça firotanê ACL-ya xwerû destnîşan bikin.
  5. Ji bo pelrêça /data/hesabê bi kar tînin ACL-ya xwerû lê zêde bikin setfacl -md:g:firotin:rwx,g:account:rx /data/hesab.
  6. Bi lê zêdekirina pelek nû li /data/firotanê verast bikin ku mîhengên ACL di meriyetê de ne. Temamkirin bi /dane/firotin/newpelê bixin û îdam bikin getfacl / dane / firotin / pelê nû ji bo kontrolkirina destûrên heyî.

Sazkirina destûrên xwerû bi umask

Li jor, we fêr bû ku meriv çawa bi ACL-yên xwerû re bixebite. Ger hûn ACL bikar neynin, vebijarkek şêlê heye ku destûrên xwerû yên ku hûn ê bistînin destnîşan dike: umask (maskeya berevajî). Di vê beşê de, hûn ê fêr bibin ka meriv çawa destûrên xwerû biguhezîne umask.

Dibe ku we ferq kiriye ku gava hûn pelek nû diafirînin, hin destûrên xwerû têne danîn. Ev destûr ji hêla mîhengê ve têne destnîşankirin umask. Ev mîhenga şêlê ji bo hemî bikarhênerên di têketinê de derbas dibe. Di parametreyê de umask nirxek hejmarî tê bikar anîn, ku ji destûrnameyên herî zêde yên ku dikarin bixweber ji bo pelê bêne danîn têne derxistin; mîhenga herî zêde ji bo pelan 666 û ji bo pelrêçan 777 e.

Lêbelê, hin îstîsna ji bo vê qaîdeyê derbas dibin. Hûn dikarin nihêrînek bêkêmasî ya mîhengan bibînin umask di tabloya jêrîn de.

Ji hejmarên ku di umask, wekî di doza argumanên hejmarî yên ji bo fermanê de chmod, jimareya yekem destûrên bikarhêner vedibêje, reqema duyemîn destûrên komê vedibêje, û ya paşîn jî destûrên xwerû yên ku ji bo yên din hatine danîn vedibêje. Mane umask xwerû 022 ji bo hemî pelên nû 644 û ji bo hemî pelrêçên nû yên ku li ser servera we hatine afirandin 755 dide.

Nêrînek bêkêmasî ya hemî nirxên hejmarî umask û encamên wan di tabloya jêrîn de.

Destûrên li Linux-ê (chown, chmod, SUID, GUID, bit, ACL, umask)

Rêbazek hêsan ku hûn bibînin ka mîhenga umask çawa dixebite wiha ye: bi destûrnameyên xwerû yên pelê ku 666 hatine danîn dest pê bikin û umask jê bikin da ku destûrên bi bandor bistînin. Heman tişt ji bo pelrêça û destûrên wê yên xwerû yên 777 bikin.

Du awayên guhartina mîhengê umask hene: ji bo hemî bikarhêneran û ji bo bikarhênerên kesane. Heke hûn dixwazin umask ji bo hemî bikarhêneran saz bikin, divê hûn pê ewle bin ku dema destpêkirina pelên hawîrdora şêlê, wekî ku di /etc/profilê de hatî destnîşan kirin, mîhenga umask li ber çavan tê girtin. Nêzîkatiya rast ev e ku hûn di pelrêça /etc/profile.d de skrîptek şêlê bi navê umask.sh biafirînin û umask-a ku hûn dixwazin di wê skrîpta şêlê de bikar bînin diyar bikin. Ger umask di vê pelê de were guheztin, piştî têketina serverê li hemî bikarhêneran tê sepandin.

Alternatîfek ji danîna umask-ê bi rêya /etc/profilê û pelên pê ve, ku ew ji bo hemî bikarhênerên ku têketinê re derbas dibe, ev e ku meriv mîhengên umask-ê di pelek bi navê .profile de ku di pelrêça malê ya her bikarhêner de hatî çêkirin de biguhezîne.

Mîhengên ku di vê pelê de têne sepandin tenê ji bo bikarhênerek kesane derbas dibin; ji ber vê yekê ev rêbazek baş e heke hûn hewceyê bêtir hûrgulî hewce ne. Ez bixwe ji vê taybetmendiyê hez dikim ku dema ku bikarhênerên normal bi umask-a xwerû ya 027-ê dimeşînin, umask-a xwerû ya bikarhênerê root biguhezîne 022.

Bi taybetmendiyên bikarhêner ên dirêjkirî re dixebitin

Ev beşa paşîn a li ser destûrên Linux-ê ye.

Dema ku bi destûran re dixebitin, her gav têkiliyek di navbera bikarhênerek an grûpek û destûrên ku tiştên bikarhêner an komê li ser pelek an pelrêçek hene de heye. Rêbazek alternatîf ji bo parastina pelan li ser serverek Linux ev e ku meriv bi taybetmendiyan bixebite.
Taybetmendî bêyî ku bikarhêner bigihîje pelê karê xwe dikin.

Mîna ACL-an, dibe ku taybetmendiyên pelan hewce bike ku vebijarkê bihewîne çiyayê.

Ev vebijarkek e user_xattr. Ger dema ku hûn bi taybetmendiyên bikarhêner ên dirêjkirî re dixebitin peyamek "operasyon nayê piştgirî kirin" werdigirin, pê ewle bin ku pîvanê saz bikin. çiyayê li /etc/fstab.

Gelek taybetmendî têne belge kirin. Hin taybetmendî hene lê hêj nehatine pêkanîn. Wan bikar neynin; ew ê ji we re tiştek ne bînin.

Li jêr taybetmendiyên herî bikêr ên ku hûn dikarin bicîh bikin hene:

A Ev taybetmendî piştrast dike ku dema gihîştina pelê ya pelê nayê guhertin.
Bi gelemperî, her gava ku pelek tê vekirin, dema gihîştina pelê divê di metadata pelê de were tomar kirin. Ev bandorek neyînî li performansê dike; ji ber vê yekê ji bo pelên ku bi rêkûpêk têne gihîştin, taybetmendî A dikare ji bo neçalakkirina vê taybetmendiyê were bikar anîn.

a Ev taybetmendî dihêle hûn pelek lê zêde bikin lê jê dernekevin.

c Heke hûn pergalek pelê bikar tînin ku destekkirina berhevkirina asta voltajê piştgirî dike, ev taybetmendiya pelê piştrast dike ku gava yekem mekanîzmaya berhevkirinê tê çalak kirin pel tê kom kirin.

D Ev taybetmendî piştrast dike ku guheztinên pelan tavilê li ser dîskê têne nivîsandin ne ku pêşî li cache-ê têne girtin. Ev taybetmendiyek bikêr e li ser pelên databasê yên girîng da ku pê ewle bibin ku ew di navbera cache pelê û ajokera hişk de winda nebin.

d Vê taybetmendiyê piştrast dike ku pel dê di paşvekêşan de neyê tomarkirin ku li cîhê ku amûra avêtinê tê bikar anîn.

I Ev taybetmendî îndekskirina pelrêça ku tê de çalak e dike. Ev ji bo pergalên pelan ên seretayî yên mîna Ext3 ku databasa B-darê ji bo gihîştina pelê bilez bikar naynin, gihîştina pelê zûtir peyda dike.

i Ev taybetmendî pelê neguhêrbar dike. Ji ber vê yekê, tu guhertin di pelê de nayê çêkirin, ku ji bo pelên ku hewceyê parastina zêde hewce ne.

j Vê taybetmendiyê piştrast dike ku, li ser pergalek pelê ext3, pel pêşî li kovarê û dûv re jî blokên daneyê yên li ser dîska hişk tê nivîsandin.

s Piştî jêbirina pelê blokên ku pel tê de hatine tomarkirin li ser 0-an binivîsin. Ev piştrast dike ku pel piştî ku hatî jêbirin nikare were vegerandin.

u Ev taybetmendî agahdariya li ser jêbirinê hilîne. Ev dihêle hûn amûrek ku bi vê agahiyê re dixebite pêşve bibin da ku pelên jêbirin rizgar bikin.

Heke hûn dixwazin taybetmendiyan bicîh bikin, hûn dikarin fermanê bikar bînin sohbet. Ji bo nimûne, bikar bînin chattr +s somefilesepandina taybetmendiyan li hin pelan. Pêdivî ye ku taybetmendiyek jêbirin? Piştre bikar bînin chattr -s somefileû wê bê rakirin. Ji bo ku hûn nihêrînek li ser hemî taybetmendiyên ku niha têne sepandin bistînin, fermanê bikar bînin lsattr.

Nîqaş

Di vê gotarê de, hûn fêr bûn ka meriv çawa bi destûran re dixebite. Hûn li ser sê destûrên bingehîn, destûrên pêşkeftî, û meriv çawa ACL-ê li ser pergalek pelê bicîh tîne dixwîne. Her weha hûn fêr bûn ka meriv çawa vebijarka umask bikar tîne da ku destûrên xwerû bicîh bike. Di dawiya vê gotarê de, hûn fêr bûn ka meriv çawa taybetmendiyên dirêjkirî yên bikarhêner bikar tîne da ku pêvek pêvek ewlehiya pergala pelê bicîh bike.

Ger we ji vê werger hez kir, wê hingê ji kerema xwe di şîroveyan de li ser wê binivîsin. Ji bo çêkirina wergerên bikêrhatî dê zêdetir motîvasyon hebe.

Di gotarê de hin xeletiyên tîp û rêzimanê rast kirin. Ji bo xwendina çêtir hin paragrafên mezin li yên piçûk kêm kirin.

Li şûna "Tenê kesê ku mafên îdarî yên pelrêçayê heye dikare destûrnameya darvekirinê bicîh bîne." li ser "Tenê kesê ku li ser pelrêçê destûrên nivîsandinê heye dikare destûrnameya darvekirinê bicîh bîne.", ku dê rasttir be.

Spas ji bo şîroveyan berez.

Veguherandin:
Ger hûn ne xwediyê bikarhêner bin, şêl dê kontrol bike ka hûn endamê komekê ne, ku wekî koma pelê jî tê zanîn.

Li ser:
Ger hûn ne xwediyê pelê bin, şêl dê kontrol bike ka hûn endamê komekê ne ku li ser pelê destûr hene. Heke hûn endamê vê komê bin, hûn ê bi destûrên ku komê destnîşan kirine bigihîjin pelê, û şêl dê kontrolê rawestîne.

Spas ji bo şîroveya we CryptoPirate

Source: www.habr.com

Add a comment