Яка мета setgid каталогу?


12

Я знаю, як працює setgid, але я не знаю, для чого він створений, чи є приклад, який ілюструє, які проблеми він вирішує?

Відповіді:


19

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


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

Так, ви маєте рацію, інші користувачі можуть ділитися (читати) файли, створені вами в заданих каталогах, але дозволені для запису групи (g + w) не успадковуються у встановленому каталозі setgid, і, отже, інший користувач не може додавати до суб- створений вами каталог у setgid каталозі, це обмежило його використання. І тому у мене виникає це питання, воно вирішує проблему з читанням публікацій CVS, але не записує в новостворені каталоги. ??
Xiè Jìléi

1
Ось чому ви також хочете використовувати відповідні налаштування umask. Наприклад, umask 007 залишив би повний дозвіл для користувачів та групи, але жоден для інших.
andol

13

Основне використання - збереження власника групи дерева файлів:

[lockie@bubbles tmp]$ mkdir dir1 && touch dir1/file && mkdir dir1/dir
[lockie@bubbles tmp]$ mkdir dir2 && chgrp staff dir2 && chmod 2755 dir2 && touch dir2/file && mkdir dir2/dir
[lockie@bubbles tmp]$ ls -al dir1
total 32
drwxrwxr-x   3 lockie  lockie   4096 Dec 13 19:32 .
drwxrwxrwt 125 root root 20480 Dec 13 19:32 ..
drwxrwxr-x   2 lockie  lockie   4096 Dec 13 19:32 dir
-rw-rw-r--   1 lockie  lockie      0 Dec 13 19:32 file
[lockie@bubbles tmp]$ ls -al dir2
total 32
drwxr-sr-x   3 lockie  staff  4096 Dec 13 19:32 .
drwxrwxrwt 125 root root  20480 Dec 13 19:32 ..
drwxrwsr-x   2 lockie  staff  4096 Dec 13 19:32 dir  < note new dir is g+s, owned by "staff" group, so the setgid behaviour acts recursively
-rw-rw-r--   1 lockie  staff     0 Dec 13 19:32 file < note new file is owned by "staff" group
[lockie@bubbles tmp]$

Це, як правило, корисно в середовищах, коли різні користувачі створюватимуть / редагуватимуть файли / dirs під каталогом: Коли всі файли / dirs діляться однією групою, усі користувачі можуть редагувати / змінювати файли / dirs (дозволи дозволяють): Це дозволяє уникнути ситуацій наприклад "xyz володіє файлом abc, тому я не можу його редагувати".

Альтернативою використанню setgid таким чином є опція кріплення жорстокої файлової системи.

Від людини кріплення:

грубі або bsdgroups / nogrpid або sysvgroups

Ці параметри визначають, який ідентифікатор групи отримує новостворений файл. Коли встановлено grpid, він бере груповий ідентифікатор каталогу, в якому він створений; в іншому випадку (за замовчуванням) він приймає fsgid поточного процесу, за винятком випадків, коли в каталозі встановлено встановлений біт setgid, і в цьому випадку він бере gid з батьківського каталогу, а також отримує встановлений біт setgid, якщо це сам каталог.

Якщо це ввімкнено, файли / dirs, створені в жорстокій файловій системі, також успадковують групу батьківського каталогу:

[lockie@bubbles ~]$ mount | grep /home
/dev/mapper/VolGroup00-home on /home type ext3 (rw,grpid)
[lockie@bubbles ~]$ mkdir dir3 && touch dir3/file && mkdir dir3/dir
[lockie@bubbles ~]$ ls -al dir3
total 12
drwxrwxr-x  3 lockie users 4096 Dec 13 19:37 .
drwxrwxr-x 12 lockie users 4096 Dec 13 19:37 ..
drwxrwxr-x  2 lockie users 4096 Dec 13 19:37 dir < inherited "users" group from parent dir
-rw-rw-r--  1 lockie users    0 Dec 13 19:37 file  < inherited "users" group from parent dir
[lockie@bubbles ~]$

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

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