Разрешения в 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. Shell проверява дали вие сте собственикът на файла, до който искате да получите достъп. Ако сте собственик, получавате разрешения и черупката спира да проверява.
  2. Ако не сте собственик на файла, обвивката ще провери дали сте член на група, която има разрешения за файла. Ако сте член на тази група, ще имате достъп до файла с разрешенията, зададени от групата, и черупката ще спре проверката.
  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 можете да покажете собственика на файловете в дадена директория. Понякога може да е полезно да получите списък с всички файлове в системата, които имат даден потребител или група като собственик. За това можете да използвате намерите. Аргумент намиране на потребител може да се използва за тази цел. Например, следната команда изброява всички файлове, които са собственост на потребителя linda:

find / -user linda

Можете също да използвате намерите за търсене на файлове, чиито собственик е определена група.

Например, следната команда търси всички файлове, принадлежащи към групата Потребители:

find / -group users

Смяна на собственика

За да приложите подходящите разрешения, първото нещо, което трябва да имате предвид, е собствеността. Има команда за това chown. Синтаксисът на тази команда е лесен за разбиране:

chown кто что

Например следната команда променя собственика на директорията /home/account на потребител linda:

chown linda /home/account

Отбор chown има няколко опции, една от които е особено полезна: -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 ~]#

Сега потребителят lisa стана собственик на директорията на акаунта:

[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

Промяна на собственика на група

Има два начина за промяна на собствеността върху група. Можете да направите това, като използвате chown, но има специална команда с име chgrpтова върши работа. Ако искате да използвате командата chown, използвайте . или : пред името на групата.

Следната команда променя всеки собственик на групата /home/account на групата акаунти:

chown .account /home/account

можеш да използваш chown за промяна на собственика на потребител и/или група по няколко начина. Ето няколко примера:

  • chown lisa myfile1 задава потребителя lisa като собственик на myfile1.
  • chown lisa.sales myfile задава потребителя lisa като собственик на файла myfile и също така задава групата за продажби като собственик на същия файл.
  • chown lisa: моят файл за продажби същото като предишната команда.
  • chown .sales myfile задава групата за продажби като собственик на myfile, без да променя собственика на потребителя.
  • chown :продажби myfile същото като предишната команда.

Можете да използвате командата chgrpза смяна на собственика на групата. Помислете за следния пример, където можете да използвате chgrp задайте собственика на директорията на акаунта на групата за продажби:

chgrp .sales /home/account

Като с chown, можете да използвате опцията -R с chgrp, както и рекурсивна промяна на собственика на групата.

Разбиране на собственика по подразбиране

Може би сте забелязали, че когато потребител създаде файл, се прилага собствеността по подразбиране.
Потребителят, който създава файла, автоматично става собственик на този файл и основната група на този потребител автоматично става собственик на този файл. Това обикновено е групата, която е посочена във файла /etc/passwd като основна група на потребителя. Ако обаче потребителят е член на повече от една група, той може да промени ефективната основна група.

За да покаже текущата ефективна основна група, потребителят може да използва командата групи:

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

Ако текущият потребител на linda иска да промени ефективната основна група, той ще използва командата нова групапоследвано от името на групата, която иска да зададе като нова ефективна основна група. След използване на командата нова група основната група ще бъде активна, докато потребителят въведе команда изход или не излизайте.

Следващото показва как потребителят 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

След промяна на ефективната основна група, всички нови файлове, създадени от потребителя, ще имат тази група като собственик на групата. За да се върнете към първоначалната настройка на основната група, използвайте изход.

За да можете да използвате командата нова група, потребителят трябва да е член на групата, която иска да използва като основна група. В допълнение, групова парола може да се използва за група с помощта на командата gpasswd. Ако потребителят използва командата нова групано не е член на целевата група, обвивката ви подканва за паролата на групата. След като въведете правилната парола на групата, ще бъде създадена нова ефективна основна група.

Управление на основните права

Системата за разрешения на Linux е изобретена през 1970-те години. Тъй като компютърните нужди бяха ограничени през онези години, основната разрешителна система беше доста ограничена. Тази система за разрешения използва три разрешения, които могат да бъдат приложени към файлове и директории. В този раздел ще научите как да използвате и променяте тези разрешения.

Разбиране на разрешенията за четене, писане и изпълнение

Три основни разрешения ви позволяват да четете, пишете и изпълнявате файлове. Ефектът от тези разрешения се различава, когато се прилагат към файлове или директории. За файл разрешението за четене ви дава право да отворите файла за четене. Следователно можете да прочетете съдържанието му, но това означава, че вашият компютър може да отвори файла, за да направи нещо с него.

Програмен файл, който се нуждае от достъп до библиотека, трябва например да има достъп за четене до тази библиотека. От това следва, че разрешението за четене е най-основното разрешение, от което се нуждаете, за да работите с файлове.

Когато се приложи към директория, четенето ви позволява да покажете съдържанието на тази директория. Трябва да знаете, че това разрешение не ви позволява да четете файловете в директорията. Системата за разрешения на Linux не познава наследяване и единственият начин да прочетете файл е да използвате разрешения за четене на този файл.

Както вероятно се досещате, разрешението за запис, ако се приложи към файл, позволява писане във файла. С други думи, той ви позволява да променяте съдържанието на съществуващи файлове. Той обаче не ви позволява да създавате или изтривате нови файлове или да променяте разрешенията за файлове. За да направите това, трябва да дадете разрешение за запис в директорията, в която искате да създадете файла. В директориите това разрешение също ви позволява да създавате и изтривате нови поддиректории.

Разрешението за изпълнение е това, от което се нуждаете, за да изпълните файла. Той никога няма да бъде инсталиран по подразбиране, което прави Linux почти напълно имунизиран срещу вируси. Само някой с права за запис в директорията може да приложи разрешение за изпълнение.

Следното обобщава използването на основни разрешения:

Разрешения в Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Използване на chmod

Командата се използва за управление на разрешенията. коригира. Използвайки коригира можете да зададете разрешения за потребител (потребител), групи (група) и други (други). Можете да използвате тази команда в два режима: относителен режим и абсолютен режим. В абсолютен режим три цифри се използват за задаване на основни разрешения.

Разрешения в Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Когато задавате разрешения, изчислете стойността, от която се нуждаете. Ако искате да зададете четене/запис/изпълнение за потребител, четене/изпълнение за група и четене/изпълнение за други в /somefile, тогава използвайте следната команда коригира:

chmod 755 /somefile

Когато използвате коригира по този начин всички текущи разрешения се заменят с разрешенията, които сте задали.

Ако искате да промените разрешенията спрямо текущите разрешения, можете да използвате коригира в относителен режим. Използвайки коригира в относителен режим работите с три индикатора, за да посочите какво искате да направите:

  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

Има три разширени разрешения. Първият от тях е разрешението за задаване на потребителски идентификатор (SUID). В някои специални случаи можете да приложите това разрешение към изпълними файлове. По подразбиране потребител, който изпълнява изпълним файл, изпълнява този файл със свои собствени разрешения.

За обикновените потребители това обикновено означава, че използването на програмата е ограничено. В някои случаи обаче потребителят се нуждае от специални разрешения само за изпълнение на конкретна задача.

Помислете например за ситуация, в която потребител трябва да промени паролата си. За да направи това, потребителят трябва да напише новата си парола във файла /etc/shadow. Този файл обаче не може да се записва от не-root потребители:

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

Разрешението SUID предлага решение на този проблем. Помощната програма /usr/bin/passwd използва това разрешение по подразбиране. Това означава, че при промяна на паролата потребителят временно става root, което му позволява да пише във файла /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 разрешението може да изглежда полезно (и в някои случаи е), но в същото време е потенциално опасно. Ако не се приложи правилно, можете случайно да дадете root права. Затова препоръчвам да го използвате само с най-голямо внимание.

Повечето администратори никога няма да имат нужда да го използват; ще го видите само в някои файлове, където операционната система трябва да го зададе по подразбиране.

Второто специално разрешение е идентификаторът на групата (SGID). Това разрешение има два ефекта. Когато се приложи към изпълним файл, той дава на потребителя, който изпълнява файла, разрешенията на собственика на групата на файла. Така че SGID може да прави повече или по-малко същото като SUID. SGID обаче практически не се използва за тази цел.

Както при SUID разрешението, SGID се прилага към някои системни файлове като настройка по подразбиране.

Когато се приложи към директория, SGID може да бъде полезен, защото можете да го използвате, за да зададете собственик на група по подразбиране за файлове и поддиректории, създадени в тази директория. По подразбиране, когато потребител създаде файл, неговата ефективна основна група се задава като собственик на групата за този файл.

Това не винаги е много полезно, особено след като основната група на потребителите на Red Hat/CentOS е зададена на група със същото име като потребителя и в която потребителят е единственият член. Така по подразбиране файловете, които потребителят създава, ще бъдат споделяни групово.

Представете си ситуация, в която потребителите linda и lori работят в счетоводството и са членове на група сметка. По подразбиране тези потребители са членове на частна група, в която те са единственият член. И двамата потребители обаче са членове на групата акаунти, но също и като параметър на вторична група.

Ситуацията по подразбиране е, че когато някой от тези потребители създаде файл, основната група става собственик. Следователно по подразбиране linda няма достъп до файлове, създадени от lori, и обратно. Ако обаче създадете споделена групова директория (да речем /groups/account) и се уверите, че разрешението SGID е приложено към тази директория и че груповият акаунт е зададен като собственик на групата за тази директория, всички файлове, създадени в тази директория и всички от неговите поддиректории, също получават груповия акаунт като собственик на групата по подразбиране.

Поради тази причина разрешението 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, можете също да използвате коригира. SUID има числова стойност 4, SGID има числова стойност 2, а sticky bit има числова стойност 1.

Ако искате да приложите тези разрешения, трябва да добавите четирицифрен аргумент към коригира, чиято първа цифра се отнася за специални разрешения. Следният ред, например, ще добави SGID разрешение към директорията и ще зададе rwx за потребител и rx за група и други:

chmod 2755 /somedir

Това е доста непрактично, ако трябва да видите текущите разрешения, които са зададени, преди да работите с коригира в абсолютен режим. (Имате риск от презаписване на разрешенията, ако не го направите.) Затова препоръчвам да работите в относителен режим, ако трябва да приложите някое от специалните разрешения:

  1. За използване на SUID chmod u+s.
  2. За използване на SGID chmod g+s.
  3. За използване на лепкав бит chmod +t, последвано от името на файла или директорията, за които искате да зададете разрешения.

Таблицата обобщава всичко, което трябва да знаете за управлението на специални разрешения.

Разрешения в Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Пример за работа със специални права

В този пример използвате специални разрешения, за да улесните членовете на групата да споделят файлове в споделената групова директория. Присвоявате бита за идентификатор на зададения идентификатор на групата, както и залепващия бит, и виждате, че след като са зададени, се добавят функции, за да улеснят членовете на групата да работят заедно.

  1. Отворете терминал, където сте потребител на linda. Можете да създадете потребител с командата Линда, добавете парола passwd линда.
  2. Създайте директорията /data в корена и поддиректорията /data/sales с командата mkdir -p /данни/продажби. Завършено cd /данни/продажбиза да отидете в указателя за продажби. Завършено докосни линда1 и докосни линда2за създаване на два празни файла, собственост на linda.
  3. Изпълни су-лиса за да превключите текущия потребител към потребителя lisa, който също е член на групата за продажби.
  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 лиза*. Залепващият бит предотвратява изтриването на тези файлове от името на потребителя на linda, тъй като вие не сте собственик на тези файлове. Имайте предвид, че ако потребителят на linda е собственик на директорията /data/sales, той може да изтрие тези файлове така или иначе!

Управление на ACL (setfacl, getfacl) в Linux

Въпреки че разгледаните по-горе разширени разрешения добавят полезна функционалност към начина, по който Linux обработва разрешенията, това не ви позволява да давате разрешения на повече от един потребител или група в един и същи файл.

Списъците за контрол на достъпа предлагат тази функция. В допълнение, те позволяват на администраторите да задават разрешения по подразбиране по сложен начин, където зададените разрешения могат да варират от директория до директория.

Разбиране на ACL

Въпреки че ACL подсистемата добавя голяма функционалност към вашия сървър, тя има един недостатък: не всички помощни програми я поддържат. Поради това може да загубите настройките си за ACL, когато копирате или премествате файлове, а вашият софтуер за архивиране може да не успее да архивира вашите настройки за ACL.

Помощната програма tar не поддържа ACL. За да сте сигурни, че ACL настройките не се губят, когато създавате резервно копие, използвайте звезда вместо катран. звезда работи със същите опции като tar; просто добавя поддръжка за ACL настройки.

Можете също да архивирате ACL с getfacl, който може да бъде възстановен с помощта на командата setfacl. За да създадете резервно копие, използвайте getfacl -R /директория > файл.acls. За да възстановите настройките от архивен файл, използвайте setfacl --restore=file.acl.

Липсата на поддръжка от някои инструменти не би трябвало да е проблем. ACL често се прилагат към директории като структурна мярка, а не към отделни файлове.
Следователно няма да има много от тях, а само няколко, приложени на умни места във файловата система. Следователно възстановяването на оригиналните ACL, с които сте работили, е относително лесно, дори ако вашият софтуер за архивиране не ги поддържа.

Подготовка на файловата система за ACL

Преди да започнете да работите с ACL, може да се наложи да подготвите вашата файлова система да поддържа ACL. Тъй като метаданните на файловата система трябва да бъдат разширени, не винаги има поддръжка по подразбиране за ACL във файловата система. Ако получите съобщение „операция не се поддържа“, когато настройвате ACL за файлова система, вашата файлова система може да не поддържа ACL.

За да коригирате това, трябва да добавите опцията acl монтиране в /etc/fstab, така че файловата система да е монтирана с ACL поддръжка по подразбиране.

Промяна и преглед на ACL настройките с setfacl и getfacl

За да зададете ACL, имате нужда от командата setfacl. За да видите текущите настройки на ACL, трябва getfacl. Екип ls -l не показва никакви съществуващи ACL; той просто показва + след списъка с разрешения, което показва, че ACL се прилагат и към файла.

Преди да настроите ACL, винаги е добра идея да покажете текущите ACL настройки с getfacl. В примера по-долу можете да видите текущите разрешения, както е показано с ls -l, а също както е показано с getfacl. Ако се вгледате достатъчно внимателно, ще видите, че показаната информация е абсолютно същата.

[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

В резултат на изпълнение на командата getfacl по-долу можете да видите, че разрешенията са показани за три различни обекта: потребител, група и други. Сега нека добавим ACL, за да дадем разрешения за четене и изпълнение и на групата за продажби. команда за това setfacl -mg:sales:rx /dir. В този отбор -m показва, че текущите ACL настройки трябва да бъдат променени. След това g:продажби: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 /данни дава разрешения на потребителя linda в директорията /data, без да го прави собственик или да променя присвояването на текущия собственик.

Отбор setfacl има много функции и опции. Една опция е особено важна, параметърът -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 за други. Това обикновено няма много смисъл, защото можете също да промените разрешенията за други хора, които използват коригира. Какво обаче не можете да направите с коригира, е да посочи правата, които трябва да бъдат предоставени на други потребители за всеки нов файл, който някога е бил създаден. Ако искате да попречите на другите да получават разрешения за нещо, създадено в /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. Изпълни getfaclза да сте сигурни, че разрешенията са зададени така, както искате.
  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. Завършено докоснете /data/sales/newfile и прави getfacl /data/sales/newfile за да проверите текущите разрешения.

Задаване на разрешения по подразбиране с umask

По-горе научихте как да работите с ACL по подразбиране. Ако не използвате ACL, има опция за обвивка, която определя разрешенията по подразбиране, които ще получите: Umask (обратна маска). В този раздел ще научите как да промените разрешенията по подразбиране с Umask.

Може да сте забелязали, че когато създавате нов файл, се задават някои разрешения по подразбиране. Тези разрешения се определят от настройката Umask. Тази настройка на обвивката се прилага за всички потребители при влизане. В параметър Umask използва се числова стойност, която се изважда от максималните разрешения, които могат да бъдат автоматично зададени за файла; максималната настройка за файлове е 666, а за директории е 777.

Има обаче някои изключения от това правило. Можете да намерите пълен преглед на настройките Umask в таблицата по-долу.

От числата, използвани в Umask, както в случая с числови аргументи за командата коригира, първата цифра се отнася до разрешенията на потребителя, втората цифра се отнася до разрешенията на групата, а последната се отнася до разрешенията по подразбиране, зададени за другите. Значение Umask стойността по подразбиране 022 дава 644 за всички нови файлове и 755 за всички нови директории, създадени на вашия сървър.

Пълен преглед на всички числени стойности Umask и техните резултати в таблицата по-долу.

Разрешения в Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Лесен начин да видите как работи настройката на umask е както следва: започнете с разрешенията по подразбиране на файла, зададени на 666 и извадете umask, за да получите ефективните разрешения. Направете същото за директорията и нейните разрешения по подразбиране от 777.

Има два начина за промяна на настройката на umask: за всички потребители и за отделни потребители. Ако искате да зададете umask за всички потребители, трябва да се уверите, че настройката umask е взета под внимание при стартиране на файлове на средата на обвивката, както е посочено в /etc/profile. Правилният подход е да създадете shell скрипт, наречен umask.sh в директорията /etc/profile.d, и да посочите umask, който искате да използвате в този shell скрипт. Ако umask се промени в този файл, той се прилага към всички потребители след влизане в сървъра.

Алтернатива на настройката на umask чрез /etc/profile и свързаните файлове, където се прилага за всички влизащи потребители, е да промените настройките на umask във файл, наречен .profile, който се създава в домашната директория на всеки потребител.

Настройките, приложени в този файл, се отнасят само за отделния потребител; следователно това е добър метод, ако имате нужда от повече подробности. Аз лично харесвам тази функция за промяна на umask по подразбиране за root потребителя на 027, докато нормалните потребители работят с umask по подразбиране от 022.

Работа с разширени потребителски атрибути

Това е последният раздел за разрешенията за Linux.

Когато работите с разрешения, винаги има връзка между потребителски или групов обект и разрешенията, които потребителските или груповите обекти имат за файл или директория. Алтернативен метод за защита на файлове на Linux сървър е да работите с атрибути.
Атрибутите вършат работата си независимо от потребителя, който има достъп до файла.

Както при ACL, може да се наложи файловите атрибути да включват опцията монтиране.

Това е вариант user_xattr. Ако получите съобщение „операцията не се поддържа“, когато работите с разширени потребителски атрибути, не забравяйте да зададете параметъра монтиране в /etc/fstab.

Много атрибути са документирани. Някои атрибути са налични, но все още не са внедрени. Не ги използвайте; нищо няма да ти донесат.

По-долу са най-полезните атрибути, които можете да приложите:

A Този атрибут гарантира, че времето за достъп до файла на файла не се променя.
Обикновено всеки път, когато се отваря файл, времето за достъп до файла трябва да бъде записано в метаданните на файла. Това се отразява негативно на производителността; така че за файлове, които са редовно достъпвани, атрибутът A може да се използва за деактивиране на тази функция.

a Този атрибут ви позволява да добавяте, но не и да премахвате файл.

c Ако използвате файлова система, която поддържа компресия на ниво обем, този файлов атрибут гарантира, че файлът е компресиран при първото активиране на механизма за компресиране.

D Този атрибут гарантира, че промените във файловете се записват незабавно на диска, вместо първо да се кешират. Това е полезен атрибут за важни файлове на базата данни, за да се уверите, че няма да се изгубят между файловия кеш и твърдия диск.

d Този атрибут гарантира, че файлът няма да бъде записан в резервни копия, където се използва помощната програма за дъмп.

I Този атрибут позволява индексиране за директорията, в която е активиран. Това осигурява по-бърз достъп до файлове за примитивни файлови системи като Ext3, които не използват базата данни на B-дърво за бърз достъп до файлове.

i Този атрибут прави файла неизменен. Следователно във файла не могат да се правят промени, което е полезно за файлове, които се нуждаят от допълнителна защита.

j Този атрибут гарантира, че във файлова система ext3 файлът първо се записва в дневника и след това в блоковете с данни на твърдия диск.

s Презапишете блоковете, в които е записан файлът, на 0s след изтриването на файла. Това гарантира, че файлът не може да бъде възстановен, след като бъде изтрит.

u Този атрибут съхранява информация за изтриването. Това ви позволява да разработите помощна програма, която работи с тази информация за спасяване на изтрити файлове.

Ако искате да приложите атрибутите, можете да използвате командата бърборене. Например, използвайте chattr +s някакъв файлза прилагане на атрибути към някакъв файл. Трябва да премахнете атрибут? След това използвайте chattr -s някакъв файли ще бъде премахнат. За да получите общ преглед на всички атрибути, които се прилагат в момента, използвайте командата lsattr.

Обобщение

В тази статия научихте как да работите с разрешения. Прочетохте за трите основни разрешения, разширените разрешения и как да приложите ACL на файлова система. Освен това научихте как да използвате опцията umask, за да приложите разрешения по подразбиране. В края на тази статия научихте как да използвате разширени от потребителя атрибути, за да приложите допълнителен слой защита на файловата система.

Ако ви е харесал този превод, моля, напишете за него в коментарите. Ще има повече мотивация да правите полезни преводи.

Коригирани са някои правописни и граматически грешки в статията. Намалени са някои обемисти параграфи в по-малки за по-добра четливост.

Вместо „Само някой с администраторски права за директорията може да приложи разрешение за изпълнение.“ фиксиран на „Само някой с разрешения за запис в директорията може да приложи разрешение за изпълнение.“, което би било по-правилно.

Благодаря за коментарите берез.

Заменени:
Ако не сте собственик на потребителя, обвивката ще провери дали сте член на група, известна още като групата на файла.

До:
Ако не сте собственик на файла, обвивката ще провери дали сте член на група, която има разрешения за файла. Ако сте член на тази група, ще имате достъп до файла с разрешенията, зададени от групата, и черупката ще спре проверката.

Благодаря за коментара Криптопират

Източник: www.habr.com

Добавяне на нов коментар