Що означає GID?


14

Що насправді означає GID?

Я переконав це в Google, і ось що linux.about.com сказав:

Ідентифікаційний номер групи для процесу. Дійсні номери груп наведені в /etc/groupполі /etc/passwdфайлу GID та в GID-полі . Коли процес запускається, його GID встановлюється на GID його батьківського процесу.

  • Але що це означає?

Зараз у мене доступні дозволи для моєї папки 0755

Я розумію, якщо я встановити UID для власника, він буде 4755

І якщо я встановлю GID групи, він буде 2755

Якщо я встановлю Sticky Bit для інших, це буде 1755

  • Чи навіть важливо встановити ці дозволи?

Відповіді:


27

Кожен процес в UNIX-подібна системі, так само як і будь-який файл, має власник (користувач, або реальний або систему «псевдо-користувач», такі як daemon, bin, manі т.д.) і власник групи. Власник групи файлів користувача, як правило, є основною групою користувача, і подібним чином будь-які запущені процеси, як правило, належать вашому ідентифікатору користувача та вашому основного ідентифікатора групи.

Хоча іноді для виконання певних команд необхідно мати підвищені привілеї, але не бажано надавати повні адміністративні права. Наприклад, passwdкоманді потрібен доступ до файлу тіньового пароля системи, щоб він міг оновити ваш пароль. Очевидно, ви не хочете надавати кожному користувачеві права привілеїв, лише щоб вони могли скинути свій пароль - це, безсумнівно, призведе до хаосу! Натомість потрібен інший спосіб тимчасового надання підвищених привілеїв користувачам для виконання певних завдань. Саме для цього потрібні біти SETUID та SETGID. Це спосіб сказати ядру тимчасово підвищити привілеї користувача протягом тривалості виконання позначеної команди. Бінарний код SETUID буде виконуватися з привілеями власника виконуваного файлу (зазвичайroot), і двійковий код SETGID буде виконаний з привілеями групи власника групи виконуваного файлу. У випадку passwdкоманди, яка належить rootта є SETUID, вона дозволяє нормальним користувачам безпосередньо впливати на вміст файлу паролів контрольованим та передбачуваним способом, виконуючи права доступу до root. Є безліч інших SETUIDкоманд на UNIX-подібних системах ( chsh, screen, ping, suі т.д.), всі з яких вимагають підвищених привілеїв для правильної роботи. Також є декілька SETGIDпрограм, де ядро ​​тимчасово змінює GID процесу, щоб дозволити доступ до логінфілів тощо, sendmailє такою утилітою.

sticky bitСлужить дещо інший метою. Найпоширенішим його використанням є забезпечення того, що видалити його може лише обліковий запис користувача, який створив файл. Подумайте про /tmpкаталог. Він має дуже ліберальні дозволи, які дозволяють створювати файли будь-кому. Це добре, і дозволяє процесам користувачів створювати тимчасові файли ( screen, sshі т.д., зберігати інформацію стану в /tmp). Для захисту тимчасових файлів користувача /tmpвстановлено клейкий біт, так що лише я можу видалити свої файли, а лише ви можете видалити свої. Звичайно, root може зробити що завгодно, але ми маємо сподіватися, що sysadmin не збився!

Для звичайних файлів (тобто для невиконаних файлів) мало значення в налаштуванні бітів SETUID / SETGID. SETGID у каталогах деяких систем контролює власника групи за замовчуванням для нових файлів, створених у цьому каталозі.


2
Ах приємно, дякую за це. Отже, Sticky Bit - це як особистий дозвіл (користувача)? Ця відповідь була чітко сформульована і зрозуміла.
Kevdog777

1
Дякую! Клейкий біт забезпечує невеликий захист для файлів у каталозі з ліберальними дозволами. Це не особливо специфічно для даного користувача, оскільки однаковий рівень захисту надається всім файлам, незалежно від того, хто його власник. Це спосіб дозволити будь-кому створювати файли та гарантувати, що лише власник може їх знищити.
D_Bye

+1, D_bye, чи можете ви поділитися прикладом для встановленого жорсткого біта, встановленого в каталозі. Спасибі
Анкіт

1
@Ankit Під Solaris (і майже напевно інші - я використовую лише * BSD та Solaris, хоча), якщо встановлений біт setgid встановлений у каталозі, будь-які нові файли, створені під цим каталогом, матимуть того самого власника групи, що і сам каталог, і не успадкує первинну групу (користувача, який працює) процесу створення.
D_Bye

3

Я думаю, ви маєте на увазі біт файлу "SGID", який не є таким, як його GID.

Ось типовий файл на моєму комп’ютері (вихід ls -l):

-rw-r----- 1 bristol    users 16 2012-07-23 11:36 file.txt
abbbcccddd <-- See explanation below.

Якщо ви подивитеся на перші 10 символів,

(а) -: Це просто звичайний старий файл (на відміну від каталогу, символьної посилання, труби тощо).

(b) rw-: Власник може читати та записувати цей файл, але не виконувати його. Власник - "бристоль", як ви бачите далі у рядку.

(c) r--: члени групи, до якої належить цей файл ("користувачі" у прикладі), крім власника, можуть читати, але не писати та не виконувати цей файл.

(г) ---: хтось інший взагалі не може отримати доступ до цього файлу (крім звичайного root).

Поле GID - це те, що говорить вам, до якої групи належить цей файл - у даному випадку "користувачів".

Поле, яке ви, мабуть, мали на увазі, опираючись на ваш опис, - це біт SGID, і ось краще пояснення, ніж я міг би придумати:

http://www.codecoffee.com/tipsforlinux/articles/028.html

Коротка версія: якщо виконуваний файл має встановлений біт SGID, то той, хто не входить до групи, але може виконати цей файл, тимчасово отримує права цієї групи під час виконання програми.

Наприклад, якщо у вас є група "котушка", яка може читати і записувати файли в каталозі спілера друку, ви не хочете, щоб хтось возився з цим каталогом, але ви хочете, щоб вони могли друкувати файли, ви можете зробити деякі програми друку або скрипт мають групу "золотник" і встановлюють біт SGID, і коли хтось запускає цю програму, програма тепер може записувати в каталог спілера, без того, щоб людина, що працює за ним, отримала повний доступ.


Це добре, дякую за це. Я розумію частину дозволів, (частина abbbcccddd) - але це вам :)
Kevdog777

Я щойно бачив свої дозволи в папці tmp drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp. Що означає abbbcccddt(буква 't')? - я розумію, що "d = каталог", "rwx = читати, писати, виконувати"; але я ніколи не бачив "t" наприкінці. Це спеціальний дозвіл на папку tmp?
Kevdog777

Малий t - "виконуваний (x) і клейкий біт встановлений". Дивіться вище для пояснення, чому це зазвичай у / tmp.
Брістоль

3

GID - це, як ви з’ясували, ідентифікаційний номер групи. Це просто сприятливий спосіб для ОС виразити (користувальницьку) групу, пов'язану з чимось (процесом, файлом тощо); замість потенційно довгого рядкового ідентифікатора він може бути виражений у вигляді фіксованого розміру.

У значенні дозволу для файлу з чотирьох восьмеричних цифр (наприклад, 0755) третя цифра вказує дозволи групи на файл. Якщо ви опустите першу цифру, саме друга цифра визначає дозволи групи. Зауважте, що файли та каталоги в цьому відношенні трактуються однаково, але точне значення кожного біта дозволів дещо не інтуїтивно зрозуміло у випадку каталогів.

Два поняття пов'язані між собою, але служать дуже різним цілям.

Що стосується вашого питання "чи важливо навіть встановити ці дозволи?"; вони завжди встановлені на щось , але оскільки в більшості випадків початкова цифра дорівнює 0 ("нічого особливого"), вона, як правило, для короткості опущена. Чи потрібно вказати якесь інше значення, повністю залежить від схеми використання для відповідного файлу чи каталогу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.