Управлението на файлови атрибути и разрешения в Linux от терминала е едно от онези умения, които разделят основния потребител от този, който контролира системата. като истински администраторНе става въпрос само за преместване или изтриване на файлове: става въпрос за това кой може да чете, пише, изпълнява, изтрива, компресира или дори възстановява изтрити файлове и как да го направи безопасно и ефикасно.
Ако идвате от Windows или macOS, този свят от разрешения, специални атрибути, странни битове и команди като chmod, chown, chattr или setfacl Може да ви се стори объркващо. Но щом разберете логиката, ще видите, че Linux ви дава невероятен контрол над файловата ви система. Тук ще се научите да я управлявате от нулата до много напреднало ниво, като се фокусирате върху това как да управлявате разрешенията и атрибутите за файлове и директории от терминала като професионалист.
Разрешения в Linux: основата за контрол на вашите файлове
В Linux всеки файл и директория има асоцииран набор от разрешения, които определят кой какво може да правиТази информация е ключова за сигурността и работата на системата, особено в многопотребителски среди или сървъри, където няколко души се свързват едновременно.
Видове разрешения: четене, запис и изпълнение
Всеки файл или папка може да разреши или забрани три основни действия, които са представени с три добре познати букви в Linux: r, wyx.
- r (четене): разрешение за четене. Във файл ви позволява да видите съдържанието му. В директория ви позволява да изброите имената на файловете, които тя съдържа.
- w (пише): разрешение за запис. Във файл позволява промяна на съдържанието му. В директория позволява създаване, преименуване или изтриване файлове вътре.
- x (изпълнение)Разрешение за изпълнение. Във файл позволява изпълнението му като програма или скрипт. В директория позволява... достъп отвътре (въведете с cd и работете с пътищата в него).
Тези разрешения са комбинирани, за да се уточнят значително подробности. нивото на достъп на всеки тип потребител относно даден ресурс.
Типове потребители: собственик, група и други
На всеки запис във файловата система е присвоен собственик потребител и група на собственосттаВъз основа на това, Linux определя три нива на разрешения:
- Собственик (потребител, u)Обикновено потребителят, който е създал файла. Това обикновено е потребителят с най-големи привилегии върху този ресурс.
- Група (група, g)Групата е набор от потребители, които споделят определени разрешения. Групата, която притежава даден файл, определя кои разрешения се споделят от членовете на тази група.
- ДругиВсички останали потребители, които не са нито собственик, нито членове на групата собственици. Техните разрешения обикновено са най-ограничителни, за да се гарантира сигурността.
Комбинирането на тези три роли с разрешенията r и wyx ви позволява да изградите система за достъп много гъвкав и същевременно много безопасен...стига да го конфигурирате разумно.
Как да видите разрешенията и собствениците с ls -l
За да управлявате разрешенията, първата стъпка е да знаете какви разрешения са зададени в момента. Използване на командата ls -l Получавате подробен списък с файлове и директории в текущата директория, включително тип, разрешения, собственик, група и размер.
Пример за изход:
drwxr-xr-x 3 bron bron 4096 may 6 13:19 Descargas
-rw-r--r-- 1 bron bron 512 may 6 12:00 archivo.txt
Първата колона (например, drwxr-xr-x) показва тип и разрешения:
- Първи символ: тип на въвеждане:
- dдиректория
- -нормален файл
- lсимволична връзка и др.
- Следващите 9 героя: три блока от по три, по един за всяка роля:
- Позиции 2-4: разрешения на собственик
- Позиции 5-7: разрешения на група
- Позиции 8-10: разрешения на otros
Например -rwxr-x– Това означава, че файлът е нормален (не е директория), собственикът му има права за четене, запис и изпълнение; групата има права за четене и изпълнение; а останалите имат само права за четене.
chmod: Променя разрешенията като експерт администратор
El основна команда за настройване на разрешенията в Linux es chmod (промяна на режима)С него конфигурирате какво може да прави всеки тип потребител с файл или директория, както със символна нотация (по-четима), така и в осмична нотация (по-компактна и по-бърза).
Основен синтаксис на chmod
Най-лесният общ начин за употреба коригира е:
chmod [opciones] modo archivo_o_directorio
Където той вид Може да се укаже с букви (символично) или цифри (осмично). Освен това можете да добавите опции за промяна на поведението, например:
- -R: приложи промените рекурсивно към всичко, което виси в директория.
- -v: показване на съобщение за всеки променен файл.
- -c: показва промени само във файлове, където нещо действително е било променено.
- -fБезшумен режим; скрива съобщенията за грешки.
chmod с букви: символична нотация
В символичната нотация се използват букви, за да се обозначи Quien получава разрешенията, каква операция ти правиш и какво позволява Играеш. Чудесно е за учене, защото е доста интуитивно.
Роли:
- uсобственик потребител
- gгрупа собственици
- o: други
- aвсички (u, gyo)
Оператори:
- +добавяне на разрешения
- -: премахване на разрешения
- =: задава точно тези разрешения (презаписва предишните)
разрешения:
- rчетене
- wписане
- xизпълнение
Практически примери с използване символичен chmod:
- Дайте пълни разрешения на всички за достъп до файла:
chmod a+rwx archivoDePrueba - Премахнете всички разрешения за „други“ (или):
chmod o-rwx archivoDePrueba - Дайте изпълнение само на собственика:
chmod u+x script.sh
Този подход е много удобен за бърза, фина настройка, където желаете добавяне или премахване на специфични разрешения без да преизчислявам всичко в осмична система.
chmod с числа: осмична нотация
Осмичната нотация се използва най-често в документацията и скриптовете, защото е много компактна. Всяка триада от разрешения (rwx) се преобразува в число между 0 и 7, използвайки двоични стойности.
- R = 4
- w = 2
- х = 1
- Без разрешение ( – ) = 0
За всяка роля (собственик, група, други) сумирате стойностите на разрешенията, които искате да предоставите. Някои типични примери:
- rwx = 4+2+1 = 7
- rw - = 4+2+0 = 6
- rx = 4+0+1 = 5
- г- = 4+0+0 = 4
- - = 0+0+0 = 0
Режимът се изразява като трицифрено число: потребител / група / другиНякои стойности, които ще виждате постоянно:
- 755: потребителски rwx, групови rx, други rx. Много често срещано за директории и скриптове.
- 644: потребител rw-, група r-, други r-. Типично за текстови файлове и документи.
- 700Само собственикът има пълни разрешения; всички останали нямат никакви.
- 666всеки може да чете и пише, но не и да изпълнява.
Примери за употреба на chmod осмичен:
- Дайте всички разрешения на собственика и никакви на всички останали:
chmod 700 archivoDePrueba - Задайте стандартни разрешения за уеб файлове:
chmod 644 index.html - Приложете разрешения към директория и цялото ѝ съдържание рекурсивно:
chmod -R 755 /var/www/mi_sitio
Този метод е особено полезен, когато искате оставете всичко хомогенно (например, цяло дърво на директории със 755/644), без да се налага добавяне или премахване на разрешения едно по едно.
Често срещани рискове при използване на chmod
Основната опасност от работата с коригира Да бъдеш невнимателен означава да се отваряш твърде много. Например, безразборното присвояване на разрешения 777 може да изглежда удобно, но на практика това означава дават пълен достъп на всеки, нещо критично в сървър или която и да е многопотребителска машина.
Лесно е да объркате нещата, ако не помните оригиналните разрешения, защото отмяната на сложни промени без документация може да бъде истинска мъка. Ето защо е добра идея да:
- Избягвайте да използвате 777 с изключение на много специфични и контролирани случаи.
- Използвайте често срещани комбинации като 755/644, освен ако не ви е необходимо нещо друго.
- Запишете или запазете в скрипт разрешенията, които прилагате, за да повторение или обръщане промени.
chown и chgrp: промяна на собственици и групи
В допълнение към разрешенията, всеки файл има собственик и свързана с него групаТе определят кой набор от потребители може да се възползва от определено ниво на разрешения. За да промените това свойство, без да променяте самите разрешения, Linux предлага следните команди: chown y chgrp.
chown: промяна на собственика (и по избор групата)
Con chown Можете да зададете нов собственик на файл или директория. По подразбиране само root потребителят (или някой с подходящи разрешения) може да промени собственика на ресурс, именно от съображения за сигурност.
Основен синтаксис на chown:
chown nuevo_usuario archivo
chown nuevo_usuario:nuevo_grupo archivo
chown -R nuevo_usuario:nuevo_grupo directorio
Типични примери:
- Промяна на собственика на файл (без да се докосва групата):
sudo chown juan reporte.log - Променете собственика и групата на файл наведнъж:
sudo chown juan:ventas informe.xlsx - Приложете промяната рекурсивно към директория и всичко, което тя съдържа:
sudo chown -R www-data:www-data /var/www/mi_web
Тази команда е от съществено значение, когато премествате данни между потребители, мигрирате уебсайтове, променяте структурата на групите или искате системна услуга (като например уеб сървър) да бъде истинският собственик на файловете, които обработва.
chgrp: променя само групата собственик
Командата chgrp Фокусира се върху групата, която притежава файл или директория, оставяйки собственика незасегнат. Това е полезно, когато искате да коригирате какво екип на потребителите споделя достъп до набор от ресурси.
Основен синтаксис:
chgrp nuevo_grupo archivo
chgrp -R nuevo_grupo directorio
Примери:
- Промяна на групата на файл:
sudo chgrp contabilidad balance.csv - Каскадна промяна на група споделени папки:
sudo chgrp -R desarrollo /srv/proyectos - Направете същото с chownизползвайки само групата:
sudo chown :contabilidad balance.csv
Комбинирането на добре обмислени групи и подходящи групови разрешения (ж)Можете да създадете схеми за съвместна работа, при които всеки екип вижда и променя само това, което му съответства.
chattr и lsattr: специални атрибути за защита на файлове
В допълнение към класическите разрешения, файловите системи от тип ext (ext2, ext3, ext4 и др.) ви позволяват да дефинирате специални атрибути на ниво ядро които променят поведението на даден файл или директория при определени операции. За това са командите. бърборене (промяна на атрибути) и lsattr (избройте атрибути).
Тези атрибути не заместват разрешенията, а по-скоро действат върху тях, добавяйки ограничения или допълнителни поведения много мощен, особено на сървъри и критични системи.
Преглед на атрибути с lsattr
Преди да промените каквото и да е, е полезно да знаете какви атрибути има даден файл в момента. Това се прави с помощта на lsattr:
lsattr archivo
lsattr -R directorio
Изходът показва по един ред на файл, с низ от букви и тирета, представляващи различните атрибути. Например:
----i--------e-- config.conf
В този пример, писмото i показва, че файлът е непроменлив; останалите позиции са атрибути, които не са активни (тире).
Промяна на атрибути с chattr
За да зададете или изтриете тези специални атрибути, използвайте бърборенеОбщият синтаксис е:
chattr [opciones] [operación][atributos] archivo_o_directorio
Операцията е обозначена с един от следните символи:
- +добавяне на атрибут
- -премахни атрибут
- =: задава точно тези атрибути (презаписва останалите)
Някои от най-интересните атрибути в Linux системите (особено ext*) са:
- a: можеш само добави (добавяне) в края на файла. Изтриването или презаписването на съществуващо съдържание не е разрешено. Много полезно за лог файлове.
- c: файлът е съхранен сгъстен прозрачно.
- d: изключва архивирането на определени процеси резервно копие (например, игнорирано от dump).
- iНепроменлив файл. Той не може да бъде променян, преименуван, изтриван или свързван, докато този атрибут е активен.
- sСигурно изтриване (на някои системи): При изтриване на файла, блоковете се презаписват, за да се затрудни възстановяването.
- SПромените са написани по начин, който... синхронен, сякаш сте правили синхронизация след всяка промяна.
- u: позволява ви да възстановите съдържанието на файла след изтриване, ако файловата система го поддържа.
Примери за практическо използване на бърборене:
- Маркирайте лог файл, така че да може да расте само в края:
sudo chattr +a /var/log/mi_aplicacion.log - Създайте напълно непроменлив конфигурационен файл:
sudo chattr +i /etc/mi_servicio/config.conf - Премахнете атрибута immutable, за да можете да го редактирате:
sudo chattr -i /etc/mi_servicio/config.conf - Вижте кои файлове в директорията имат зададен специален атрибут:
lsattr /ruta/al/directorio
Имайте предвид, че за да манипулирате атрибути като i o a Ще ви е необходим root достъп и тези настройки може да се прилагат. прекъсване на скриптове или приложения ако не се вземе предвид, че даден файл вече не може да бъде изтрит или променен.
Разширени ACL с setfacl и getfacl

Традиционните разрешения за Linux са базирани на схемата потребител / група / другиВ много случаи това е достатъчно, но има сценарии, в които се нуждаете от нещо по-детайлно, например когато:
- Искате ли да предоставите достъп за четене на няколко конкретни потребители които не споделят група.
- Трябва да дадете на конкретен потребител допълнителни разрешения, без да променяте групата или да засягате разрешенията на другите.
За това са те. ACL (Списъци за контрол на достъпа)които ви позволяват да дефинирате специфични разрешения за конкретни потребители и групи за файлове и директории.
Дефинирайте допълнителни разрешения със setfacl
Командата setfacl Използва се за добавяне, промяна или изтриване на ACL записи във файл или директория. Основният синтаксис е:
setfacl [opciones] regla archivo_o_directorio
Някои много полезни примери за setfacl:
- Предоставяне на достъп за четене и запис на конкретен потребител във файл:
setfacl -m u:ana:rw archivo.txt - Даване на потребителски достъп само за четене до цяла директория (рекурсивно):
setfacl -R -m u:carlos:r /srv/datos_compartidos - Дефинирайте ACL по подразбиране за директория, така че новите файлове да наследяват тези допълнителни разрешения:
setfacl -m d:u:equipo:rwx /srv/proyecto
Правилата следват модела тип:идентификатор:разрешения, където типът може да бъде u (потребител), g (група), od:, за да се посочи, че е ACL по подразбиране, асоцииран с директория.
Запитване до ACL с getfacl
За да видите какъв ACL има даден файл или директория, използвайте getfaclТова е от съществено значение, когато искате да одитирате сложни разрешения или да разберете защо някой може или не може да има достъп до нещо.
Пример за употреба:
getfacl archivo.txt
getfacl /srv/proyecto
Изходът включва както традиционни разрешения, така и допълнителни входни данни, дефинирани чрез ACL. Това ви позволява да откриване на конфликти или правила, за чието съществуване сте забравили.
Специални разрешения: SUID, SGID и bit-sticky
Освен класическия rwx, Linux има три допълнителни механизма за справяне със специални ситуации: SUID, SGID и лепкав битТе се използват главно в системни двоични файлове и споделени директории за по-нататъшно фино настройване на поведението.
SUID (Задаване на UID)
Битът SUID в изпълним файл кара процеса, когато се стартира, да работи с разрешенията на собственик на файл вместо тези на потребителя, който го изпълнява. Това позволява например на обикновен потребител да промени паролата си с passwdкой има нужда да играе / и т.н. / сянка, защитен файл.
В представянето на разрешенията, SUID се появява чрез заместване на x на собственика с s (o S (ако няма бит за изпълнение), например:
-rwsr-xr-x 1 root root ... /usr/bin/passwd
За да го активирате с коригира В осмичната система, една цифра се добавя преди обичайните три. Стойността за SUID е 4:
chmod 4755 binario→ rwxr-xr-x с активен SUID.
Използването на SUID е сложно, защото всеки неуспех в двоичен файл с корен SUID се превръща в потенциално ескалиране на привилегиите.
SGID (Задаване на GID)
El SGID Работи подобно, но приложено към групата. В изпълними файлове, това кара процеса да се изпълнява с файлова групаВ директориите това има особено полезен ефект: файловете, създадени в директория със SGID, наследяват група собственици на директориикоето улеснява съвместната работа.
В изхода за разрешения се показва с s в груповата триада:
drwxr-sr-x 2 root desarrollo ... /srv/proyecto
За да го активирате с chmod octal, стойността на SGID е 2 (първа цифра):
chmod 2755 /srv/proyecto→ директория със SGID и разрешения 755.
Лепкав бит (бит за постоянство)
El лепкаво малко Почти винаги се използва в споделени директории, като например /tmpЕфектът е, че въпреки че всеки има права за запис в директорията, само собственикът на файл (или root) Можете да го изтриете или преименувате. Това е слой защита, който предотвратява изтриването на файлове от потребителите един на друг.
В представянето на разрешенията, то се появява като t в изпълнителната позиция на „други“:
drwxrwxrwt 10 root root ... /tmp
В осмична нотация, лепкавият бит има стойност 1 като първа цифра:
chmod 1777 /carpeta_compartida
Чрез комбиниране на SGID и sticky bit можете да монтирате споделени работни директории, където множество потребители си сътрудничат, но без риска единият да изтрие друг. по погрешка или лоша идея.
Практически препоръки и често срещани рискове
Работата с разширени разрешения и атрибути ви дава огромна власт над системата, но също така отваря вратата към сериозни грешки Ако не се направи внимателно, препоръчително е да се имат предвид някои насоки:
- Избягвайте да използвате коригират 777 освен в строго контролирани и временни проучвания.
- За уеб сървъри типичната конфигурация е:
директории 755 y файлове 644, като потребителят/групата на уеб сървъра са собственици, където е уместно. - За критични конфигурационни файлове, помислете за използването chattr + i за да предотвратите случайни промени, стига да сте сигурни, че можете да ги отмените след това.
- Ако управлявате споделянето чрез Samba или FTP, внимателно проектирайте структурата на потребители, групи и разрешения така че всеки човек да вижда само това, което трябва да вижда.
- Документирайте необичайните промени в разрешенията и атрибутите (SUID, SGID, сложни ACL, chattr) в скриптове или бележки, за да можете Повторете настройките или да го поправите, ако нещо се счупи.
Важно е също да се помни, че всеки достъп до файл изисква ядрото да проверява разрешенията, ACL и всички специални атрибути. В системи с хиляди потребители и милиони файловеПрекалено сложните конфигурации могат да окажат известно влияние върху производителността, въпреки че в повечето домашни и малки и средни предприятия ефектът е приемлив в сравнение с предимствата за сигурност.
Овладяване на команди като ls -l, chmod, chown, chgrp, chattr, lsattr, setfacl и getfaclЗаедно с концепции като SUID, SGID и sticky bit, това ви позволява да трансформирате управлението на разрешенията и атрибутите в прецизен инструмент за контрол на файловата ви система. С добра стратегия за потребители и групи, малко здрав разум и добре усвоени тези команди, можете да настроите фино вашата Linux среда, така че всеки файл да има точно необходимото ниво на достъп: нито повече, нито по-малко. Споделете тази информация, за да могат повече потребители да научат за новата функция.