Като начинаещ потребител на Linux, вие научавате за разрешенията и собствеността, свързани с файла и директориите. Операционни системи, подобни на Linux/Unix, ви позволяват да зададете комбинация от девет бита разрешения, за да предотвратите ненужния достъп до файлове/директории на други потребители. Подобни на това са специалните разрешения за изпълними файлове, известни като set UID, set GID и sticky битове.
Разбирането на специалните разрешения може да бъде малко непосилно за амбициозните администратори на Linux. Тук ще научите малко информация за обикновените разрешения за файлове и ще обясните как те се различават от специалните разрешения. Ние също така демонстрираме функционалността на SetID, GetID и лепкави битове с примери за изчерпателно разбиране.
Редовни разрешения за файлове на Linux
Linux използва команда chmod за присвояване/промяна на четене (r=4), пиши (w=2) и изпълнете (x=1) разрешения за файлове и папки. Това означава, че деветте бита, споменати по-горе, се отнасят за трите основни категории групи разрешения. Първите три са за потребителя, който притежава файла, вторият набор е за групата, присвоена на файла/директорията, а последните три представляват всички останали потребители.
Например, в обикновен файл всички типове разрешения за всички категории потребители ще се показват като -rwxrwxrwx. Докато - в замяна на букви представлява липсата на това разрешение. Сега chmod командата използва цифри и букви, за да промени разрешенията, както следва:
sudo chmod 755 файл #за rwxr-xr-x
sudo chmod 644 файл #за rw-r--r--
sudo chmod a-w файл #за r-xr-xr-x
sudo chmod a+x файл #за --x--x--x
Специални разрешения за файлове в Linux
В сетуид bit представлява разрешение за изпълним файл, който може да се изпълнява от други потребители с разрешение на собственика. Например, когато потребителят макс изпълнява командата vi като потребител Джон, ще имате разрешенията за четене/запис на Джон.
За да идентифицирате файлове със setuid, използвайте ls заповядайте и потърсете с бит на мястото на изпълнимия бит х, както следва.
Задайте UID бит
В сетуид bit представлява разрешение за изпълним файл, който може да се изпълнява от други потребители с разрешение на собственика. Например, когато потребителят макс изпълнява командата vi като корен, той ще има разрешенията за четене/запис на корен. За да идентифицирате файлове със setuid, използвайте ls заповядайте и потърсете с бит на мястото на бит за изпълнение х, както следва:
ls -la /etc/passwd
-rwsr-xr-x 1 корен корен 88464 14 декември 12:46 passwd
Някои други примери са:
ls -la /bin/gpasswd
-rwsr-xr-x 1 корен корен 88464 14 юли 15:08 gpasswd
ls -la /bin/su
-rwsr-xr-x 1 корен корен 67816 21 юли 2020 г. su
ls -la /newgrp
-rwsr-xr-x 1 корен корен 44784 14 юли 15:08 newgrp
ls -la /bin/sudo
-rwsr-xr-x 1 корен корен 166056 19 януари 2021 г. sudo
За да зададете бит setuid за изпълними файлове, използвайте командата chmod, както следва:
chmod u+s /etc/passwd
За да премахнете разрешението за изпълнение на файловете от не-root потребители или собственици:
chmod u-s /etc/passwd
Задайте GID бит
Както беше обсъдено, битът set uid контролира достъпа до файлове до други потребители, докато битът setgid (GID) създава съвместни директории. Това означава, че всеки файл, създаден в тази директория, е достъпен за групата на директорията. Следователно той позволява на всички членове на групата да изпълняват изпълними файлове без привилегиите на собственика и ги защитава от други потребители.
Следвайте тези стъпки, за да създадете съвместна директория във вашата Linux система:
Създайте група с помощта на groupadd команда с идентификатор на група 415 за сътрудничество:
groupadd -g 415 администратори
Използвайте командата usermod, за да добавите Джонкъм групата за достъп/изпълнение на файл.
usermod -aG администратори john
Използвай mkdir команда за създаване на директория:
mkdir /tmp/collaborative_dir
Използвай chgrp команда за присвояване на директорията към администратори група:
chgrp администратори /tmp/collaborative_dir
Използвай chmod команда за промяна на разрешението за директория на 2775. 2 бит включва зададения gid, 7 за присвояване на пълен rwx на потребителя и групата, докато 5 (r-w) за други.
chmod 2775 /tmp/collaborative_dir
И накрая, променете потребителския си акаунт на Джон и създайте файл в директорията за сътрудничество, за да проверите разрешенията за файлове.
су - Джон
докоснете /tmp/collaborative_dir/file.txt
Командата su може да ви даде грешка при удостоверяване. В този случай въведете sudo su команда, за да преминете към root и да стартирате отново су - Джон за да промените потребителския акаунт
Сега избройте разрешенията за проверка на GID бит(ите), зададени за директорията и новосъздадения файл.
ls -ld /tmp/collaborative_dir /tmp/collaborative_dir/file.txt
В типичен сценарий, файл, създаден от john, ще има присвоена група john. Тъй като създавате файла в зададена GID битова директория, той присвоява разрешения на администратори група, така че всеки, който принадлежи към групата, да харесва потребителя Крис, ще има достъп до него.Свързани: Как да създавате нови файлове в Linux с помощта на докосване
Залепващи битове
За разлика от SID и GID битовете, sticky битовете се различават по функционалност, тъй като защитават файлове и директории от преименуване и изтриване от други потребители. Редовното разрешение за файл позволява на всеки потребител с достъп за запис да изтрие или преименува файла. Докато с набора sticky bit, това не е възможно, освен ако не сте root потребител или собственик на файла.
Идеалният сценарий за използване на лепкави битове е директорията, достъпна за всички потребители за създаване на файлове. Например, използвайте ls -ld команда за проверка на \tmp разрешения за директория, както следва:
Можете да забележите, че лепкава част т заменя бит за изпълнение х. Следвайте дадения набор от инструкции, за да създадете директория с ограничено изтриване:
Сега създайте друга директория в /tmp папка:
mkdir /tmp/new_dir
Променете разрешенията на файла на 1777 за да настроите лепкавия бит (т) и пълен достъп до директория:
chmod 1777 /tmp/new_dir
Сега копирайте всеки файл от /etc папка към /tmp/new_dir и променете неговите разрешения на 666:
cp /etc/ /tmp/new_dir
chmod 666 /tmp/new_dir/services
Избройте директорията и цялото й съдържание, за да видите разрешения:
ls -ld /tmp/new_dir /tmp/new_dir/services
Можете да забележите лепкавия бит вместо бита за изпълнение, което означава, че само root или потребителят john може да изтрие файла, тъй като файлът е в директорията на sticky bit.
Разбиране на разрешенията за специални файлове в Linux
Статията демонстрира как да настроите тези битове, за да подобрите сътрудничеството върху споделени файлове и директории и да ги защитите от неоторизиран достъп, изпълнение и изтриване. Дори и да не създавате файлове/директории с тези битове, разбирането на специалните разрешения за файлове е полезно в много ситуации, особено при отстраняване на неизправности или като системен администратор. Като има предвид, че неразумното използване на тези битове може да причини различни уязвимости в сигурността.
Искате ли да запазите разрешенията за файлове, докато копирате файлове в Linux? Ето как да го направите с помощта на cp и rsync.
Прочетете Следващото
- Linux
- Управление на файлове
- Linux
Румайса е писател на свободна практика в MUO. Тя е изминала дълъг път от математик до ентусиаст по информационна сигурност и работи като SOC анализатор. Нейните интереси включват четене и писане за нови технологии, Linux дистрибуции и всичко около информационната сигурност.
Абонирайте се за нашия бюлетин
Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!
Щракнете тук, за да се абонирате