Като начинаещ потребител на Linux, вие научавате за разрешенията и собствеността, свързани с файла и директориите. Операционни системи, подобни на Linux/Unix, ви позволяват да зададете комбинация от девет бита разрешения, за да предотвратите ненужния достъп до файлове/директории на други потребители. Подобни на това са специалните разрешения за изпълними файлове, известни като set UID, set GID и sticky битове.

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

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

Linux използва команда chmod за присвояване/промяна на четене (r=4), пиши (w=2) и изпълнете (x=1) разрешения за файлове и папки. Това означава, че деветте бита, споменати по-горе, се отнасят за трите основни категории групи разрешения. Първите три са за потребителя, който притежава файла, вторият набор е за групата, присвоена на файла/директорията, а последните три представляват всички останали потребители.

instagram viewer

Например, в обикновен файл всички типове разрешения за всички категории потребители ще се показват като -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

Искате ли да запазите разрешенията за файлове, докато копирате файлове в Linux? Ето как да го направите с помощта на cp и rsync.

Прочетете Следващото

Дялтуителектронна поща
Свързани теми
  • Linux
  • Управление на файлове
  • Linux
За автора
Румайса Ниази (Публикувани 3 статии)

Румайса е писател на свободна практика в MUO. Тя е изминала дълъг път от математик до ентусиаст по информационна сигурност и работи като SOC анализатор. Нейните интереси включват четене и писане за нови технологии, Linux дистрибуции и всичко около информационната сигурност.

Още от Rumaisa Niazi

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!

Щракнете тук, за да се абонирате