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


9

Моє запитання схоже на те, як встановити дозволи файлу за замовчуванням на ВСІ новостворені файли в Linux - але це відрізняється важливими способами:

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

Обгрунтування: Довідник, про який йде мова, - це «бункер для прийому» для програми. Користувачі в групі розміщують файли в каталозі, а додаток (працює під іншим ідентифікатором користувача в тій же групі) приймає їх і обробляє їх. Проблема полягає в тому, що власником кожного файлу, розміщеного в каталозі, є користувач, який розмістив його там, і в дозволах за замовчуванням використовується "rw-r - r--"; Я хочу змінити це на "rw-rw ----". Додаток, який робить прийом, не може цього зробити явно, оскільки ідентифікатор користувача, під яким він працює, не має відповідного файлу, а дозволи за замовчуванням не дозволяють програмі chmod у файлі! Очевидно, що користувач міг зробити chmod після розміщення файлу туди, - але я хочу зберегти "крапку" користувачем якомога простіше. (Ці люди не є грамотними для Linux,

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

Будь ласка, порадьте ... спасибі!

Відповіді:


5

Ви можете використовувати ACL (список контролю доступу), щоб встановити дозволи за замовчуванням для файлів у каталозі.

Від man 5 acl:

Якщо ACL за замовчуванням пов'язаний з каталогом, параметр режиму для функцій, що створюють файлові об'єкти, і ACL за каталогом за замовчуванням використовуються для визначення ACL нового об'єкта:

  1. Новий об'єкт успадковує ACL за замовчуванням, що містить каталог, як його ACL доступу.

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

Щоб його налаштувати (відповідно змінити пристрій, каталоги тощо):

Відредагуйте /etc/fstabфайл та додайте aclопцію кріплення.

/dev/mapper/star-home /home ext3  defaults,acl 0 2

Перерахуйте ( сторінка Samba mount.cifsman ) вашої файлової системи шляхом перезавантаження або використання:

mount -o remount,acl /home

Переконайтеся, що у вас є setfaclі getfaclкомунальні послуги.

Встановіть ACL за каталогом за замовчуванням (можливо, вам також знадобиться встановити ACL для існуючих файлів):

$ setfacl -m d:user:george:rwx,d:group:sales-g:rwx,d:group:marketing-g:rwx projections

Додаткову інформацію див. У пов'язаному підручнику.

Джерело: Підручник Частина 1 та Частина 2

Довідка: списки контролю доступу POSIX в Linux


Я не думаю, що ви повинні додавати aclяк параметр mountкоманди, коли ви його додали /etc/fstab. Це буде зайвим, і коли ви виконаєте mountкоманду у своїй відповіді, ви отримаєте такий результат: /dev/vda1 on / type ext4 (rw,errors=remount-ro,acl,acl)(див acl,acl. Наприкінці). Будь ласка, виправте це, якщо я не помиляюся.
its_me

1

Я можу запропонувати вирішення: Створіть окремий каталог "drop", запустіть там окрему міні-роботу, яка фіксує дозволи, а потім переміщує файли в каталог даних програми. Ви можете використовувати incron для цього, щоб практично не було помітної затримки в часі.


1

Я можу придумати чотири можливі методи цього:

  • umask, яким ви не хочете користуватися
  • обгортка програми, яка встановлює умаск програми, а не користувача
  • cron, як описав @Peter Eisentraut; find $HOME/intake -type f -exec chmod 660 {} \;, різні системи мають покращення продуктивності щодо цього (як -exec+опція)
  • Налаштування на базі каталогів, для яких потрібно виконати трохи програмування оболонок, але в основному оболонка при встановленні запиту або виклику CD змінює umask, якщо в цьому каталозі є файл крапок (або, можливо, каталог предків); для bash, PROMPT_COMMAND='test -s $PWD/.umask && umask $(cat $PWD/.umask)'";$PROMPT_COMMAND"було б найпростішим.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.