Групові дозволи дозволяють, але в дозволі відмовляють


43

У мене є розділ ext4, і я встановив власника групи для всіх підкаталогів для моєї групи:

# chgrp -R mygroup /mount/abc
# chmod -R g+swrx /mount/abc

Мій користувач є частиною цієї групи. Всередині цього розділу знаходиться папка, яка належить користувачеві "ніхто", а тепер групі "моя група". Мій користувач є частиною "моєї групи". Ось л-л:

myuser@host:/mount/abc/folder$ ls -l
drwxr-sr-x 2 nobody      mygroup      4096 Apr 25 12:08 ./
drwxrwsrwx 6 nobody      mygroup      4096 Apr 24 07:57 ../
-rw-r-xr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

myuser@host:/mount/abc/folder$ groups myuser
myuser : mygroup {... a list of other groups also...} 

myuser@host:/mount/abc/folder$ rm test.png 
rm: remove write-protected regular file ‘test.png’? y
rm: cannot remove ‘test.png’: Permission denied

myuser@host:/mount/abc/folder$ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied

Зауважте, що я не можу видалити та створити файл, який належить групі, до якої належить мій користувач.

Я думаю, я не повністю розумію, як працюють групи. Я думав, що якщо ви були частиною групи, то ви успадковуєте дозволи цієї групи. Я щось роблю не так?

Дякую


Схоже, тріада дозволів є світовою групою власників. Вище ви можете побачити drwxr-sr-x для каталогу. Тож дозвіл групи - rs. Схоже, що chmod -R не рекурсивно встановлював дозволи на rwx. Коли я перегортаю шматочок w для отримання групового дозволу на папку, вона працює.
Хаос

Відповіді:


70

Ви нещодавно додали цього користувача до цієї групи, не виходячи з / між? Потім "групи" покажуть групу, але користувач ще не має групових дозволів.

Ви можете показати ефективні групи, використовуючи

$ id

Наприклад, якщо я додаю свого користувача psдо групи, faxа потім введіть

$ id

це не показує групу fax, але

$ groups ps

показує fax.

Здійснення suвласного користувача дає вам нову групову приналежність:

$ su ps
$ id

Зараз вихід також містить fax.


1
Це дійсно корисно знати. Особливо частина "sudo <ім'я користувача>".
Хаос

4
Увійти / вийти настільки очевидно, що я пропустив суть, дякую приятелю!
nicolallias

1
@ peschü У мене є sudoі регулярно його використовую. Помилка, яку я вам показав, скаржиться на те, що команда ubuntu(тобто ім'я користувача) не є розпізнаною командою. Я не вважаю, що ваша пропозиція є синтаксично правильною - можливо, вона працює у вашому випадку, тому що psце, як команда, так і ім’я користувача.
белдаз

1
@beldaz о ні! Ти правий! синтаксично правильно це su <username>. Я відредагував пост.
peschü

1
чорт старого виходу / входу знову працювати щоразу.
Steampunkery

9

Використовуваний вами метод здається правильним. Я тільки зараз спробував це повторити, і це спрацювало чудово.

Я не впевнений, чи є помилка друку, але з командою є невелика проблема. Тут не потрібно згадувати "мою групу". Наступні роботи

# chmod -R g+swrx /mount/abc

Навіть, ви можете видалити sшматочок, просто зробіть g+rwx. Після того, як ви змінили дозволи, і ви зробите ls -lце, воно повинно відображати відповідні привілеї.


2
Я видалив помилку друку з назвою групи. Каталог має дозволи на wrx, ​​коли ви робите ls -l, і ним ніхто не належить: mygroup. Незважаючи на те, що myuser є частиною моєї групи, myuser все ще не може створити / видалити файли. Сподіваюся, це має сенс.
Хаос

3

Ви не можете видалити файл, оскільки група mygroupне має дозволу на запис файлу test.png, а також папки. Для операцій із записом для роботи над файлом дозволи на файл мають виглядати так:

-rw-rwxr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

Якщо ви більш детально подивіться на формат дозволу

duuugggooo

Перші три наповнювачів uuuкористувач г EAD, ш обряді і е х ecute. Наступні три місця gggзаймають групу та oooінші. У цьому фрагменті розмістив OP групи пропускає ж обрядового дозволу.


2

Щоб додати до прийнятої відповіді (оскільки я поки не можу коментувати):

Якщо ви використовуєте програмне забезпечення типу BitVise для створення SSH-з'єднання з вашим сервером, просто закриття та повторне відкриття терміналу не вважатиметься входом і виходом. Він буде робити такі речі , як перезавантажити ~/.bashrc, але НЕ виконати фактичні поновлення групи (якщо ви додали групу в сеансі «вхід»). Щоб це набуло чинності, вам доведеться повністю вийти з системи та увійти знову за допомогою SSH-ключа / облікових даних.


2

Для відкриття каталогів потрібно встановити х біт (для каталогу, який розглядається як біт пошуку). Тому я використовую дерево, щоб я міг отримати лише набір папок і уникнути кошмару, коли всі файли встановлені як виконувані файли (опція для дерева є -d List directories only.):

sudo tree -faid /mount/abc | xargs -L1 -I{} sudo chmod 755  "{}"

Увага!!! Ви повинні це враховувати:

  • використання chmod або chown рекурсивних у кореневому /каталозі чи системних каталогах знищить вашу ОС (фактично все рекурсивне в /каталогах або системних каталогах небезпечно)

  • це не є хорошою практикою безпеки для встановлення такої маси дозволів


1
Щиро дякую! Слова "Довідники потребують х бітовий набір" вирішили мою проблему! Я зробив "sudo chmod g + x <батьківський dir шлях>", і це спрацювало.
kinORnirvana
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.