Встановлення стандартного імені користувача та групи для файлів у каталозі


13

Використовуючи цю корисну публікацію, я можу встановити дозволи для групи та файлів за замовчуванням у папці.

У мене виникають проблеми із встановленням власника за замовчуванням (teamlead uid 1234).

setfacl -d -m g::rwx /my/test/folder
setfacl -d -m o::rx /my/test/folder

getfacl /my/test/folder

# file: /my/test/folder
# owner: teamlead
# group: web_prod
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

З цим:

[mary@boxen]# touch /my/test/folder/somefile
[mary@boxen]# ll /my/test/folder/somefile
-rw-rw-r--. 1 mary web_prod 0 Nov  6 08:58 somefile

Отже, призначена права група, але новий файл має право власника на користувача, який створює файл. Я хотів би, щоб новостворені файли мали команду: web_prod owner / group.

Здається, що також setfaclможна встановити користувача за замовчуванням. За допомогою наявної папки acl config (вище):

[mary@boxen]# setfacl -d -m u:1234:rwx /my/test/folder

Тепер створити файл як інший користувач. Я очікую, що він матиме команду: web_prod володіння.

[mary@boxen]# touch /my/test/folder/anotherfile
[mary@boxen]# ll /my/test/folder/anotherfile
-rw-rw-r--+ 1 mary web_prod 0 Nov  6 08:58 somefile

Новий файл все ще має право власника, який створює файл, а не uid 1234 (teamlead).

Це те, що я після навіть можливе, або спосіб, коли я проходжу з цього приводу, неправильний?

Відповіді:


18

За допомогою setfacl можна встановити дозволи за замовчуванням, але не власник / групу за замовчуванням для новостворених файлів.

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

За допомогою setfacl ви можете зробити щось, що майже еквівалентно у більшості сценаріїв. Ви можете встановити такий, як ACL default:user:teamlead:rwx. Таким чином, названий користувач може записати нові файли, навіть якщо хтось ще ним володіє.


Будь ласка, оновіть цю відповідь командою, щоб застосувати 'до замовчування: користувач: teamlead: rwx' до каталогу '/ foo'
user319862

10

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

Що б ви не намагалися робити, вам цього не потрібно. ACL-файлів достатньо для того, щоб те, що потрібно прочитати файл, матиме достатньо дозволів. Залиште файл, який належить користувачеві, який його створив.


"ACL-файлів достатньо для того, щоб те, що потрібно прочитати файл, матиме достатньо дозволів." Помилковий. Група нового файлу буде групою користувача за замовчуванням. Якщо користувачі співпрацюють з різними групами за замовчуванням, ви не зможете отримати доступ до файлів один одного. Вам потрібно setgid, щоб зробити групу батьківської папки "дотримуватися" для всіх дітей.
bviktor

@bviktor Такого ж ефекту можна досягти і за допомогою ACL.
Жил "ТАК - перестань бути злим"

Як вказати власника та групу нових файлів за допомогою ACL?
bviktor

@bviktor Власник - той, хто створює файл, той не змінюється. Група, яка володіє файлом у традиційних дозволах, не має значення. ACL для нових файлів - це типовий ACL для каталогу, аналогічно тому, що група, що володіє новими файлами, є групою, що володіє каталогом із семантикою BSD ( g+s).
Жил "ТАК - перестань бути злим"

@Gilles nope. Група нових файлів буде "початковою групою входу в систему" користувача-творця, а не батьківською папкою. Поведінка, яку ви описуєте (тобто новий файл отримує групу батьківського режиму), потрібно встановити на батьківщині setgid. І група дуже актуальна, тому що, коли користувачі співпрацюють, вони не можуть отримати доступ до файлів один одного, якщо група інша. Якщо ваші файли не доступні у всьому світі, це не зовсім чудова ідея.
bviktor

1

Якщо ви хочете, щоб нові файли були створені з новою групою, вам потрібно змінити основну групу.

Для цього можна використовувати usermod та параметр -g

   -g, --gid GROUP
       The group name or number of the user's new initial login group. The group must exist.
       Any file from the user's home directory owned by the previous primary group of the user will be owned by this new group.
       The group ownership of files outside of the user's home directory must be fixed manually.

напр

test2@kinakuta:/tmp$ id
uid=1002(test2) gid=1002(test2) grupos=1002(test2),1003(testgroup)
test2@kinakuta:/tmp$ touch test2
test2@kinakuta:/tmp$ ls -la test2
-rw-r--r-- 1 test2 test2 0 nov 23 22:26 test2
root@kinakuta:/tmp# usermod -g testgroup test2
root@kinakuta:/tmp# su test2
test2@kinakuta:/tmp$ touch test2_1
test2@kinakuta:/tmp$ ls -la test2_1 
-rw-r--r-- 1 test2 testgroup 0 nov 23 22:27 test2_1

0

В Linux ви повинні мати sgid на батьківський dir, щоб успадкувати групу для файлів. (Хоча вам не потрібен sgid для каталогу в системах BSD.)


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