Թույլտվություններ Linux-ում (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Բարեւ բոլորին. Սա RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 և EX300 գրքի հոդվածի թարգմանությունն է:

Հրել: Հուսով եմ, որ հոդվածը օգտակար կլինի ոչ միայն սկսնակների համար, այլ նաև կօգնի ավելի փորձառու ադմինիստրատորներին կազմակերպել իրենց գիտելիքները:

Այսպիսով, եկեք գնանք:

Թույլտվություններ Linux-ում (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Linux-ում ֆայլեր մուտք գործելու համար օգտագործվում են թույլտվությունները: Այս թույլտվությունները վերագրվում են երեք օբյեկտների՝ ֆայլի սեփականատիրոջը, խմբի սեփականատիրոջը և մեկ այլ օբյեկտի (այսինքն՝ բոլորին)։ Այս հոդվածը կսովորեցնի ձեզ, թե ինչպես կիրառել թույլտվությունները:

Հոդվածը սկսվում է հիմնական հասկացությունների ակնարկով, այնուհետև քննարկվում է Հատուկ թույլտվությունները և մուտքի վերահսկման ցուցակները (ACL): Այս հոդվածի վերջը վերաբերում է umask-ի միջոցով լռելյայն թույլտվությունների սահմանմանը, ինչպես նաև օգտվողի ընդլայնված հատկանիշների կառավարմանը:

Ֆայլերի սեփականության կառավարում

Նախքան թույլտվությունները քննարկելը, դուք պետք է տեղյակ լինեք ֆայլի և գրացուցակի սեփականատիրոջ դերին: Ֆայլերի և գրացուցակների սեփականությունը կենսական նշանակություն ունի թույլտվությունների հետ աշխատելու համար: Այս բաժնում դուք նախ կսովորեք, թե ինչպես կարող եք տեսնել սեփականատիրոջը: Այնուհետև դուք կսովորեք, թե ինչպես փոխել խմբի սեփականատիրոջը և օգտագործողին ֆայլերի և գրացուցակների համար:

Ֆայլի կամ գրացուցակի սեփականատիրոջ ցուցադրում

Linux-ում յուրաքանչյուր ֆայլ և գրացուցակ ունի երկու սեփականատեր՝ օգտվող և խմբի սեփականատեր:

Այս սեփականատերերը սահմանվում են, երբ ստեղծվում է ֆայլը կամ գրացուցակը: Ֆայլը ստեղծող օգտատերը դառնում է այս ֆայլի սեփականատերը, իսկ հիմնական խումբը, որին պատկանում է նույն օգտվողը, նույնպես դառնում է այս ֆայլի սեփականատերը: Որոշելու համար, թե դուք՝ որպես օգտվող, ունե՞ք մուտքի իրավունքներ դեպի ֆայլ կամ գրացուցակ, կեղևը ստուգում է սեփականության իրավունքը:

Դա տեղի է ունենում հետևյալ հաջորդականությամբ.

  1. Շելլը ստուգում է, թե արդյոք դուք այն ֆայլի սեփականատերն եք, որին ցանկանում եք մուտք գործել: Եթե ​​դուք այդ սեփականատերն եք, ձեզ թույլտվություններ են տրվում, և կեղևը դադարում է ստուգել:
  2. Եթե ​​դուք չեք ֆայլի սեփականատերը, ապա shell-ը կստուգի, թե արդյոք դուք խմբի անդամ եք, որն ունի ֆայլի թույլտվություններ: Եթե ​​դուք այս խմբի անդամ եք, դուք մուտք կունենաք ֆայլ խմբի համար սահմանված թույլտվություններով, և կեղևը կդադարեցնի ստուգումը:
  3. Եթե ​​դուք ոչ օգտատեր եք, ոչ խմբի սեփականատեր, դուք ստանում եք այլ օգտվողի իրավունքներ:

Ընթացիկ սեփականատիրոջ հանձնարարությունները տեսնելու համար կարող եք օգտագործել հրամանը ls -l. Այս հրամանը ցույց է տալիս խմբի օգտագործողին և սեփականատիրոջը: Ստորև կարող եք տեսնել /home գրացուցակի տակ գտնվող դիրեկտորիաների սեփականատիրոջ կարգավորումները:

[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

Հրամանով ls դուք կարող եք ցուցադրել ֆայլերի սեփականատիրոջը տվյալ գրացուցակում: Երբեմն կարող է օգտակար լինել ստանալ համակարգի բոլոր ֆայլերի ցանկը, որոնք ունեն տվյալ օգտվող կամ խումբ որպես սեփականատեր: Դրա համար կարող եք օգտագործել գտնել. Փաստարկ find -user կարող է օգտագործվել այդ նպատակով: Օրինակ, հետևյալ հրամանը ցույց է տալիս բոլոր ֆայլերը, որոնք ունեն linda որպես սեփականատեր.

find / -user linda

Կարող եք նաև օգտագործել գտնել որոնել ֆայլեր, որոնք ունեն որոշակի խումբ որպես իրենց սեփականատեր:

Օրինակ, հետևյալ հրամանը որոնում է խմբին պատկանող բոլոր ֆայլերը օգտվողները:

find / -group users

Սեփականատիրոջ փոփոխություն

Համապատասխան թույլտվությունները կիրառելու համար առաջինը պետք է հաշվի առնել սեփականության իրավունքը: Դրա համար կա հրաման երգչախումբը. Այս հրամանի շարահյուսությունը հեշտ է հասկանալ.

chown кто что

Օրինակ, հետևյալ հրամանը փոխում է /home/account գրացուցակի սեփականատիրոջը օգտվողի linda.

chown linda /home/account

Թիմ երգչախումբը ունի մի քանի տարբերակ, որոնցից մեկը հատկապես օգտակար է. -R. Դուք կարող եք կռահել, թե ինչ է դա անում, քանի որ այս տարբերակը հասանելի է նաև շատ այլ հրամանների համար: Սա թույլ է տալիս սահմանել սեփականատիրոջը ռեկուրսիվորեն, ինչը թույլ է տալիս սահմանել ընթացիկ գրացուցակի սեփականատիրոջը և դրա տակ գտնվող ամեն ինչ: Հետևյալ հրամանը փոխում է /home գրացուցակի սեփականատիրոջը և դրա տակ գտնվող ամեն ինչ օգտագործողի linda-ի:

Այժմ սեփականատերերը այսպիսի տեսք ունեն.

[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

Եկեք անենք.

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

Այժմ օգտվողի լիզան հանդիսանում է հաշվի գրացուցակի սեփականատերը.

[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

Փոխել խմբի սեփականատիրոջը

Խմբի սեփականության իրավունքը փոխելու երկու եղանակ կա. Դուք կարող եք դա անել՝ օգտագործելով երգչախումբը, բայց կա հատուկ հրաման, որը կոչվում է chgrp, որն անում է այս աշխատանքը: Եթե ​​ցանկանում եք օգտագործել հրամանը երգչախումբը, օգտագործել . կամ : խմբի անվանումից առաջ։

Հետևյալ հրամանը փոխում է /home/account խմբի ցանկացած սեփականատիրոջ հաշիվների խումբ.

chown .account /home/account

Դուք կարող եք օգտագործել երգչախումբը օգտատիրոջ և/կամ խմբի սեփականատիրոջը մի քանի ձևով փոխելու համար: Ահա մի քանի օրինակներ.

  • chown lisa myfile1 սահմանում է օգտվողի lisa-ն որպես myfile1 ֆայլի սեփականատեր:
  • chown lisa.sales myfile սահմանում է օգտվողի lisa-ն որպես myfile ֆայլի սեփականատեր, ինչպես նաև սահմանում է վաճառքի խումբը որպես նույն ֆայլի սեփականատեր:
  • chown lisa:sales myfile նույնը, ինչ նախորդ թիմը:
  • chown .sales myfile Սահմանում է վաճառքի խումբը որպես myfile-ի սեփականատեր՝ առանց օգտվողի սեփականատիրոջը փոխելու:
  • chown :sales myfile նույնը, ինչ նախորդ թիմը:

Դուք կարող եք օգտագործել հրամանը chgrpխմբի սեփականատիրոջը փոխելու համար։ Դիտարկենք հետևյալ օրինակը, որտեղ կարող եք օգտագործել chgrp Հաշվի գրացուցակի սեփականատիրոջը սահմանեք վաճառքի խումբ.

chgrp .sales /home/account

Ինչպես եւ նման դեպքերում երգչախումբը, կարող եք օգտագործել տարբերակը -R с chgrp, ինչպես նաև ռեկուրսիվ կերպով փոխել խմբի սեփականատիրոջը:

Լռելյայն սեփականատիրոջ ըմբռնում

Դուք կարող եք նկատել, որ երբ օգտվողը ստեղծում է ֆայլ, կիրառվում է լռելյայն սեփականության իրավունքը:
Այն օգտվողը, ով ստեղծում է ֆայլ, ավտոմատ կերպով դառնում է այդ ֆայլի սեփականատերը, և այդ օգտվողի հիմնական խումբը ավտոմատ կերպով դառնում է այդ ֆայլի սեփականատերը: Սովորաբար սա այն խումբն է, որը նշված է /etc/passwd ֆայլում՝ որպես օգտագործողի հիմնական խումբ: Այնուամենայնիվ, եթե օգտվողը մի քանի խմբերի անդամ է, նա կարող է փոխել արդյունավետ առաջնային խումբը:

Ընթացիկ արդյունավետ առաջնային խումբը ցուցադրելու համար օգտագործողը կարող է օգտագործել հրամանը խմբերը:

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

Եթե ​​ներկայիս օգտվողը linda-ն ցանկանում է փոխել արդյունավետ առաջնային խումբը, նա կօգտագործի հրամանը newgrpորին հաջորդում է խմբի անվանումը, որը նա ցանկանում է սահմանել որպես նոր արդյունավետ առաջնային խումբ: Հրամանն օգտագործելուց հետո newgrp առաջնային խումբը ակտիվ կլինի այնքան ժամանակ, քանի դեռ օգտվողը չի մուտքագրել հրամանը Ելք կամ դուրս չի գա համակարգից:

Ահա, թե ինչպես է օգտվողը Linda-ն օգտագործում այս հրամանը, որի հիմնական խումբը վաճառքն է.

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

Ընթացիկ առաջնային խումբը փոխելուց հետո օգտագործողի կողմից ստեղծված բոլոր նոր ֆայլերը կունենան այդ խումբը որպես խմբի սեփականատեր: Հիմնական խմբի սկզբնական կարգավորումը վերադառնալու համար օգտագործեք Ելք.

Որպեսզի կարողանանք օգտագործել հրամանը newgrp, օգտվողը պետք է լինի խմբի անդամ, որը ցանկանում է օգտագործել որպես հիմնական: Բացի այդ, խմբային գաղտնաբառը կարող է օգտագործվել խմբի համար, օգտագործելով հրամանը գասպվդ. Եթե ​​օգտագործողը օգտագործում է հրամանը newgrpբայց թիրախային խմբի անդամ չէ, կեղևը հուշում է խմբի գաղտնաբառը: Խմբի ճիշտ գաղտնաբառը մուտքագրելուց հետո կստեղծվի նոր արդյունավետ առաջնային խումբ:

Հիմնարար իրավունքների կառավարում

Linux-ի թույլտվության համակարգը հայտնագործվել է 1970-ականներին։ Քանի որ այդ տարիներին հաշվողական կարիքները սահմանափակ էին, թույլտվությունների հիմնական համակարգը բավականին սահմանափակ էր: Այս թույլտվության համակարգը օգտագործում է երեք թույլտվություն, որոնք կարող են կիրառվել ֆայլերի և գրացուցակների վրա: Այս բաժնում դուք կսովորեք, թե ինչպես օգտագործել և փոխել այս թույլտվությունները:

Հասկանալով կարդալու, գրելու և գործարկելու թույլտվությունները

Երեք հիմնական թույլտվությունները թույլ են տալիս կարդալ, գրել և կատարել ֆայլեր: Այս թույլտվությունների ազդեցությունը տարբերվում է, երբ կիրառվում է ֆայլերի կամ գրացուցակների վրա: Երբ կիրառվում է ֆայլի վրա, կարդալու թույլտվությունը ձեզ իրավունք է տալիս բացել ֆայլը կարդալու համար: Հետևաբար, դուք կարող եք կարդալ դրա բովանդակությունը, բայց դա նշանակում է, որ ձեր համակարգիչը կարող է բացել ֆայլը՝ դրա հետ ինչ-որ բան անելու համար:

Ծրագրային ֆայլը, որը պահանջում է մուտք դեպի գրադարան, պետք է, օրինակ, ընթերցելու հասանելիություն ունենա այդ գրադարանին: Սա նշանակում է, որ կարդալու թույլտվությունը ամենահիմնական թույլտվությունն է, որն անհրաժեշտ է ֆայլերի հետ աշխատելու համար:

Երբ կիրառվում է գրացուցակի վրա, ընթերցումը թույլ է տալիս ցուցադրել այդ գրացուցակի բովանդակությունը: Պետք է տեղյակ լինեք, որ այս թույլտվությունը թույլ չի տալիս կարդալ գրացուցակում գտնվող ֆայլերը: Linux-ի թույլտվությունների համակարգը ժառանգականություն չգիտի, և ֆայլը կարդալու միակ միջոցը այդ ֆայլի վրա կարդալու թույլտվություններ օգտագործելն է:

Ինչպես հավանաբար կարող եք կռահել, գրելու թույլտվությունը, երբ կիրառվում է ֆայլի վրա, թույլ է տալիս գրել ֆայլին: Այլ կերպ ասած, այն թույլ է տալիս փոխել առկա ֆայլերի բովանդակությունը: Այնուամենայնիվ, այն թույլ չի տալիս ստեղծել կամ ջնջել նոր ֆայլեր կամ փոխել ֆայլի թույլտվությունները: Դա անելու համար հարկավոր է գրելու թույլտվություն տալ այն գրացուցակին, որտեղ ցանկանում եք ստեղծել ֆայլը: Գրացուցակներում այս թույլտվությունը թույլ է տալիս նաև ստեղծել և ջնջել նոր ենթագրքեր:

Գործարկելու թույլտվությունն այն է, ինչ ձեզ հարկավոր է ֆայլը գործարկելու համար: Այն երբեք չի տեղադրվի լռելյայն, ինչը Linux-ին գրեթե լիովին պաշտպանում է վիրուսներից: Միայն գրացուցակ գրելու հասանելիություն ունեցող անձը կարող է կիրառել կատարման թույլտվություն:

Հետևյալն ամփոփում է հիմնական թույլտվությունների օգտագործումը.

Թույլտվություններ Linux-ում (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Օգտագործելով chmod

Իրավունքները կառավարելու համար օգտագործեք հրամանը chmod. Օգտագործելով chmod Դուք կարող եք թույլտվություններ սահմանել օգտվողի, խմբի և այլոց համար: Այս հրամանը կարող եք օգտագործել երկու ռեժիմով՝ հարաբերական և բացարձակ ռեժիմով: Բացարձակ ռեժիմում երեք նիշերն օգտագործվում են հիմնական թույլտվությունները սահմանելու համար:

Թույլտվություններ Linux-ում (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Թույլտվությունները սահմանելիս հաշվարկեք ձեզ անհրաժեշտ արժեքը: Եթե ​​ցանկանում եք սահմանել կարդալ, գրել և կատարել օգտվողի համար, կարդալ և կատարել խմբի համար և կարդալ և կատարել ուրիշների համար /somefile-ում, ապա օգտագործում եք հետևյալ հրամանը. chmod:

chmod 755 /somefile

Երբ օգտագործում եք chmod Այս կերպ բոլոր ընթացիկ թույլտվությունները փոխարինվում են ձեր կողմից սահմանված թույլտվություններով:

Եթե ​​ցանկանում եք փոխել թույլտվությունները ներկայիս թույլտվությունների համեմատ, կարող եք օգտագործել chmod հարաբերական ռեժիմով. Օգտագործելով chmod հարաբերական ռեժիմում դուք աշխատում եք երեք ցուցիչներով՝ ցույց տալու, թե ինչ եք ուզում անել.

  1. Նախ նշեք, թե ում համար եք ուզում փոխել թույլտվությունները: Դա անելու համար դուք կարող եք ընտրել օգտվողի միջև (u), խումբ (g) եւ ուրիշներ (o).
  2. Այնուհետև դուք օգտագործում եք հայտարարությունը ընթացիկ ռեժիմից թույլտվություններ ավելացնելու կամ հեռացնելու համար կամ դրանք բացարձակապես սահմանելու համար:
  3. Վերջում դուք օգտագործում եք r, w и xնշեք, թե որ թույլտվությունները ցանկանում եք սահմանել:

Թույլտվությունները հարաբերական ռեժիմում փոխելիս կարող եք բաց թողնել «դեպի» մասը՝ բոլոր օբյեկտների համար թույլտվություն ավելացնելու կամ հեռացնելու համար: Օրինակ, այս հրամանը ավելացնում է կատարման թույլտվություն բոլոր օգտագործողների համար.

chmod +x somefile

Հարաբերական ռեժիմում աշխատելիս կարող եք նաև օգտագործել ավելի բարդ հրամաններ։ Օրինակ, այս հրամանը ավելացնում է գրելու թույլտվությունը խմբին և հեռացնում է կարդալու թույլտվությունը մյուսների համար.

chmod g+w,o-r somefile

Օգտագործելիս chmod -R o+rx /տվյալներ դուք սահմանել եք կատարման թույլտվություն բոլոր դիրեկտորիաների, ինչպես նաև /data գրացուցակի ֆայլերի համար: Կատարելու թույլտվությունը միայն գրացուցակներում և ոչ ֆայլերում սահմանելու համար օգտագործեք chmod -R o+ rX /տվյալներ.

Մեծատառ X-ը երաշխավորում է, որ ֆայլերին չի տրվի կատարման թույլտվություն, քանի դեռ ֆայլն արդեն սահմանել է որոշ օբյեկտների կատարման թույլտվություն: Սա X-ին դարձնում է ավելի խելացի միջոց՝ գործելու կատարման թույլտվությունները. դա թույլ չի տա այս թույլտվությունը դնել այն ֆայլերի վրա, որտեղ դա անհրաժեշտ չէ:

Ընդլայնված իրավունքներ

Ի լրումն հիմնական թույլտվությունների, որոնց մասին դուք հենց նոր կարդացիք, Linux-ն ունի նաև առաջադեմ թույլտվությունների մի շարք: Սրանք այն թույլտվությունները չեն, որոնք դուք սահմանել եք լռելյայն, բայց երբեմն դրանք տալիս են օգտակար հավելում: Այս բաժնում դուք կսովորեք, թե ինչ են դրանք և ինչպես կարգավորել դրանք:

Հասկանալով SUID, GUID և sticky bit ընդլայնված իրավունքները

Կան երեք առաջադեմ լուծումներ. Առաջինը Set User ID (SUID) թույլտվությունն է: Որոշ հատուկ դեպքերում, դուք կարող եք կիրառել այս թույլտվությունը գործարկվող ֆայլերի վրա: Լռելյայնորեն, գործարկվող գործարկվող օգտատերը գործարկում է այդ ֆայլը իր սեփական թույլտվություններով:

Սովորական օգտագործողների համար դա սովորաբար նշանակում է, որ ծրագրի օգտագործումը սահմանափակ է: Այնուամենայնիվ, որոշ դեպքերում օգտագործողը պահանջում է հատուկ թույլտվություններ միայն կոնկրետ առաջադրանք կատարելու համար:

Դիտարկենք, օրինակ, մի իրավիճակ, երբ օգտվողը պետք է փոխի իր գաղտնաբառը: Դա անելու համար օգտվողը պետք է գրի իր նոր գաղտնաբառը /etc/shadow ֆայլում։ Այնուամենայնիվ, այս ֆայլը գրառելի չէ ոչ արմատային օգտվողների կողմից.

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

SUID թույլտվությունն առաջարկում է այս խնդրի լուծումը: /usr/bin/passwd կոմունալում այս թույլտվությունը կիրառվում է լռելյայնորեն: Սա նշանակում է, որ երբ գաղտնաբառը փոխվում է, օգտվողը ժամանակավորապես ստանում է արմատային արտոնություններ, ինչը թույլ է տալիս գրել /etc/shadow ֆայլում։ Դուք կարող եք տեսնել SUID թույլտվությունը ls -l ինչպես s մի դիրքում, որտեղ դուք սովորաբար ակնկալում եք տեսնել x մաքսային թույլտվությունների համար՝

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

SUID թույլտվությունը կարող է օգտակար թվալ (և որոշ դեպքերում դա այդպես է), բայց դա նաև պոտենցիալ վտանգավոր է: Եթե ​​սխալ օգտագործվի, դուք կարող եք պատահաբար տալ արմատային թույլտվությունները: Ուստի խորհուրդ եմ տալիս օգտագործել այն միայն ծայրահեղ զգուշությամբ։

Ադմինիստրատորներից շատերը երբեք կարիք չեն ունենա օգտագործելու այն. դուք այն կտեսնեք միայն որոշ ֆայլերում, որտեղ օպերացիոն համակարգը պետք է այն սահմանի լռելյայն:

Երկրորդ հատուկ թույլտվությունը Group ID-ն է (SGID): Այս թույլտվությունն ունի երկու ազդեցություն. Երբ կիրառվում է գործարկվող ֆայլի վրա, այն օգտվողին, ով կատարում է ֆայլը, տալիս է այդ ֆայլի խմբի սեփականատիրոջ թույլտվությունները: Այսպիսով, SGID-ը կարող է քիչ թե շատ անել նույն բանը, ինչ SUID-ը: Այնուամենայնիվ, SGID-ը գրեթե չի օգտագործվում այդ նպատակով:

Ինչպես SUID թույլտվության դեպքում, SGID-ը կիրառվում է որոշ համակարգի ֆայլերի վրա՝ որպես լռելյայն կարգավորում:

Երբ կիրառվում է գրացուցակում, SGID-ը կարող է օգտակար լինել, քանի որ այն կարող եք օգտագործել՝ այդ գրացուցակում ստեղծված ֆայլերի և ենթագրեգատների համար խմբի լռելյայն սեփականատերը սահմանելու համար: Լռելյայնորեն, երբ օգտվողը ստեղծում է ֆայլ, նրա արդյունավետ հիմնական խումբը սահմանվում է որպես խմբի սեփականատեր այդ ֆայլի համար:

Սա միշտ չէ, որ շատ օգտակար է, հատկապես, քանի որ Red Hat/CentOS-ի օգտատերերն իրենց հիմնական խումբն ունեն օգտատերի նույն անունով խումբ, և որի միակ անդամն է օգտվողը: Այսպիսով, լռելյայնորեն, օգտագործողի ստեղծած ֆայլերը կհամօգտագործվեն խմբով:

Պատկերացրեք մի իրավիճակ, երբ օգտատերերը linda-ն և lori-ն աշխատում են հաշվապահությամբ և խմբի անդամներ են հաշիվ. Լռելյայնորեն այս օգտվողները մասնավոր խմբի անդամներ են, որոնց միակ անդամն իրենք են: Այնուամենայնիվ, երկու օգտվողներն էլ հաշվի խմբի անդամներ են, բայց նաև որպես երկրորդական խմբի պարամետր:

Լռելյայն իրավիճակն այն է, որ երբ այս օգտվողներից որևէ մեկը ստեղծում է ֆայլ, հիմնական խումբը դառնում է սեփականատեր: Հետևաբար, ըստ նախնականի, linda-ն չի կարող մուտք գործել lori-ի կողմից ստեղծված ֆայլեր և հակառակը: Այնուամենայնիվ, եթե դուք ստեղծեք ընդհանուր խմբի գրացուցակ (ասենք /groups/account) և համոզվեք, որ SGID թույլտվությունը կիրառվում է այդ գրացուցակի վրա, և որ խմբի հաշիվը սահմանված է Group Owner-ի համար այդ գրացուցակում, այդ գրացուցակում ստեղծված բոլոր ֆայլերը և դրա բոլոր տվյալները: ենթադիրեկտորիաներ, ստացեք նաև խմբի հաշիվը որպես խմբի լռելյայն սեփականատեր:

Այս պատճառով, SGID թույլտվությունը շատ օգտակար թույլտվություն է հանրային խմբի դիրեկտորիաներում տեղադրելու համար:

SGID թույլտվությունը ցուցադրվում է ելքում ls -l ինչպես s այն դիրքում, որտեղ սովորաբար կգտնեք խմբի կատարման թույլտվություն.

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

Հատուկ թույլտվություններից երրորդը կպչուն է: Այս թույլտվությունը օգտակար է ֆայլերը պատահական ջնջումից պաշտպանելու համար մի միջավայրում, որտեղ մի քանի օգտատերեր ունեն գրելու մուտք դեպի նույն գրացուցակը: Եթե ​​կպչուն բիթն օգտագործվում է, օգտվողը կարող է ջնջել ֆայլը միայն այն դեպքում, եթե նա ֆայլի կամ գրացուցակի օգտագործողի սեփականատերն է, որը պարունակում է ֆայլը: Այդ իսկ պատճառով, դա /tmp գրացուցակի լռելյայն թույլտվությունն է և կարող է օգտակար լինել նաև հանրային խմբի դիրեկտորիաների համար:

Առանց կպչուն բիտի, եթե օգտվողը կարող է ֆայլեր ստեղծել գրացուցակում, նա կարող է նաև ջնջել ֆայլերը այդ գրացուցակից: Հանրային խմբի միջավայրում դա կարող է զայրացնել: Պատկերացրեք օգտատերերին՝ Linda-ին և Lori-ին, ովքեր երկուսն էլ ունեն գրելու թույլտվություն /data/account գրացուցակում և ստանում են այդ թույլտվությունները հաշվի խմբին անդամակցելու միջոցով: Հետևաբար, linda-ն կարող է ջնջել lori-ի կողմից ստեղծված ֆայլերը և հակառակը։

Երբ դուք կիրառում եք կպչուն բիթ, օգտվողը կարող է ջնջել ֆայլերը միայն այն դեպքում, եթե ճիշտ է հետևյալ պայմաններից մեկը.

  • Օգտագործողը ֆայլի սեփականատերն է.
  • Օգտագործողը այն գրացուցակի սեփականատերն է, որտեղ գտնվում է ֆայլը:

Օգտագործելիս ls -l, դուք կարող եք տեսնել կպչուն քիչ նման t այն դիրքում, որտեղ սովորաբար տեսնում եք ուրիշների համար կատարման թույլտվություն.

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

Ընդլայնված իրավունքների կիրառում

SUID, SGID և sticky bit կիրառելու համար կարող եք նաև օգտագործել chmod. SUID-ն ունի 4 թվային արժեք, SGID-ը՝ 2, իսկ կպչուն բիթը՝ 1 թվային արժեք:

Եթե ​​ցանկանում եք կիրառել այս թույլտվությունները, դուք պետք է ավելացնեք չորս նիշերի փաստարկ chmod, որի առաջին նիշը վերաբերում է հատուկ թույլտվություններին։ Հետևյալ տողը, օրինակ, կավելացնի SGID թույլտվությունը գրացուցակում և կսահմանի rwx օգտվողի համար և rx խմբի և այլոց համար.

chmod 2755 /somedir

Սա բավականին անիրագործելի է, եթե դուք պետք է տեսնեք ընթացիկ թույլտվությունները, որոնք սահմանված են նախքան դրա հետ աշխատելը chmod բացարձակ ռեժիմով։ (Դուք վտանգում եք վերագրանցել թույլտվությունները, եթե դա չանեք:) Այսպիսով, ես խորհուրդ եմ տալիս աշխատել հարաբերական ռեժիմով, եթե ձեզ անհրաժեշտ է կիրառել հատուկ թույլտվություններից որևէ մեկը.

  1. SUID օգտագործման համար chmod u+s.
  2. SGID օգտագործման համար chmod g+s.
  3. Կպչուն բիտ օգտագործման համար chmod +tորին հաջորդում է ֆայլի կամ գրացուցակի անունը, որի համար ցանկանում եք թույլտվություններ սահմանել:

Աղյուսակը ամփոփում է այն ամենը, ինչ դուք պետք է իմանաք հատուկ թույլտվությունների կառավարման մասին:

Թույլտվություններ Linux-ում (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Հատուկ իրավունքների հետ աշխատելու օրինակ

Այս օրինակում դուք օգտագործում եք հատուկ թույլտվություններ՝ խմբի անդամների համար հեշտացնելու ֆայլերը համօգտագործվող խմբի գրացուցակում: Դուք նշանակում եք խմբի ID-ի նույնականացման բիթը, ինչպես նաև կպչուն բիթը, և տեսնում եք, որ երբ դրանք տեղադրվեն, հնարավորություններ են ավելացվում՝ խմբի անդամների համար միասին աշխատելը հեշտացնելու համար:

  1. Բացեք տերմինալ, որտեղ դուք օգտատեր լինդան եք: Հրամանով կարող եք օգտատեր ստեղծել Լինդա, ավելացնել գաղտնաբառ passwd Լինդա.
  2. Հրամանով ստեղծեք /data գրացուցակ արմատում և /data/sales ենթացուցակ mkdir -p /տվյալներ/վաճառք. Կատարել cd /տվյալներ/վաճառքգնալ վաճառքի գրացուցակ: Կատարել դիպչել լինդա1 и դիպչել լինդա2ստեղծել երկու դատարկ ֆայլ, որը պատկանում է linda-ին:
  3. Կատարել սու-լիսա ընթացիկ օգտատիրոջը փոխարկել օգտատիրոջ լիզային, որը նաև վաճառքի խմբի անդամ է:
  4. Կատարել cd /տվյալներ/վաճառք և գործարկեք այս գրացուցակից ls -l. Դուք կտեսնեք երկու ֆայլ, որոնք ստեղծվել են linda օգտվողի կողմից և պատկանում են linda խմբին: Կատարել rm -f լինդա*. Սա կջնջի երկու ֆայլերը:
  5. Կատարել դիպչել lisa1 и դիպչել lisa2ստեղծել երկու ֆայլ, որոնք պատկանում են օգտվողի lisa-ին:
  6. Կատարել սու — մեծացնել ձեր արտոնությունները root-ի համար:
  7. Կատարել chmod g+s,o+t /տվյալներ/վաճառքխմբի նույնացուցիչի (GUID) բիթը, ինչպես նաև կպչուն բիթը ընդհանուր խմբի գրացուցակում սահմանելու համար:
  8. Կատարել սու-լինդա. Հետո արա դիպչել լինդա3 и դիպչել լինդա4. Այժմ դուք պետք է տեսնեք, որ ձեր ստեղծած երկու ֆայլերը պատկանում են վաճառքի խմբին, որը /data/sales գրացուցակի խմբի սեփականատերն է:
  9. Կատարել rm -rf lisa*. Sticky bit-ը կանխում է այս ֆայլերի ջնջումը որպես օգտվողի linda, քանի որ դուք այս ֆայլերի սեփականատերը չեք: Նկատի ունեցեք, որ եթե օգտվող linda-ն /data/sales գրացուցակի սեփականատերն է, նա ամեն դեպքում կարող է ջնջել այս ֆայլերը:

ACL կառավարում (setfacl, getfacl) Linux-ում

Թեև վերը քննարկված առաջադեմ թույլտվությունները օգտակար ֆունկցիոնալություն են ավելացնում այն ​​ձևին, թե ինչպես է Linux-ը վերաբերում թույլտվություններին, այն թույլ չի տալիս թույլտվություններ տալ մեկից ավելի օգտվողների կամ մեկ խմբի մեկ ֆայլի վրա:

Մուտքի վերահսկման ցուցակներն առաջարկում են այս գործառույթը: Նրանք նաև թույլ են տալիս ադմինիստրատորներին բարդ ձևով սահմանել լռելյայն թույլտվությունները, որտեղ թույլտվությունները կարող են տարբեր լինել դիրեկտորիաների միջև:

Հասկանալով ACL-ները

Չնայած ACL ենթահամակարգը մեծ գործառույթներ է ավելացնում ձեր սերվերին, այն ունի մեկ թերություն՝ ոչ բոլոր կոմունալ ծառայություններն են աջակցում այն: Հետևաբար, դուք կարող եք կորցնել ACL-ի կարգավորումները ֆայլերը պատճենելիս կամ տեղափոխելիս, իսկ պահեստային ծրագրակազմը կարող է չպահուստավորել ACL կարգավորումները:

tar կոմունալը չի ​​աջակցում ACL-ներին: Ապահովելու համար, որ ACL կարգավորումները չեն կորչում կրկնօրինակում ստեղծելիս, օգտագործեք աստղ խեժի փոխարեն։ աստղ աշխատում է նույն պարամետրերով, ինչ tar; այն պարզապես ավելացնում է ACL կարգավորումների աջակցությունը:

Դուք կարող եք նաև կրկնօրինակել ACL-ը՝ օգտագործելով ստացիր, որը կարելի է վերականգնել՝ օգտագործելով setfacl հրամանը։ Կրկնօրինակ ստեղծելու համար օգտագործեք getfacl -R /տեղեկատու > file.acls. Պահուստային ֆայլից կարգավորումները վերականգնելու համար օգտագործեք setfacl --restore=file.acl.

Որոշ գործիքների աջակցության բացակայությունը չպետք է խնդիր լինի: ACL-ները հաճախ կիրառվում են գրացուցակներում՝ որպես կառուցվածքային միջոց, այլ ոչ թե առանձին ֆայլերի:
Հետևաբար, դրանցից շատերը չեն լինի, այլ միայն մի քանիսը, որոնք կկիրառվեն ֆայլային համակարգի խելացի վայրերում: Հետևաբար, համեմատաբար հեշտ է վերականգնել բնօրինակ ACL-ները, որոնց հետ աշխատել եք, նույնիսկ եթե ձեր պահուստային ծրագրակազմը չի աջակցում դրանք:

ACL-ների համար ֆայլային համակարգի պատրաստում

Նախքան ACL-ների հետ աշխատել սկսելը, գուցե անհրաժեշտ լինի պատրաստել ձեր ֆայլային համակարգը ACL-ներին աջակցելու համար: Քանի որ ֆայլային համակարգի մետատվյալները պետք է ընդլայնվեն, միշտ չէ, որ ֆայլային համակարգում ACL-ների համար կանխադրված աջակցություն կա: Եթե ​​ACL-ները ֆայլային համակարգի համար կազմաձևելիս ստանում եք «գործառնությունը չի աջակցվում» հաղորդագրություն, ձեր ֆայլային համակարգը կարող է չաջակցել ACL-ներին:

Դա շտկելու համար անհրաժեշտ է ավելացնել տարբերակը acl լեռ /etc/fstab ֆայլում, որպեսզի ֆայլային համակարգը լռելյայն տեղադրվի ACL աջակցությամբ:

Փոխել և դիտել ACL կարգավորումները՝ օգտագործելով setfacl և getfacl

ACL-ը կարգավորելու համար անհրաժեշտ է հրամանը սահմանել. ACL-ի ընթացիկ կարգավորումները տեսնելու համար ձեզ անհրաժեշտ է ստացիր. Թիմ ls -l չի ցուցադրում գոյություն ունեցող ACL-ներ. այն պարզապես թույլտվությունների ցանկից հետո ցույց է տալիս +, ինչը ցույց է տալիս, որ ACL-ները կիրառվում են նաև ֆայլի վրա:

ACL-ները կարգավորելուց առաջ միշտ լավ գաղափար է ցուցադրել ընթացիկ ACL կարգավորումները՝ օգտագործելով ստացիր. Ստորև բերված օրինակը կարող եք տեսնել ընթացիկ թույլտվությունները, ինչպես ցույց է տրված ls -l, և ինչպես ցույց է տրված ստացիր. Եթե ​​բավական ուշադիր նայեք, կտեսնեք, որ ցուցադրված տեղեկատվությունը ճիշտ նույնն է:

[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

Հրամանի կատարման արդյունքում ստացիր Ստորև կարող եք տեսնել, որ թույլտվությունները ցուցադրվում են երեք տարբեր օբյեկտների համար՝ օգտատեր, խումբ և այլոց: Հիմա եկեք ավելացնենք ACL՝ վաճառքի խմբին կարդալու և գործարկելու թույլտվություններ տալու համար: Սրա հրամանն է setfacl -mg:sales:rx /dir. Այս թիմում -m ցույց է տալիս, որ ընթացիկ ACL կարգավորումները պետք է փոխվեն: Դրանից հետո g:sales:rx հրաման է տալիս սահմանել կարդալ և կատարել ACL (rx) խմբի համար (g) վաճառք. Ստորև կարող եք տեսնել, թե ինչ տեսք ունի հրամանը, ինչպես նաև getfacl հրամանի ելքը՝ ընթացիկ 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

Այժմ, երբ հասկանում եք, թե ինչպես սահմանել խմբային ACL, հեշտ է հասկանալ ACL-ները օգտվողների և այլ օգտվողների համար: Օրինակ, հրամանը setfacl -mu:linda:rwx /data Թույլտվություններ է տալիս օգտատիրոջը Linda-ին /data գրացուցակում՝ առանց նրան սեփականատեր դարձնելու կամ ներկայիս սեփականատիրոջ հանձնարարությունը փոխելու:

Թիմ սահմանել ունի բազմաթիվ առանձնահատկություններ և տարբերակներ: Հատկապես կարևոր է մեկ տարբերակ՝ պարամետրը -R. Եթե ​​օգտագործվում է, տարբերակը դարձնում է ACL կարգավորում բոլոր ֆայլերի և ենթագրքերերի համար, որոնք ներկայումս առկա են այն գրացուցակում, որտեղ դուք սահմանել եք ACL-ը: Առաջարկվում է միշտ օգտագործել այս տարբերակը գոյություն ունեցող դիրեկտորիաների համար ACL-ները փոխելիս:

Աշխատեք լռելյայն ACL-ների հետ

ACL-ների օգտագործման առավելություններից մեկն այն է, որ դուք կարող եք թույլտվություններ տալ գրացուցակի մի քանի օգտվողների կամ խմբերի: Մեկ այլ առավելություն այն է, որ դուք կարող եք միացնել ժառանգությունը լռելյայն ACL-ի հետ աշխատելիս:

Նախադրելով ACL-ը, դուք կորոշեք թույլտվությունները, որոնք կսահմանվեն գրացուցակում ստեղծված բոլոր նոր տարրերի վրա: Հիշեք, որ լռելյայն ACL-ը չի փոխում առկա ֆայլերի և ենթագրքերների թույլտվությունները: Դրանք փոխելու համար հարկավոր է նաև սովորական ACL ավելացնել:

Սա կարևոր է իմանալ: Եթե ​​ցանկանում եք օգտագործել ACL-ը մի քանի օգտատերերի կամ խմբերի կազմաձևման համար, որպեսզի մուտք գործեն նույն գրացուցակը, դուք պետք է երկու անգամ սահմանեք ACL-ը: Առաջին օգտագործումը setfacl -R -mընթացիկ ֆայլերի ACL-ը փոխելու համար: Ապա օգտագործեք setfacl -md:հոգ տանել բոլոր նոր տարրերի մասին, որոնք նույնպես կստեղծվեն։

Լռելյայն ACL-ը սահմանելու համար պարզապես անհրաժեշտ է ավելացնել տարբերակը d տարբերակից հետո -m (կարևոր է պատվերը): Այսպիսով, օգտագործեք setfacl -md:g:sales:rx /տվյալներեթե ցանկանում եք, որ խմբակային վաճառքը կարդա և կատարի այն ամենը, ինչ երբևէ կստեղծվի /data գրացուցակում:

Լռելյայն ACL-ներ օգտագործելիս կարող է օգտակար լինել նաև ACL-ներ սահմանել այլոց համար: Սովորաբար դա այնքան էլ իմաստ չունի, քանի որ դուք կարող եք նաև փոխել թույլտվությունները ուրիշների համար, ովքեր օգտագործում են chmod. Այնուամենայնիվ, ինչով չեք կարող անել chmod, նշանակում է նշել այն իրավունքները, որոնք պետք է տրվեն այլ օգտվողներին երբևէ ստեղծված յուրաքանչյուր նոր ֆայլի համար: Եթե ​​ցանկանում եք թույլ չտալ, որ ուրիշները որևէ թույլտվություն ստանան /data-ում ստեղծված որևէ բանի վերաբերյալ, օրինակ՝ օգտագործեք setfacl -md:o::- /տվյալներ.

ACL-ները և կանոնավոր թույլտվությունները միշտ չէ, որ լավ ինտեգրված են: Խնդիրներ կարող են առաջանալ, եթե այդ գրացուցակում տարրեր ավելացնելուց հետո լռելյայն ACL կիրառեք գրացուցակում, այնուհետև փորձեք փոխել սովորական թույլտվությունները: Փոփոխությունները, որոնք վերաբերում են սովորական թույլտվություններին, լավ չեն արտացոլվի ACL ակնարկում: Խնդիրներից խուսափելու համար նախ սահմանեք նորմալ թույլտվություններ, այնուհետև սահմանեք լռելյայն ACL-ները (և դրանից հետո փորձեք դրանք այլևս չփոխել):

Ընդլայնված իրավունքների կառավարման օրինակ՝ օգտագործելով ACL-ները

Այս օրինակում դուք կշարունակեք աշխատել նախկինում ստեղծված /data/account և /data/sales դիրեկտորիաների հետ: Նախորդ օրինակներում դուք համոզվեցիք, որ վաճառքի խումբն ուներ /data/sales-ի թույլտվություններ, իսկ հաշիվների խումբը /data/account-ի թույլտվություններ:

Նախ, համոզվեք, որ հաշվի խումբն ունի կարդալու թույլտվություններ /data/sales գրացուցակում, և որ վաճառքի խումբն ունի կարդալու թույլտվություններ /data/account գրացուցակում:

Այնուհետև դուք սահմանում եք լռելյայն ACL-ներ՝ համոզվելու համար, որ բոլոր նոր ֆայլերը բոլոր նոր տարրերի վրա ճիշտ սահմանված թույլտվություններ ունեն:

  1. Բացեք տերմինալ:
  2. Կատարել setfacl -mg:account:rx /data/sales и setfacl -mg:sales:rx /data/account.
  3. Կատարել ստացիրհամոզվելու համար, որ թույլտվությունները սահմանված են այնպես, ինչպես ցանկանում էիք:
  4. Կատարել setfacl -md:g:account:rwx,g:sales:rx /data/salesվաճառքի գրացուցակի համար կանխադրված ACL սահմանելու համար:
  5. Ավելացրեք կանխադրված ACL /data/account գրացուցակի համար՝ օգտագործելով setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. Համոզվեք, որ ձեր ACL կարգավորումներն ուժի մեջ են՝ ավելացնելով նոր ֆայլ /data/sales-ում: Կատարել հպեք /տվյալներ/վաճառք/նոր ֆայլ և կատարել getfacl /տվյալներ/վաճառք/նոր ֆայլ ընթացիկ թույլտվությունները ստուգելու համար:

Նախադրված թույլտվությունների կարգավորում՝ օգտագործելով umask

Վերևում դուք սովորեցիք, թե ինչպես աշխատել լռելյայն ACL-ների հետ: Եթե ​​դուք չեք օգտագործում ACL, կա shell տարբերակ, որը որոշում է ձեր ստացած լռելյայն թույլտվությունները. umask (հակադարձ դիմակ): Այս բաժնում դուք կսովորեք, թե ինչպես փոխել լռելյայն թույլտվությունները՝ օգտագործելով umask.

Դուք կարող եք նկատել, որ երբ դուք ստեղծում եք նոր ֆայլ, որոշ կանխադրված թույլտվություններ են սահմանվում: Այս թույլտվությունները որոշվում են կարգավորումներով umask. Կեղևի այս պարամետրը վերաբերում է բոլոր օգտատերերին, երբ մուտք եք գործել: Պարամետրում umask օգտագործվում է թվային արժեք, որը հանվում է առավելագույն թույլտվություններից, որոնք կարող են ավտոմատ կերպով սահմանվել ֆայլի համար. Ֆայլերի առավելագույն կարգավորումը 666 է, իսկ դիրեկտորիաների համար՝ 777:

Այնուամենայնիվ, որոշ բացառություններ կիրառվում են այս կանոնի նկատմամբ: Դուք կարող եք գտնել կարգավորումների ամբողջական ակնարկ umask ստորև բերված աղյուսակում:

Օգտագործված թվերից umask, ինչպես հրամանի թվային արգումենտների դեպքում chmod, առաջին նիշը վերաբերում է օգտվողի թույլտվություններին, երկրորդ նիշը վերաբերում է խմբի թույլտվություններին, իսկ վերջինը վերաբերում է այլոց համար սահմանված լռելյայն թույլտվություններին: Իմաստը umask լռելյայն 022-ը տալիս է 644 բոլոր նոր ֆայլերի համար և 755՝ ձեր սերվերում ստեղծված բոլոր նոր դիրեկտորիաների համար:

Բոլոր թվային արժեքների ամբողջական ակնարկ umask և դրանց արդյունքները՝ ստորև բերված աղյուսակում:

Թույլտվություններ Linux-ում (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Umask-ի կարգավորումը տեսնելու պարզ միջոցը հետևյալն է. սկսեք լռելյայն ֆայլի թույլտվություններից, որոնք դրված են 666-ի և հանեք umask-ը՝ արդյունավետ թույլտվություններ ստանալու համար: Նույնը արեք գրացուցակի և նրա 777-ի լռելյայն թույլտվությունների համար:

Umask-ի կարգավորումները փոխելու երկու եղանակ կա՝ բոլոր օգտատերերի և առանձին օգտատերերի համար: Եթե ​​ցանկանում եք սահմանել umask բոլոր օգտատերերի համար, դուք պետք է ապահովեք, որ umask-ի կարգավորումը պահպանվի shell միջավայրի ֆայլերը գործարկելիս, ինչպես նշված է /etc/profile-ում: Ճիշտ մոտեցումն է /etc/profile.d գրացուցակում ստեղծել umask.sh անունով shell script և նշել umask-ը, որը ցանկանում եք օգտագործել այդ shell script-ում: Եթե ​​umask-ը փոխվում է այս ֆայլում, ապա այն կիրառվում է բոլոր օգտագործողների վրա՝ սերվեր մուտք գործելուց հետո:

/etc/profile-ի և հարակից ֆայլերի միջոցով umask-ի տեղադրման այլընտրանքը, որտեղ այն կիրառվում է բոլոր մուտք գործած օգտատերերի համար, .profile կոչվող ֆայլում umask-ի կարգավորումները փոխելն է, որը ստեղծվում է յուրաքանչյուր օգտագործողի գլխավոր գրացուցակում:

Այս ֆայլում կիրառվող կարգավորումները վերաբերում են միայն անհատական ​​օգտագործողին. հետևաբար, սա լավ մեթոդ է, եթե ձեզ ավելի շատ մանրամասներ են անհրաժեշտ: Անձամբ ինձ դուր է գալիս այս հատկությունը արմատային օգտվողի լռելյայն umask-ը 027-ի փոխելու համար, մինչդեռ նորմալ օգտվողներն աշխատում են 022-ի լռելյայն umask-ով:

Աշխատեք օգտվողի ընդլայնված հատկանիշների հետ

Սա Linux-ի թույլտվությունների վերջին բաժինն է:

Թույլտվությունների հետ աշխատելիս միշտ կապ կա օգտագործողի կամ խմբային օբյեկտի և թույլտվությունների միջև, որոնք ունեն այդ օգտվողի կամ խմբի օբյեկտները ֆայլի կամ գրացուցակի վրա: Linux սերվերի վրա ֆայլերը պաշտպանելու այլընտրանքային մեթոդը ատրիբուտների հետ աշխատելն է:
Հատկանիշները կատարում են իրենց աշխատանքը՝ անկախ այն օգտվողից, ով մուտք է գործում ֆայլ:

Ինչպես ACL-ների դեպքում, ֆայլի ատրիբուտները կարող են անհրաժեշտ լինել միացնել: լեռ.

Սա տարբերակ է user_xattr. Եթե ​​դուք ստանում եք «գործառնությունը չի աջակցվում» հաղորդագրություն, երբ աշխատում եք օգտվողի ընդլայնված հատկանիշների հետ, համոզվեք, որ կարգավորեք այն լեռ ֆայլում /etc/fstab:

Շատ հատկանիշներ փաստաթղթավորված են: Որոշ ատրիբուտներ հասանելի են, բայց դեռ չեն ներդրվել: Մի օգտագործեք դրանք; նրանք ձեզ ոչինչ չեն բերի:

Ստորև ներկայացված են առավել օգտակար հատկանիշները, որոնք կարող եք կիրառել.

A Այս հատկանիշը ապահովում է, որ ֆայլի ֆայլի մուտքի ժամանակը չի փոխվում:
Սովորաբար, ամեն անգամ, երբ ֆայլը բացվում է, ֆայլին մուտք գործելու ժամանակը պետք է գրանցվի ֆայլի մետատվյալներում: Սա բացասաբար է անդրադառնում կատարողականի վրա. հետևաբար, ֆայլերի համար, որոնց պարբերաբար մուտք են գործում, հատկանիշը A կարող է օգտագործվել այս գործառույթն անջատելու համար:

a Այս հատկանիշը թույլ է տալիս ավելացնել, բայց ոչ ջնջել ֆայլ:

c Եթե ​​դուք օգտագործում եք ֆայլային համակարգ, որն աջակցում է ծավալի մակարդակի սեղմմանը, ֆայլի այս հատկանիշը երաշխավորում է, որ ֆայլը սեղմված է, երբ սեղմման շարժիչը առաջին անգամ միացված է:

D Այս հատկանիշը ապահովում է, որ ֆայլերի փոփոխություններն անմիջապես գրվեն սկավառակի վրա, այլ ոչ թե սկզբում պահվեն: Սա օգտակար հատկանիշ է տվյալների բազայի կարևոր ֆայլերի վրա՝ ապահովելու համար, որ դրանք չկորչեն ֆայլի քեշի և կոշտ սկավառակի միջև:

d Այս հատկանիշը ապահովում է, որ ֆայլը չի ​​պահպանվում կրկնօրինակներում, որտեղ օգտագործվում է dump utility-ը:

I Այս հատկանիշը հնարավորություն է տալիս ինդեքսավորել այն գրացուցակը, որտեղ այն միացված է: Սա ապահովում է ֆայլերի ավելի արագ հասանելիություն պարզունակ ֆայլային համակարգերի համար, ինչպիսիք են Ext3-ը, որոնք չեն օգտագործում B-tree տվյալների բազա ֆայլերի արագ մուտքի համար:

i Այս հատկանիշը ֆայլը դարձնում է անփոփոխ: Հետևաբար, ֆայլում որևէ փոփոխություն չի կարող կատարվել, ինչը օգտակար է լրացուցիչ պաշտպանության կարիք ունեցող ֆայլերի համար:

j Այս հատկանիշը ապահովում է, որ ext3 ֆայլային համակարգում ֆայլը նախ գրվում է ամսագրում, այնուհետև կոշտ սկավառակի տվյալների բլոկներում:

s Վերագրեք այն բլոկները, որոնցում ֆայլը պահվել է 0 վրկ ֆայլը ջնջելուց հետո: Սա ապահովում է, որ ֆայլը ջնջվելուց հետո չի կարող վերականգնվել:

u Այս հատկանիշը պահպանում է ջնջման մասին տեղեկությունները: Սա թույլ է տալիս մշակել կոմունալ ծրագիր, որն աշխատում է այս տեղեկատվության հետ՝ ջնջված ֆայլերը փրկելու համար:

Եթե ​​ցանկանում եք կիրառել ատրիբուտներ, կարող եք օգտագործել հրամանը չատր. Օրինակ, օգտագործել chattr +s somefileորոշ ֆայլի վրա ատրիբուտներ կիրառելու համար: Պետք է հեռացնել հատկանիշը: Ապա օգտագործեք chattr -s somefile, և այն կջնջվի։ Ներկա պահին կիրառվող բոլոր հատկանիշների ակնարկ ստանալու համար օգտագործեք հրամանը լսատր.

Ամփոփում

Այս հոդվածում դուք սովորեցիք, թե ինչպես աշխատել թույլտվությունների հետ: Դուք կարդում եք երեք հիմնական թույլտվությունների, առաջադեմ թույլտվությունների և ֆայլային համակարգում ACL-ների օգտագործման մասին: Դուք նաև սովորեցիք, թե ինչպես օգտագործել umask պարամետրը՝ լռելյայն թույլտվությունները կիրառելու համար: Այս հոդվածի վերջում դուք սովորեցիք, թե ինչպես օգտագործել օգտվողի կողմից ընդլայնված հատկանիշները ֆայլային համակարգի անվտանգության լրացուցիչ շերտ կիրառելու համար:

Եթե ​​ձեզ դուր եկավ այս թարգմանությունը, գրեք դրա մասին մեկնաբանություններում։ Ավելի շատ մոտիվացիա կլինի օգտակար թարգմանություններ անելու համար:

Ես ուղղել եմ հոդվածի որոշ տառասխալներ և քերականական սխալներ։ Որոշ ծավալուն պարբերություններ կրճատվել են փոքրերի՝ ավելի հեշտ ընթերցելու համար:

«Միայն գրացուցակի նկատմամբ ադմինիստրատիվ իրավունք ունեցող անձը կարող է կիրառել կատարման թույլտվություն» փոխարեն։ շտկվել է «Միայն ինչ-որ մեկը, ով ունի գրացուցակ գրելու հասանելիություն, կարող է կիրառել կատարման թույլտվություն», որն ավելի ճիշտ կլիներ:

Շնորհակալություն մեկնաբանությունների համար բերեզ.

Փոխարինված՝
Եթե ​​դուք օգտվողի սեփականատերը չեք, ապա shell-ը կստուգի, թե արդյոք դուք խմբի անդամ եք, որը նաև կոչվում է ֆայլի խումբ:

Վրա:
Եթե ​​դուք չեք ֆայլի սեփականատերը, ապա shell-ը կստուգի, թե արդյոք դուք խմբի անդամ եք, որն ունի ֆայլի թույլտվություններ: Եթե ​​դուք այս խմբի անդամ եք, դուք մուտք կունենաք ֆայլ խմբի համար սահմանված թույլտվություններով, և կեղևը կդադարեցնի ստուգումը:

Շնորհակալություն մեկնաբանության համար CryptoPirate

Source: www.habr.com

Добавить комментарий