Я роблю сценарій оболонки bash, і я хочу змінити групу за замовчуванням, для якої створюються нові файли. Я знаю, що ви використовуєте umask
для зміни дозволів. Чи є щось для групи?
Відповіді:
newgrp
Команда використовується для зміни поточного ідентифікатора групи під час сеансу входу.
Нові каталоги, створені за цей сеанс, матимуть ідентифікатор групи, встановлений командою.
newgrp
(1)
Є кілька способів зробити це:
Ви можете змінити групу за замовчуванням для всіх файлів, створених у певному каталозі, встановивши прапорець setgid у каталозі ( chmod g+s _dir_
). Потім будуть створені нові файли в каталозі з групою каталогів (встановлених за допомогою chgrp <group> <dir>
). Це стосується будь-якої програми, яка створює файли в каталозі.
Зверніть увагу, що це автоматично успадковується для нових підкаталогів (станом на Linux 3.10), однак, якщо підкаталоги вже були, ця зміна до них не застосовуватиметься (для цього використовуйте -R
прапор).
Якщо прапорець setgid не встановлено, то для групи за замовчуванням буде встановлено поточний ідентифікатор групи процесу створення. Хоча це можна встановити за допомогою newgrp
команди, це створює нову оболонку, яку важко використовувати в сценарії оболонки. Якщо ви хочете виконати певну команду (або набір команд) зі зміненою групою, використовуйте команду sg <group> <command>
.
sg
не є стандартною командою POSIX, але доступна в Linux.
chmod g+s _dir_
каталог, який має групу y, і ви виконуєте команду під користувачем x, а користувач x не є членом групи y, це не працюватиме. Вам доведеться запустити його як root.