Рейтинг:0

В CentOS 6, как разрешить созданным пользователем файлам наследовать разрешения из их родительского каталога?

флаг bh

Итак, наши серверы настроены следующим образом:
Структура папок

/асик папка нашего грандиозного проекта, /200т является подпроектом этого грандиозного проекта, и папки прямо под /200т такие как / фунт-час личные каталоги каждого работника, работающего над подпроектом. /асик, /200т, / фунт-час все были созданы корень а затем их свойства были перенастроены пользователем root через chmod -R и чоун -R. /асик и /200т принадлежат корень и относится к группам асик и 200т соответственно, в то время как / фунт-час принадлежит учетной записи пользователя работника фунт-час и принадлежит к группе асик.

Идея состоит в том, что содержимое внутри /асик и /200т могут видеть все сотрудники, работающие над асик и 200т но они не могут иметь права на запись в эти 2 каталога — если они хотят что-то создать, им придется делать это в своих собственных каталогах (/ фунт-час и тому подобное). Когда работник создает что-то в своем собственном каталоге, мы хотим, чтобы другие работники того же подпроекта могли прочитать это новое, но не изменить его случайно. Например, фунт-час только что создал файл testbench.v и папка /Результаты под /асик/200т/фунт/ч. Другой человек (глж) на 200т подпроект должен уметь читать /asic/200T/lbh/testbench.v и /asic/200T/lbh/результаты но не писать в них. Если глж хочет изменить их, ему придется скопировать их в свой собственный каталог /asic/200T/glj а затем сделать так.

Для достижения вышеуказанных целей нам нужны разрешения каталогов, созданных фунт-час быть drwxr-s--- и файлы должны быть rwxr-s--- по умолчанию, однако реальность выглядит так:
Файлы и папки, созданные lbh и root

В результате каждый работник может писать в собственные папки и файлы, чего мы и пытаемся избежать. умаск из корень является 0022, и умаск обычных пользователей 0002.

Мои вопросы:

  1. Почему файлы, созданные пользователями (например, / фунт-час) в своих личных каталогах (например, фунт-час) игнорируя drwxr-s--- разрешение личной папки и по умолчанию (d) rwxrwsr-x?
  2. Есть ли безопасный способ разрешить работникам создавать файлы и папки с (d)rwxr-s--- по умолчанию? Попросите каждого пользователя вручную chmod все каждый раз слишком много хлопот, и я обеспокоен тем, что изменение значения по умолчанию умаск значение может привести к новым неожиданные проблемы в будущем.

Большое спасибо!


Редактировать: Структура папок и права доступа к файлам, созданным lbh и root, выглядят следующим образом:

[lbh@<машина> lbh]$ ls -al
всего 16
drwxr-s---. 4 фунта в час 200 т 4096 1 окт 02:40 .
drwxr-sr-x. 4 корень 200T 4096 1 окт 02:18 ..
drwxrwsr-х. 2 lbh 200T 4096 1 окт 02:26 aaa_lbh
drwxr-sr-x.2 корень 200T 4096 1 окт 02:26 aaa_root
-рв-рв-р--. 1 lbh 200T 0 1 окт 02:38 file_lbh.txt
-rw-r--r--. 1 корень 200T 0 1 окт 02:40 file_root.txt
[lbh@<machine> lbh]$ pwd
/асик/200т/фунт/ч
[lbh@<machine> lbh]$ cd ..
[lbh@<machine> 200T]$ ls -al
всего 16
drwxr-sr-x. 4 root 200T 4096 1 окт 02:18 .
drwxr-x---. 3 root asic 4096 1 окт 02:16 ..
drwxr-sr-x. 2 корень 200T 4096 1 окт 02:18 ааа
drwxr-s---. 4 lbh 200T 4096 1 окт 02:40 lbh
[lbh@<machine> 200T] $ pwd
/asic/200T
[lbh@<machine> 200T]$ 

И getfaclрезультаты каталогов и файлов следующие:

[lbh@<машина> Рабочий стол]$ getfacl /asic
getfacl: удаление ведущего '/' из абсолютных путей
# файл: asic
# владелец: корень
# группа: asic
пользователь::rwx
группа::rx
Другие::---

[lbh@<машина> Рабочий стол]$ getfacl /asic/200T/
getfacl: удаление ведущего '/' из абсолютных путей
# файл: asic/200T/
# владелец: корень
# группа: 200T
# флаги: -s-
пользователь::rwx
группа::rx
другое :: г-х

[lbh@<machine> Рабочий стол]$ getfacl /asic/200T/lbh
getfacl: удаление ведущего '/' из абсолютных путей
# файл: asic/200T/lbh
# владелец: lbh
# группа: 200T
# флаги: -s-
пользователь::rwx
группа::rx
Другие::---

[lbh@<machine> Desktop]$ getfacl /asic/200T/lbh/aaa_lbh/
getfacl: удаление ведущего '/' из абсолютных путей
# файл: asic/200T/lbh/aaa_lbh/
# владелец: lbh
# группа: 200T
# флаги: -s-
пользователь::rwx
группа::rwx
другое :: г-х

[lbh@<machine> Desktop]$ getfacl /asic/200T/lbh/aaa_root/
getfacl: удаление ведущего '/' из абсолютных путей
# файл: asic/200T/lbh/aaa_root/
# владелец: корень
# группа: 200T
# флаги: -s-
пользователь::rwx
группа::rx
другое :: г-х

[lbh@<машина> Рабочий стол]$ getfacl /asic/200T/lbh/file_lbh.txt 
getfacl: удаление ведущего '/' из абсолютных путей
# файл: asic/200T/lbh/file_lbh.txt
# владелец: lbh
# группа: 200T
пользователь::rw-
группа::rw-
другое::r--

[lbh@<машина> Рабочий стол]$ getfacl /asic/200T/lbh/file_root.txt 
getfacl: удаление ведущего '/' из абсолютных путей
# файл: asic/200T/lbh/file_root.txt
# владелец: корень
# группа: 200T
пользователь::rw-
группа::r--
другое::r--

[lbh@<машина> Рабочий стол]$ touch hello.txt
[lbh@<машина> Рабочий стол]$ mkdir привет 
[lbh@<машина> Рабочий стол]$ ls -al
всего 12
drwxr-xr-x. 3 lbh lbh 4096 9 окт 17:28 .
drwx------. 36 lbh lbh 4096 9 окт 17:21 ..
-рв-рв-р--. 1 lbh lbh 0 9 окт 17:27 hello.txt
drwxrwxr-х. 2 lbh lbh 4096 9 окт 17:28 привет
[lbh@<машина> Рабочий стол]$ getfacl привет
# файл: привет
# владелец: lbh
# группа: lbh
пользователь::rwx
группа::rwx
другое :: г-х

[lbh@<машина> Рабочий стол]$ getfacl hello.txt 
# файл: привет.txt
# владелец: lbh
# группа: lbh
пользователь::rw-
группа::rw-
другое::r--

[lbh@<машина> Рабочий стол]$ 
Рейтинг:0
флаг za

Linux не поддерживает наследование разрешений, поэтому вы не можете делать то, что задали в теме вопроса.

Лучшее, что вы можете сделать, это установить POSIX ACL по умолчанию который будет применяться ко всем вновь созданным файлам и каталогам. Это не наследование, просто значение по умолчанию:

setfacl -m по умолчанию:пользователь:<имя пользователя>:rwx <каталог>
setfacl -m по умолчанию:группа:<имя группы>:rwx <каталог>

После этого, если кто-либо создаст файл или каталог (если, конечно, им разрешено создавать там объекты), этот объект получит дополнительный ACL. пользователь:<имя пользователя>:rwx и группа:<имя_группы>:rwx. Вы можете установить разрешения по умолчанию для владельца и владельца группы, установив <username> и <groupname> пустой.

Это «по умолчанию» может быть установлено только для каталога, потому что нет смысла применять это к файлам. Разрешения, установленные таким образом, также маскируются с помощью umask, поэтому, если в umask пропущен какой-либо бит, этот бит будет удален из разрешения. Например, когда вы создаете файл, если вы не укажете ему исполняемый бит, он не станет исполняемым (как и ожидалось). Для созданных подкаталогов также будут установлены те же списки ACL «по умолчанию», поэтому для его потомков также будут установлены эти списки ACL. Вы должны удалить или изменить ACL для подкаталогов после создания, чтобы остановить это распространение.

Проверьте ACL с помощью getfacl <каталог>. Конечно, таких значений по умолчанию может быть несколько (и, кажется, в итоге должно получиться несколько правил); по крайней мере, требования, с которыми я сталкивался, всегда требовали наличия как минимум двух групп ACL по умолчанию).


Ты не можем установите «владельцев файлов по умолчанию» таким образом, владелец всегда будет настроен на создание эффективного uid процесса. По умолчанию, group-owner будет настроен на обработку gid, но вы можете изменить это с помощью setgid бит в родительском каталоге:

    chmod g+s <каталог>

после этого любой объект, созданный в этом каталоге, по умолчанию будет копировать свою группу-владельца, даже если создающий пользователь не принадлежит к этой группе. Этот бит setgit распространяется на подкаталоги.

Владельцы могут установить group-owner для любой группы, к которой они принадлежат. Если они не принадлежат к группе, полученной с помощью setgid, они могут изменить свою файловую группу-владельца на любую группу, к которой они принадлежат, но после этого они не смогут изменить ее обратно на значение setgid.


Хочу еще раз особо отметить, что это нет наследование, это установка значений по умолчанию, что не совсем то же самое. Если вы впоследствии что-то измените в родительском объекте, уже созданные объекты всегда сохранят свои разрешения в Linux.

В то время как, например, в Windows, когда вы устанавливаете для списков управления доступом подобъектов значение «наследовать», изменение родительских списков управления доступом повлияет на потомков, что является правильным наследованием.

NoobAdmin avatar
флаг bh
Большое спасибо! Я постараюсь посмотреть, работает ли этот метод достаточно хорошо для нас. Хотя я все еще не понимаю, почему созданные пользователем папки имеют вид drwxrwsr-x? Значение umask 0022 должно сделать его drwxrwxr-x, верно? Так наследуется ли бит gid?
NoobAdmin avatar
флаг bh
Исправление: извините, я имел в виду значение umask 0002 (обычный пользователь), а не 0022 (корень).
Nikita Kipriyanov avatar
флаг za
*ничего* не наследуется. ACL по умолчанию сохраняются как ACL, umask устанавливается как режимы файлов, а затем, если кто-то обращается к файлу, Linux читает оба и вычисляет фактические разрешения.
NoobAdmin avatar
флаг bh
Итак, на моем втором снимке экрана («Файлы и папки, созданные lbh и root») папка «aaa_lbh», созданная lbh, имеет имя drwxrwsr-x вместо drwxrwxr-x, и эта буква «s» присутствует, потому что Linux вычислил как umask lbh, так и ACL родительской папки (/asic/200T/lbh)?
Nikita Kipriyanov avatar
флаг za
Разве «s» не означает «setgid»? Ничего общего с этими масками не имеет. Но я должен признать, что забыл об этой возможности. Это позволяет потомкам получить группу-владельца из каталога вместо gid процесса. Если вы хотите изучить ACL, используйте `getfacl`, он также вычисляет действующие разрешения. И, наконец, все это *текстовая* информация, пожалуйста, не делайте скриншоты, а вместо этого скопируйте и вставьте вывод консоли.
NoobAdmin avatar
флаг bh
Спасибо, я только что обновил свой исходный пост выводами терминала. Новые файлы, созданные ```lbh``` на ```Desktop```, не имеют бита ``setgid```, поэтому кажется, что новые файлы созданы в ```/asic/200T/lbh`` ` имеют флаг ```s```, потому что он есть у родительского каталога.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.