Разрешения и права в Linux

Колко от нас са имали нужда да „ограничат достъпа“ до файловете, съдържащи се в определена директория / папка, или просто трябва да попречим на някои хора да преглеждат, изтриват или модифицират съдържанието на определен файл? Повече от един, нали? Можем ли да го постигнем в любимия ни пингвин? Отговорът е: Разбира се, да : D.

Въвеждане

Много от нас, които идват от Windows, бяха свикнали да се справят с този "проблем" по много различен начин, за да постигнем тази цел, трябваше да прибегнем до неортодоксални "техники", като скриване на файла чрез неговите атрибути, преместване на нашите информация до най-отдалеченото място на нашия екип (в рамките на 20,000 XNUMX папки), за да се опитаме да разубедим нашия „вражески“ XD, променяйки или премахвайки разширението на файла или най-често срещаните практики, изтеглете програма, която ни позволява да „ затворете “нашата директория зад хубав диалогов прозорец, който ни пита за парола за достъп до нея. Имахме много по-добра алтернатива? Не.

Btrfs
Свързана статия:
Как да монтирате HDD или дялове чрез терминал

Много съжалявам за моите приятели от "Windolero" (казвам го с голяма обич, за да не се обиди някой, нали ?;)), но днес трябва да се науча малко с Windows: P, тъй като ще обясня защо тази операционна система не позволява родна тази функционалност.

Колко от вас са забелязали, че когато седим зад компютър с Windows (дори и да не е наш), ние автоматично ставаме собственици на всичко, което компютърът съдържа (изображения, документи, програми и т.н.)? Какво имам предвид? Е, просто като поемем "контрол над Windows", можем да копираме, преместваме, изтриваме, създаваме, отваряме или модифицираме папки и файлове наляво и надясно, независимо дали сме "собственици" на тази информация или не. Това отразява голям недостатък в сигурността на операционната система, нали? Е, това е всичко, защото операционните системи на Microsoft не са проектирани от самото начало да бъдат многопотребителски. Когато бяха освободени версиите на MS-DOS и някои версии на Windows, те напълно се довериха, че крайният потребител ще бъде отговорен за „охраната“ на съответния им компютър, така че никой друг потребител да няма достъп до информацията, съхранявана в него ... отидете наивни ¬ ¬. Сега приятели на WinUsers, вече знаете защо съществува тази „мистерия“: D.

От друга страна, GNU / Linux, като система, създадена основно за работа в мрежа, сигурността на информацията, която съхраняваме на нашите компютри (да не говорим за сървърите) е от основно значение, тъй като много потребители ще имат или може да имат достъп до част от софтуерните ресурси (както приложения, така и информация) и хардуер, които се управляват на тези компютри.

Сега можем да разберем защо е необходима система за разрешителни? Да влезем в темата;).

Свързана статия:
DU: как да видите 10-те директории, които заемат най-много място

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

Разрешения на собственика.
Групови разрешения.
Разрешения на останалите потребители (или наричани още "останалите").

За да бъдат ясни тези концепции, в мрежовите системи (като пингвина) винаги има фигурата на администратора, суперпотребителя или root. Този администратор отговаря за създаването и премахването на потребители, както и за установяването на привилегиите, които всеки от тях ще има в системата. Тези права се установяват както за директорията HOME на всеки потребител, така и за директориите и файловете, до които администраторът решава, че потребителят има достъп.

Разрешения на собственика

Собственикът е потребителят, който генерира или създава файл / папка в рамките на своята работна директория (HOME) или в друга директория, върху която имат права. Всеки потребител има силата да създава по подразбиране файловете, които иска в рамките на работната си директория. По принцип той и само той ще бъде този, който има достъп до информацията, съдържаща се във файловете и директориите във вашата HOME директория.

Групови разрешения

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

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

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

Много хубаво, но как мога да идентифицирам всичко това? Просто, отворете терминал и направете следното:

$ ls -l

Забележка: Те са малки букви „L“ 

Ще се появи нещо като следното:

Както можете да видите, тази команда показва или "изброява" съдържанието на моя HOME, това, с което си имаме работа са червените и зелените линии. Червеното поле ни показва кой е собственикът, а зеленото показва към коя група принадлежи всеки от изброените преди това файлове и папки. В този случай както собственикът, така и групата се наричат ​​„Персей“, но може и да са срещнали друга група като „продажби“. За останалото не се притеснявайте засега, ще видим по-късно: D.

Видове разрешения в GNU / Linux

Преди да научим как се задават разрешения в GNU / Linux, трябва да знаем как различните видове файлове, които системата може да има, могат да бъдат диференцирани.

Всеки файл в GNU / Linux се идентифицира с 10 символа, които се извикват маска. От тези 10 знака първият (отляво надясно) се отнася до типа файл. Следващите 9, отляво надясно и в блокове от 3, се отнасят до разрешенията, които се предоставят съответно на собственика, групата и останалите или други. Екранна снимка за демонстриране на всички тези неща:

Първият символ на файловете може да бъде следният:

Извинете ме идентифицира
- архив
d указател
b Специален блок файл (специални файлове на устройството)
c Файл със специални знаци (tty устройство, принтер ...)
l Файл с връзка или връзка (мека / символна връзка)
p Канал специален файл (тръба или тръба)

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

Символите, които определят тези разрешения, са следните:

Извинете ме идентифицира
- Без разрешение
r Разрешение за четене
w Пишете разрешение
x Разрешение за изпълнение

Разрешения за файлове

Четене: основно ви позволява да видите съдържанието на файла.
Запис: позволява ви да модифицирате съдържанието на файла.
Изпълнение: позволява на файла да се изпълнява така, сякаш е изпълнима програма.

Разрешения за директория

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

Забележка: Ако нямате разрешение за изпълнение, няма да имаме достъп до тази директория (дори ако използваме командата "cd"), тъй като това действие ще бъде отказано. Той също така позволява да се ограничи използването на директория като част от път (например, когато предаваме пътя на файл, намерен в тази директория като референция. Да предположим, че искаме да копираме файла "X.ogg", който е в папката) "/ home / perseo / Z" -за което папката "Z" няма разрешение за изпълнение-, бихме направили следното:

$ cp /home/perseo/Z/X.ogg /home/perseo/Y/

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

Управление на разрешенията в GNU / Linux

Досега видяхме какво правят разрешенията в GNU / Linux, по-долу ще видим как да присвоите или извадите разрешения или права.

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

<° За файлове: - rw-r-- r--
<° За директории: - rwx rwx rwx

Забележка: те не са еднакви разрешения за всички GNU / Linux дистрибуции.

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

Да вземем за пример файла „Advanced CSS.pdf“. Забележете, че изглежда по следния начин: -rw-r--r-- ... Разширен CSS.pdf. Нека да разгледаме отблизо.

Tipo потребител Група Останалите потребители (други) Име на файла
- rw - r-- r-- Разширен CSS.pdf

Това означава, че:

<° Тип: архив
<° Потребителят може: Прочетете (прегледайте съдържанието) и напишете (променете) файла.
<° Групата, към която принадлежи потребителят, може: Прочетете (само) файла.
<° Други потребители могат: Прочетете (само) файла.

За тези любопитни, които се чудят в момента за какво се отнасят другите полета от списъка, получен от ls -l, ето отговорът:

Ако искате да научите повече за твърдите и меки / символни връзки, тук обяснението и техните diferencias.

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

Възлагане на разрешение

Командата коригира ("Промяна на режима") позволява модифициране на маската, така че да могат да се извършват повече или по-малко операции върху файлове или директории, с други думи, с chmod можете да премахнете или премахнете права за всеки тип потребител. Ако типът потребител, на когото искаме да премахнем, поставим или присвоим привилегии, не е посочен, това, което ще се случи при извършване на операцията, е да повлияе едновременно на всички потребители.

Основното нещо, което трябва да запомните, е, че даваме или премахваме разрешения на тези нива:

Параметър ниво описание
u собственик собственик на файла или директорията
g група група, към която принадлежи файлът
o otros всички други потребители, които не са собственик или група

Видове разрешения:

Извинете ме идентифицира
r Разрешение за четене
w Пишете разрешение
x Разрешение за изпълнение

 Дайте разрешение на собственика да изпълни:

$ chmod u+x komodo.sh

Премахнете разрешението за изпълнение от всички потребители:

$ chmod -x komodo.sh

Дайте разрешение за четене и писане на други потребители:

$ chmod o+r+w komodo.sh

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

$ chmod g+r-w-x komodo.sh

Разрешения в осмичен цифров формат

Има и друг начин за използване на командата chmod, който за много потребители е „по-удобен“, въпреки че априори е малко по-сложен за разбиране ¬¬.

Комбинацията от стойности на всяка група потребители образува осмично число, битът “x” е 20, което е 1, битът w е 21, което е 2, r битът е 22, което е 4, имаме след това:

r = 4
w = 2
x = 1

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

Извинете ме Осмична стойност описание
- - - 0 нямате никакво разрешение
- - x 1 изпълнява само разрешение
- w - 2 пиши само разрешение
- wx 3 писане и изпълнение на разрешения
r - - 4 само разрешение за четене
r - x 5 четене и изпълнение на разрешения
rw - 6 разрешения за четене и запис
rwx 7 всички разрешения се задават, четат, пишат и изпълняват

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

Извинете ме доблест описание
rw- --- -- 600 Собственикът има разрешения за четене и запис
rwx --х --x 711 Собственикът чете, пише и изпълнява, групата и другите само изпълняват
rwx rx rx 755 Собственикът, групата и други за четене, запис и изпълнение могат да четат и изпълняват файла
rwx rwx rwx 777 Файлът може да се чете, пише и изпълнява от всеки
r-- --- -- 400 Само собственикът може да прочете файла, но не може да го модифицира или изпълни и, разбира се, нито групата, нито другите могат да направят нищо в него.
rw-r-- --- 640 Потребителят собственик може да чете и пише, групата може да чете файл, а други не могат да правят нищо

Специални разрешения

Все още има други видове разрешителни за разглеждане. Това са битът за разрешение SUID (Set User ID), битът за разрешение SGID (Set Group ID) и битът sticky (sticky bit).

имащи нужда

Сетуидният бит е присвоен на изпълними файлове и позволява, когато потребителят изпълни споменатия файл, процесът придобива разрешенията на собственика на изпълнения файл. Най-ясният пример за изпълним файл с бита setuid е:

$ su

Можем да видим, че битът е присвоен като "s" в следното улавяне:

За да присвоите този бит на файл, би било:

$ chmod u+s /bin/su

И за да го премахнете:

$ chmod u-s /bin/su

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

setgid

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

За да присвоим този бит, правим следното:

$ chmod g+s /carpeta_compartida

И за да го премахнете:

$ chmod g-s /carpeta_compartida

лепкав

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

За да присвоим този бит, правим следното:

$ chmod o+t /tmp

И за да го премахнете:

$ chmod o-t /tmp

Е, приятели, сега знаете как да защитите по-добре информацията си, с това се надявам да спрете да търсите алтернативи на Lock папка o Папка Пазач че в GNU / Linux изобщо не ни трябват XD.

P.S: Тази конкретна статия беше поискана от съсед на братовчед на приятел XD, надявам се, че отговорих на въпросите ви... 