FreeBSD СЧМСЕФУС РТСНЩН РПФПНЛПН BSD UNIX (R) Й ПУОПЧЩЧБЕФУС ОБ ОЕЛПФПТЩИ ЛМАЮЕЧЩИ ЛПОГЕРГЙСИ UNIX (R). ч РЕТЧХА ПЮЕТЕДШ ЬФП, ЛПОЕЮОП, ФПФ ЖБЛФ, ЮФП FreeBSD — НОПЗПРПМШЪПЧБФЕМШУЛБС ПРЕТБГЙПООБС УЙУФЕНБ. ьФП ПЪОБЮБЕФ, ЮФП ОЕУЛПМШЛП РПМШЪПЧБФЕМЕК НПЗХФ ТБВПФБФШ ПДОПЧТЕНЕООП, ТЕЫБС ТБЪМЙЮОЩЕ ЪБДБЮЙ Й УПЧЕТЫЕООП ОЕ НЕЫБС ДТХЗ ДТХЗХ. оБ УЙУФЕНЕ МЕЦЙФ ПФЧЕФУФЧЕООПУФШ ЪБ РТБЧЙМШОПЕ ТБЪДЕМЕОЙЕ Й ХРТБЧМЕОЙЕ ФБЛЙНЙ ТЕУХТУБНЙ ЛБЛ РБНСФШ, РТПГЕУУПТОПЕ ЧТЕНС, РЕТЙЖЕТЙКОЩЕ ХУФТПКУФЧБ Й РТПЮЕЕ.
нОПЗПРПМШЪПЧБФЕМШУЛБС УТЕДБ РТЕДРПМБЗБЕФ ОБМЙЮЙЕ НЕИБОЙЪНБ ТЕЗХМЙТПЧБОЙС РТБЧ ДПУФХРБ Л МАВПНХ ТЕУХТУХ Ч УЙУФЕНЕ. уХЭЕУФЧХЕФ ФТЙ ФЙРБ РТБЧ ДПУФХРБ: ОБ ЮФЕОЙЕ, ЪБРЙУШ Й ЙУРПМОЕОЙЕ. рТБЧБ УЗТХРРЙТПЧБОЩ ФТЙ РП ФТЙ, УППФЧЕФУФЧЕООП ЮФЕОЙЕ/ЪБРЙУШ/ЧЩРПМОЕОЙЕ ДМС ЧМБДЕМШГБ/ЗТХРРЩ/ЧУЕИ ПУФБМШОЩИ. юЙУМЕООПЕ РТЕДУФБЧМЕОЙЕ:
| ъОБЮЕОЙЕ | рТБЧБ ДПУФХРБ | уРЙУПЛ ЖБКМПЧ ЛБФБМПЗБ |
|---|---|---|
| 0 | оЙЮЕЗП ОЕ ТБЪТЕЫЕОП | — |
| 1 | оЕМШЪС ЮЙФБФШ Й РЙУБФШ, ТБЪТЕЫЕОП ЙУРПМОСФШ | —x |
| 2 | оЕМШЪС ЮЙФБФШ Й ЙУРПМОСФШ, ТБЪТЕЫЕОП РЙУБФШ | -w- |
| 3 | оЕМШЪС ЮЙФБФШ, ТБЪТЕЫЕОП РЙУБФШ Й ЙУРПМОСФШ | -wx |
| 4 | тБЪТЕЫЕОП ЮЙФБФШ, ОЕМШЪС РЙУБФШ Й ЙУРПМОСФШ | r— |
| 5 | тБЪТЕЫЕОП ЮЙФБФШ Й ЙУРПМОСФШ, ОЕМШЪС РЙУБФШ | r-x |
| 6 | тБЪТЕЫЕОП ЮЙФБФШ Й РЙУБФШ, ОЕМШЪС ЙУРПМОСФШ | rw- |
| 7 | тБЪТЕЫЕОП ЧУЕ | rwx |
чЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ ПРГЙА -l ЛПНБОДЩ ls (1) ДМС РПМХЮЕОЙС РПДТПВОПЗП МЙУФЙОЗБ ЛБФБМПЗБ, ЧЛМАЮБАЭЕЗП ЛПМПОЛХ У ЙОЖПТНБГЙЕК П РТБЧБИ ОБ ЖБКМ ДМС ЧМБДЕМШГБ, ЗТХРРЩ Й ЧУЕИ ПУФБМШОЩИ. оБРТЙНЕТ, ЛПНБОДБ ls -l Ч РТПЙЪЧПМШОПН ЛБФБМПЗЕ НПЦЕФ ЧЩЧЕУФЙ УМЕДХАЭЕЕ:
чПФ ЛБЛ ЧЩЗМСДЙФ РЕТЧБС ЛПМПОЛБ ЧЩЧПДБ ls -l :
рЕТЧЩК (УЮЙФБС УМЕЧБ) УЙНЧПМ ЗПЧПТЙФ ПВЩЮОЩК МЙ ЬФП ЖБКМ, ЛБФБМПЗ, УЙНЧПМШОПЕ ХУФТПКУФЧП, УПЛЕФ ЙМЙ МАВПЕ ДТХЗПЕ РУЕЧДП-ЖБКМПЧПЕ ХУФТПКУФЧП. ч ОБЫЕН УМХЮБЕ — ХЛБЪЩЧБЕФ ОБ ПВЩЮОЩК ЖБКМ. уМЕДХАЭЙЕ ФТЙ УЙНЧПМБ (Ч ДБООПН УМХЮБЕ ЬФП rw- ) ЪБДБАФ РТБЧБ ДПУФХРБ ЧМБДЕМШГБ ЖБКМБ. ъБФЕН ЙДХФ РТБЧБ ЗТХРРЩ, ЛПФПТПК РТЙОБДМЕЦЙФ ЖБКМ ( r— ). рПУМЕДОСС ФТПКЛБ ( r— ) ПРТЕДЕМСЕФ РТБЧБ ДМС ЧУЕИ ПУФБМШОЩИ. нЙОХУ ПЪОБЮБЕФ ПФУХФУФЧЙЕ ЛБЛЙИ-МЙВП РТБЧ (Ф.Е. ОЕМШЪС ОЙ ЮЙФБФШ, ОЙ РЙУБФШ, ОЙ ЧЩРПМОСФШ). ч ДБООПН УМХЮБЕ РТБЧБ ХУФБОПЧМЕОЩ ФБЛЙН ПВТБЪПН, ЮФП ЧМБДЕМЕГ НПЦЕФ ЮЙФБФШ Й РЙУБФШ Ч ЖБКМ, Б ЗТХРРБ Й ДТХЗЙЕ НПЗХФ ФПМШЛП ЮЙФБФШ. фБЛЙН ПВТБЪПН, ЮЙУМЕООПЕ РТЕДУФБЧМЕОЙЕ РТБЧ 644 , ЗДЕ ЛБЦДБС ГЙЖТБ РТЕДУФБЧМСЕФ ФТЙ ЮБУФЙ РТБЧ ОБ ЖБКМ.
рТБЧБ ОБ ХУФТПКУФЧБ ЛПОФТПМЙТХАФУС БОБМПЗЙЮОЩН ПВТБЪПН. ч FreeBSD ЧУЕ ХУФТПКУФЧБ РТЕДУФБЧМЕОЩ Ч ЧЙДЕ ЖБКМПЧ, ЛПФПТЩЕ НПЦОП ПФЛТЩЧБФШ, ЮЙФБФШ Й РЙУБФШ Ч ОЙИ. ьФЙ УРЕГЙБМШОЩЕ ЖБКМЩ УПДЕТЦБФУС Ч ЛБФБМПЗЕ /dev .
лБФБМПЗЙ ФБЛЦЕ СЧМСАФУС ЖБКМБНЙ. л ОЙН РТЙНЕОЙНЩ ФЕ ЦЕ РТБЧБ ОБ ЮФЕОЙЕ, ЪБРЙУШ Й ЧЩРПМОЕОЙЕ. рТБЧДБ, Ч ДБООПН УМХЮБЕ ЧЩРПМОЕОЙЕ >> ЙНЕЕФ ОЕУЛПМШЛП ДТХЗПК УНЩУМ. лПЗДБ ЛБФБМПЗ РПНЕЮЕО ЛБЛ ЙУРПМОЙНЩК >> , ЬФП ПЪОБЮБЕФ, ЮФП НПЦОП ЪБКФЙ >> Ч ОЕЗП (У РПНПЭША ЛПНБОДЩ cd , change directory). ьФП ФБЛЦЕ ПЪОБЮБЕФ, ЮФП Ч ДБООПН ЛБФБМПЗЕ НПЦОП РПМХЮЙФШ ДПУФХР Л ЖБКМБН, ЙНЕОБ ЛПФПТЩИ ЙЪЧЕУФОЩ (ЛПОЕЮОП, ЕУМЙ УПВУФЧЕООЩЕ РТБЧБ ОБ ЖБКМ ТБЪТЕЫБАФ ФБЛПК ДПУФХР).
еУМЙ ЦЕ ФТЕВХЕФУС РПМХЮЙФШ УРЙУПЛ ЖБКМПЧ Ч ОЕЛПФПТПН ЛБФБМПЗЕ, РТБЧБ ДПУФХРБ ОБ ОЕЗП ДПМЦОЩЕ ЧЛМАЮБФШ ДПУФХР ОБ ЮФЕОЙЕ. дМС ФПЗП, ЮФПВЩ ХДБМЙФШ ЙЪ ЛБФБМПЗБ ЛБЛПК-МЙВП ЖБКМ, ЙНС ЛПФПТПЗП ЙЪЧЕУФОП, ОБ ЬФПФ ЛБФБМПЗ ДПМЦОЩ ВЩФШ ДБОЩ РТБЧБ ОБ ЪБРЙУШ Й ОБ ЙУРПМОЕОЙЕ.
Содержание
4.4.1. уЙНЧПМЙЮЕУЛЙЕ ПВПЪОБЮЕОЙС РТБЧ
уЙНЧПМЙЮЕУЛЙЕ ПВПЪОБЮЕОЙС, ЙОПЗДБ ОБЪЩЧБЕНЩЕ УЙНЧПМЙЮЕУЛЙНЙ ЧЩТБЦЕОЙСНЙ, ЙУРПМШЪХАФ ВХЛЧЩ ЧНЕУФП ЧПУШНЕТЙЮОЩИ ЪОБЮЕОЙК ДМС ОБЪОБЮЕОЙС РТБЧ ОБ ЖБКМЩ Й ЛБФБМПЗЙ. уЙНЧПМЙЮЕУЛЙЕ ЧЩТБЦЕОЙС ЙУРПМШЪХАФ УЙОФБЛУЙУ (ЛФП) (ДЕКУФЧЙЕ) (РТБЧБ), ЗДЕ УХЭЕУФЧХАФ УМЕДХАЭЙЕ ЪОБЮЕОЙС:
| пРГЙС | вХЛЧБ | ъОБЮЕОЙЕ |
|---|---|---|
| (ЛФП) | u | рПМШЪПЧБФЕМШ (User) |
| (ЛФП) | g | зТХРРБ (Group) |
| (ЛФП) | o | дТХЗЙЕ (Other) |
| (ЛФП) | a | чУЕ (All, world >> ) |
| (ДЕКУФЧЙЕ) | + | дПВБЧМЕОЙЕ РТБЧ |
| (ДЕКУФЧЙЕ) | — | хДБМЕОЙЕ РТБЧ |
| (ДЕКУФЧЙЕ) | = | сЧОБС ХУФБОПЧЛБ РТБЧ |
| (РТБЧБ) | r | юФЕОЙЕ (Read) |
| (РТБЧБ) | w | ъБРЙУШ (Write) |
| (РТБЧБ) | x | чЩРПМОЕОЙЕ (Execute) |
| (РТБЧБ) | t | Sticky ВЙФ |
| (РТБЧБ) | s | SUID ЙМЙ SGID |
ьФЙ ЪОБЮЕОЙС ЙУРПМШЪХАФУС ЛПНБОДПК chmod (1) ФБЛ ЦЕ ЛБЛ Й ТБОШЫЕ, ОП У ВХЛЧБНЙ. оБРТЙНЕТ, ЧЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ УМЕДХАЭХА ЛПНБОДХ ДМС ЪБРТЕФБ ДПУФХРБ ДТХЗЙИ РПМШЪПЧБФЕМЕК Л FILE :
дМС ЙЪНЕОЕОЙС ВПМЕЕ ЮЕН ПДОПЗП ОБВПТБ РТБЧ НПЦОП РТЙНЕОЙФШ УРЙУПЛ, ТБЪДЕМЕООЩК ЪБРСФЩНЙ. оБРТЙНЕТ, УМЕДХАЭБС ЛПНБОДБ ХДБМЙФ РТБЧБ ЗТХРРЩ Й ЧУЕИ ПУФБМШОЩИ >> ОБ ЪБРЙУШ Ч FILE , Б ЪБФЕН ДПВБЧЙФ РТБЧБ ОБ ЧЩРПМОЕОЙЕ ДМС ЧУЕИ:
4.4.2. жМБЗЙ ЖБКМПЧ Ч FreeBSD
лТПНЕ ХЦЕ ПРЙУБООЩИ РТБЧ ДПУФХРБ Л ЖБКМБН, FreeBSD РПДДЕТЦЙЧБЕФ ЙУРПМШЪПЧБОЙЕ ЖМБЗПЧ ЖБКМПЧ >> . ьФЙ ЖМБЗЙ ПВЕУРЕЮЙЧБАФ ДПРПМОЙФЕМШОЩК ХТПЧЕОШ ЪБЭЙФЩ Й ЛПОФТПМС ОБД ЖБКМБНЙ, ОП ОЕ НПЗХФ РТЙНЕОСФШУС Л ЛБФБМПЗБН.
ьФЙ ЖМБЗЙ ДПВБЧМСАФ ДПРПМОЙФЕМШОЩЕ ЧПЪНПЦОПУФЙ ЛПОФТПМС ОБД ЖБКМБНЙ, ПВЕУРЕЮЙЧБС (РТЙ ПРТЕДЕМЕООЩИ ХУМПЧЙСИ) ОЕЧПЪНПЦОПУФШ ЙИ ХДБМЕОЙС ЙМЙ ЙЪНЕОЕОЙС ДБЦЕ РПМШЪПЧБФЕМА root .
жБКМПЧЩЕ ЖМБЗЙ ЙЪНЕОСАФУС РТЙ РПНПЭЙ ХФЙМЙФЩ chflags (1) РПУТЕДУФЧПН РТПУФПЗП ЙОФЕТЖЕКУБ. л РТЙНЕТХ, ЮФПВЩ ХУФБОПЧЙФШ УЙУФЕНОЩК РТЙЪОБЛ ОЕХДБМСЕНПУФЙ ОБ ЖБКМ file1 , ЧЩРПМОЙФЕ УМЕДХАЭХА ЛПНБОДХ:
юФПВЩ ПФЛМАЮЙФШ ЖМБЗ ОЕХДБМСЕНПУФЙ, РТПУФП ЧЩРПМОЙФЕ РТЕДЩДХЭХА ЛПНБОДХ У ЛМАЮПН no >> РЕТЕД РБТБНЕФТПН sunlink . чПФ ФБЛ:
юФПВЩ РТПУНПФТЕФШ ЖМБЗЙ ЬФПЗП ЖБКМБ, ЧПУРПМШЪХКФЕУШ ЛПНБОДПК ls (1) У РБТБНЕФТБНЙ -lo :
тЕЪХМШФБФ ЧЩРПМОЕОЙС ЛПНБОДЩ ДПМЦЕО ЧЩЗМСДЕФШ РТЙНЕТОП ФБЛ:
оЕЛПФПТЩЕ ЖМБЗЙ НПЗХФ ВЩФШ ХУФБОПЧМЕОЩ ЙМЙ УОСФЩ У ЖБКМПЧ ФПМШЛП РПМШЪПЧБФЕМЕН root . ч ПУФБМШОЩИ УМХЮБСИ ЬФЙ ЖМБЗЙ НПЦЕФ ХУФБОПЧЙФШ ЧМБДЕМЕГ ЖБКМБ. дМС РПМХЮЕОЙС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ НЩ ТЕЛПНЕОДХЕН ЙЪХЮЙФШ УПДЕТЦЙНПЕ УРТБЧЛЙ РП ЛПНБОДБН chflags (1) Й chflags (2) .
4.4.3. setuid, setgid Й sticky-ВЙФЩ Ч РТБЧБИ ДПУФХРБ
ч ДПРПМОЕОЙЕ Л ТБУУНПФТЕООЩН ЧЩЫЕ РТБЧБН ДПУФХРБ Й ЖМБЗБН ЖБКМПЧ ОЕПВИПДЙНП ФБЛЦЕ ХРПНСОХФШ ЕЭЕ ФТЙ ВЙФБ РТБЧ ДПУФХРБ, П ЛПФПТЩИ ДПМЦОЩ ЪОБФШ ЧУЕ УЙУФЕНОЩЕ БДНЙОЙУФТБФПТЩ. ьФП ФБЛЙЕ ВЙФЩ, ЛБЛ setuid , setgid Й sticky .
ьФЙ ВЙФЩ ЙЗТБАФ ЧБЦОХА ТПМШ Ч ПРТЕДЕМЈООЩИ НПНЕОФБИ ТБВПФЩ UNIX (R), ФБЛ ЛБЛ ПОЙ РТЕДПУФБЧМСАФ ЖХОЛГЙПОБМШОПУФШ, ТБУЫЙТСАЭХА РТБЧБ ПВЩЮОПЗП РПМШЪПЧБФЕМС. юФПВЩ РПОСФШ ЛБЛ ПОЙ ТБВПФБАФ, ОЕПВИПДЙНП ПРТЕДЕМЙФШ ТБЪМЙЮЙЕ НЕЦДХ ТЕБМШОЩН ЙДЕОФЙЖЙЛБФПТПН РПМШЪПЧБФЕМС (UID ) Й ДЕКУФЧХАЭЙН ЙДЕОФЙЖЙЛБФПТПН РПМШЪПЧБФЕМС (effective UID, EUID ).
тЕБМШОЩК UID — ЬФП ЙДЕОФЙЖЙЛБФПТ РПМШЪПЧБФЕМС, ЪБРХУФЙЧЫЕЗП РТПГЕУУ ОБ ЧЩРПМОЕОЙЕ. дЕКУФЧХАЭЙК UID (EUID ) — ЬФП ЙДЕОФЙЖЙЛБФПТ РПМШЪПЧБФЕМС, У ЛПФПТЩН ОБ УБНПН ДЕМЕ ЧЩРПМОСЕФУС РТПГЕУУ. оБРТЙНЕТ, ХФЙМЙФБ passwd (1) ЧП ЧТЕНС УНЕОЩ РБТПМС РПМШЪПЧБФЕМЕН ЪБРХУЛБЕФУС У ТЕБМШОЩН >root . ьФП ФПФ НЕИБОЙЪН, ЛПФПТЩК РПЪЧПМСЕФ ПВЩЮОЩН РПМШЪПЧБФЕМСН ЙЪНЕОСФШ УЧПЙ РБТПМЙ Й РТЙ ЬФПН ОЕ ОБВМАДБФШ ПЫЙВЛХ Permission Denied .
рТЙНЕЮБОЙЕ:
пРГЙС nosuid , ХЛБЪБООБС РТЙ НПОФЙТПЧБОЙЙ ЖБКМПЧПК УЙУФЕНЩ, ПФНЕОСЕФ ДЕКУФЧЙЕ ВЙФПЧ setuid Й setgid . фП ЕУФШ, ХФЙМЙФЩ, ЙУРПМШЪХАЭЙЕ ЬФЙ ВЙФЩ РТБЧ, ПФЛБЦХФУС ЧЩРПМОСФШУС, ДБЦЕ ОЕ ЧЩДБЧ РПМШЪПЧБФЕМА ОЙЛБЛПЗП РТЕДПУФЕТЕЦЕОЙС. л ФПНХ ЦЕ, (У ФПЮЛЙ ЪТЕОЙС ПВЕУРЕЮЕОЙС ВЕЪПРБУОПУФЙ) ЬФБ ПРГЙС НПОФЙТПЧБОЙС ОЕ СЧМСЕФУС БВУПМАФОП ОБДЕЦОПК, ФБЛ ЛБЛ, УПЗМБУОП УФТБОЙГЕ УРТБЧПЮОЙЛБ mount (8) , ОБЛМБДЩЧБЕНЩЕ ЕА ПЗТБОЙЮЕОЙС НПЗХФ ВЩФШ ПВПКДЕОЩ РТЙ РПНПЭЙ ПВЕТФЛЙ >> nosuid ( nosuid wrapper).
вЙФ setuid ХУФБОБЧМЙЧБЕФУС ДПВБЧМЕОЙЕН ГЙЖТЩ ЮЕФЩТЕ (4) РЕТЕД ЮЙУМЕООЩН РТЕДУФБЧМЕОЙЕН РТБЧ ДПУФХРБ, ОБРТЙНЕТ:
фЕРЕТШ РТБЧБ ДПУФХРБ ОБ ЖБКМ suidexample.sh ЧЩЗМСДСФ РПДПВОП УМЕДХАЭЕНХ:
ч ЧЩЫЕРТЙЧЕДЕООПК УФТПЛЕ РТЙНЕФОП ФП, ЮФП Ч РЕТЕЮОЕ РТБЧ ДПУФХРБ ДМС ЧМБДЕМШГБ ЖБКМБ РТЙУХФУФЧХЕФ УЙНЧПМ s , ЛПФПТЩК ЪБНЕОЙМ УПВПК ВЙФ ЧЩРПМОЕОЙС.
юФПВЩ РПУНПФТЕФШ setuid Ч ДЕКУФЧЙЙ, ПФЛТПКФЕ ДЧБ ФЕТНЙОБМБ. оБ ПДОПН ЙЪ ОЙИ ЪБРХУФЙФЕ ЛПНБОДХ passwd У РТБЧБНЙ ПВЩЮОПЗП РПМШЪПЧБФЕМС. рПЛБ ХФЙМЙФБ ЦДЕФ ЧЧПДБ ОПЧПЗП РБТПМС, РТПУНПФТЙФЕ ФБВМЙГХ РТПГЕУУПЧ Й ОБКДЙФЕ Ч ОЕК ЪБРЙУШ П РТПГЕУУЕ passwd .
лБЛ ХЦЕ ВЩМП УЛБЪБОП, ХФЙМЙФБ passwd ЪБРХЭЕОБ У РТБЧБНЙ ПВЩЮОПЗП РПМШЪПЧБФЕМС, ОП ЕЕ ДЕКУФЧХАЭЙК UID — root .
дЕКУФЧЙЕ ВЙФБ setgid РПДПВОП ДЕКУФЧЙА setuid ; ПФМЙЮЙЕ ЪБЛМАЮБЕФУС Ч ФПН, ЮФП ЙЪНЕОСАФУС ОБУФТПКЛЙ РТБЧ ДМС ЗТХРРЩ. лПЗДБ ЧЩРПМОСЕФУС РТЙМПЦЕОЙЕ (ЙМЙ ХФЙМЙФБ) У ХУФБОПЧМЕООЩН ВЙФПН setgid , ФП ЕНХ (ЕК) ВХДХФ ПВЕУРЕЮЕОЩ РТБЧБ Ч УППФЧЕФУФЧЙЙ У ЗТХРРПК ЧМБДЕМШГБ ЖБКМБ, Б ОЕ У ЗТХРРПК РПМШЪПЧБФЕМС, ЪБРХУФЙЧЫЕЗП РТПГЕУУ.
юФПВЩ ХУФБОПЧЙФШ ОБ ЖБКМ ВЙФ setgid , ЧЩРПМОЙФЕ ЛПНБОДХ chmod , ДПВБЧЙЧ ГЙЖТХ ДЧБ (2) РЕТЕД ЮЙУМЕООЩН РТЕДУФБЧМЕОЙЕН РТБЧ ДПУФХРБ, ОБРТЙНЕТ:
оПЧЩК ВЙФ ПФПВТБЦБЕФУС РПДПВОП РТЕДЩДХЭЕНХ УМХЮБА: ПВТБФЙФЕ ЧОЙНБОЙЕ ОБ ОБМЙЮЙЕ s Ч РЕТЕЮОЕ РТБЧ ДПУФХРБ ДМС ЗТХРРЩ:
рТЙНЕЮБОЙЕ:
ч ЬФЙИ РТЙНЕТБИ, ОЕУНПФТС ОБ ФП, ЮФП УГЕОБТЙК ПВПМПЮЛЙ СЧМСЕФУС ЙУРПМОСЕНЩН ЖБКМПН, ПО ОЕ ВХДЕФ ЧЩРПМОСФШУС У ДТХЗЙН ДЕКУФЧХАЭЙН ЙДЕОФЙЖЙЛБФПТПН РПМШЪПЧБФЕМС (EUID ). фБЛ РТПЙУИПДЙФ РПФПНХ, ЮФП УГЕОБТЙСН ЛПНБОДОПЗП ЙОФЕТРТЕФБФПТБ ОЕДПУФХРЕО УЙУФЕНОЩК ЧЩЪПЧ setuid (2) .
рПЪЧПМСС ТБУЫЙТСФШ РТБЧБ РПМШЪПЧБФЕМС, ПВБ ВЙФБ РТБЧ ДПУФХРБ ( setuid Й setgid ) НПЗХФ РТЙЧЕУФЙ Л УОЙЦЕОЙА ВЕЪПРБУОПУФЙ УЙУФЕНЩ. фТЕФЙК ПВУХЦДБЕНЩК ЪДЕУШ ВЙФ — sticky — УРПУПВУФЧХЕФ РПЧЩЫЕОЙА ВЕЪПРБУОПУФЙ УЙУФЕНЩ.
вЙФ sticky , ВХДХЮЙ ХУФБОПЧМЕООЩН ОБ ЛБФБМПЗ, РПЪЧПМСЕФ РТПЙЪЧПДЙФШ ХДБМЕОЙЕ ЖБКМБ ФПМШЛП ЧМБДЕМШГХ ЖБКМБ. ьФПФ ВЙФ РТЙНЕОСЕФУС ДМС РТЕДПФЧТБЭЕОЙС ХДБМЕОЙС ЖБКМПЧ Ч РХВМЙЮОЩИ ЛБФБМПЗБИ, ФБЛЙИ ЛБЛ /tmp , РПМШЪПЧБФЕМСНЙ, ОЕ ЧМБДЕАЭЙНЙ ЖБКМПН. юФПВЩ ЪБДЕКУФЧПЧБФШ ЬФПФ ВЙФ, ДПВБЧШФЕ ЕДЙОЙГХ (1) РЕТЕД ЮЙУМЕООЩН РТЕДУФБЧМЕОЙЕН РТБЧ ДПУФХРБ. оБРТЙНЕТ:
рТПЧЕТЙФШ ТЕЪХМШФБФ НПЦОП РТЙ РПНПЭЙ ЛПНБОДЩ ls :
пФМЙЮЙФЕМШОПК ПУПВЕООПУФША ВЙФБ sticky СЧМСЕФУС ОБМЙЮЙЕ УЙНЧПМБ t Ч УБНПН ЛПОГЕ РЕТЕЮОС РТБЧ.
| рТЕД.љ | оБЧЕТИ | љуМЕД. |
| 4.3. рПМШЪПЧБФЕМЙ Й ПУОПЧЩ ХРТБЧМЕОЙС ХЮЕФОЩНЙ ЪБРЙУСНЙљ | оБЮБМП | љ4.5. уФТХЛФХТБ ЛБФБМПЗПЧ |
рП ЧПРТПУБН, УЧСЪБООЩН У FreeBSD, РТПЮЙФБКФЕ ДПЛХНЕОФБГЙА РТЕЦДЕ ЮЕН РЙУБФШ Ч .
рП ЧПРТПУБН, УЧСЪБООЩН У ЬФПК ДПЛХНЕОФБГЙЕК, РЙЫЙФЕ Ч ТБУУЩМЛХ .
| Руководство FreeBSD | ||
|---|---|---|
| Prev | Chapter 3 Основы UNIX | Next |
FreeBSD является прямым потомком BSD UNIX ® и основывается на некоторых ключевых концепциях UNIX . В первую очередь это, конечно, тот факт, что FreeBSD — многопользовательская операционная система. Это означает, что несколько пользователей могут работать одновременно, решая различные задачи и совершенно не мешая друг другу. На системе лежит ответственность за правильное разделение и управление такими ресурсами как память, процессорное время, периферийные устройства и прочее.
Многопользовательская среда предполагает наличие механизма регулирования прав доступа к любому ресурсу в системе. Существует три типа прав доступа: на чтение, запись и исполнение. Права сгруппированы три по три, соответственно чтение/запись/выполнение для владельца/группы/всех остальных. Численное представление:
| Prev | Home | Next |
| Виртуальные консоли и терминалы | Up | Структура каталогов |
По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в .
По вопросам связанным с этой документацией, пишите .
По вопросам связанным с русским переводом документации, пишите в рассылку .
Информация по подписке на эту рассылку находится на сайте проекта перевода.
Сегодня хочется задеть одну очень скользкую тему: права (и обязанности) на файлы в системах, основанных на Unix.
Сегодня хочется задеть одну очень скользкую тему: права (и обязанности) на файлы в системах, основанных на Unix.
Как всегда, хочется рассказать интересно и не упустить важные моменты. Но многим это просто не надо. Им нужен очередной stackoverflow с ответами, в которые не надо вдумываться… Вжух-вжух и ты ботнет.
Чтобы сменить владельца файлов в директории и во всех поддиректориях (рекурсивно), выполните:
Например, чтобы apache смог в какой-то папке сохранять файлы, выполняем:
Чтобы дать права на чтение файла для всех, выполните:
Чтобы сделать это для всей папки и подпапок (рекурсивно):
Чтобы для всех файлов в папке (рекурсивно) выставить права «владелец может читать и менять, остальные — только читать»:
Чтобы для папки и подпапок (рекурсивно) выставить права «владелец может просматривать содержимое и создавать файлы и папки, остальные — только просматривать»:
Чтобы проверить, что у пользователя есть права, самое простое — зайти под ним:
— прочитать файл / создать файл прямо под этим пользователем.
Ну и самое интересное, что я нашёл в популярных вопросах:
— замените user на имя пользователя (не «Иван Иванович Иванов», а «ivanov»), а «:group» можно не указывать.
А на самом деле…
Файлы в Unix
Начнём с того, что файлы в Unix бывают разные. Идеология «всё есть файл» предполагает, что файлы — не то, чем кажутся.
- Обычный файл — как раз всё то, что мы называем файлом.
- Директория — она же «папка», она же «каталог».
- Символическая ссылка — этакий ярлык на другой «файл».
- Блочное устройство — те же жёсткие диски, флешки.
- Символьное устройство — например, терминалы tty.
- Канал (fifo) — один из вариантов межпроцессорного взаимодействия.
- Unix сокет — ещё один из вариантов межпроцессорного взаимодействия.
Так что даже с понятием «файл» не так уж и просто. Зато есть возможность на всех них единообразно раздавать права, пользоваться ими. Например, можно сделать cat на устройство, echo для записи в сеть и т. д.

Во FreeBSD я успешно делал cat на директорию, правда получал не особо читаемую информацию. Но и её можно было использовать для получения нужной информации о файле типа «каталог».
В особо весёлых Unix-ах, например Plan9 можно использовать вместо интерфейса сокетов файлы типа /net/tcp. В общем, как всегда идеология «всё есть что-то» не имеет границ здравого смысла. И это прекрасно!
Права в Unix
Здесь мы рассмотрим базовую модель прав в Unix (модель дискреционного управления доступом), без всяких расширений типа атрибутов файлов, эффективных прав и прочих липких битов.
Суть модели прав довольно проста:
- У каждого файла есть владелец. Владелец устанавливает права доступа на свои файлы (например, командой chmod).
- В системе есть супер-пользователь (root), который устанавливает владельцев файлов (например, командой chown).
Теперь подробнее по первому пункту.
Доступ по пользователям делится на 3 группы
- Владелец (user) — тот самый, что имеет возможность изменять права доступа.
- Группа (group) — какая-то группа пользователей, которая должна иметь определённые права на файл. Посмотреть группы пользователя можно командой
— пользователь gosha состоит в группах: gosha adm cdrom sudo dip plugdev lpadmin sambashare libvirtd .
С другой стороны можно посмотреть всех пользователей, состоящих в группе:
Не самый элегантный способ, но работает на всех Unix. Также можно использовать утилиты lid и members .
Сами права доступа также делятся на 3 группы
- Права на чтения (read или «4» в битовой маске) — право читать файл или читать содержимое директории.
- Права на запись (write или «2» в битовой маске) — право писать в файл или создавать файлы в директории.
- Право на исполнение (execute или «1» в битовой маске) — право запускать файл (программу, записанную в файле) или переходить по директории вглубь (например, сделать cd в поддиреторию).
Битовая маска прав доступа
Давайте посмотрим права на папку /bin, например, с помощью команды ls -l / | grep bin :
Кроме указанного представления полномочий доступа (символьного), существует так же и числовое представление. Для общего понимания, приведу таблицу соответствия числового (двоичного и десятичного) значения прав доступа и буквенного:
| владелец | группа | остальные | |
| буквенное | rwx | r-x | r-x |
| числовое (десятичное) | 421 | 401 | 401 |
| итоговое (сумма) | 7 | 5 | 5 |
В приведенной таблице показано, что право чтения, соответствует значению 4, право записи — 2, право выполнения — 1, отсутствие права — 0, складывая данные показатели, можно представлять и назначать права в числовом виде. Таким образом, вместо drwxr-xr-x можно написать 755 . Часто можно увидеть именно числовое определение прав доступа — теперь вы понимаете, что это значит.
Часто можно увидеть на файле права 644 — постарайтесь понять, что это значит, чтобы закрепить полученные знания.





