Разрешения группы позволяют, но все еще получают разрешение, отклоненное

43

У меня есть раздел ext4, и я установил владельца группы для всех подкаталогов mygroup:

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

Мой пользователь является частью этой группы. Внутри этого раздела находится папка, которой владеет пользователь nobody, а теперь группа mygroup. Мой пользователь является частью mygroup. Вот ls -l:

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

Вы недавно добавили этого пользователя в эту группу, не выходя из системы? Тогда "groups" покажет группу, но у пользователя еще нет прав группы.

Вы можете показать свои эффективные группы, используя

$ id

Например, если я добавлю своего пользователя psв группу, faxа затем введите

$ id

это не показывает группу fax, но

$ groups ps

показывает fax.

Действие suдля вашего собственного пользователя дает вам новую групповую принадлежность:

$ su ps
$ id

Вывод теперь также содержит fax.

peschü
источник
1
Это действительно полезно знать. Особенно часть 'sudo <username>'.
Хаос
4
вход / выход настолько очевиден, что я упустил момент, большое спасибо дружище!
nicolallias
1
@ peschü У меня есть sudoи пользуюсь регулярно. Ошибка, которую я вам показал, жалуется на то, что команда ubuntu(то есть имя пользователя) не является распознанной командой. Я не думаю, что ваше предложение является синтаксически правильным - возможно, оно работает в вашем случае, потому что psслучается также команда, а также имя пользователя.
Бельдаз
1
@beldaz о нет! Вы правы! синтаксически правильно это su <username>. Я редактировал пост.
Песчу
1
блин старый выход / вход снова работают каждый раз.
Steampunkery
9

Метод, который вы использовали, кажется правильным. Я только сейчас попытался повторить это, и это работало просто отлично.

Я не уверен, есть ли опечатка, но есть небольшая проблема с командой. Нет необходимости упоминать там «mygroup». Следующие работы

# chmod -R g+swrx /mount/abc

Даже, вы можете удалить sбит, просто сделайте g+rwx. После того, как вы изменили разрешения, вы ls -lдолжны отобразить соответствующие привилегии.

Вивек Капур
источник
2
Я удалил опечатку с именем группы. Каталог имеет разрешения wrx, ​​когда вы выполняете команду ls -l, и он никем не принадлежит: mygroup. Несмотря на то, что myuser является частью mygroup, 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-ключом / учетными данными.

Figidon
источник
2

Каталоги должны быть установлены x бит (для каталога, который бит рассматривается как поисковый бит), чтобы открыть. Поэтому я использую дерево, чтобы я мог получить только набор папок и избежать кошмара, когда все файлы установлены как исполняемые файлы (опция для дерева есть -d List directories only.):

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

Предупреждение!!! Вы должны иметь это в виду:

  • использование chmod или chown recursive в корневом /каталоге или в системных каталогах разрушит вашу ОС (на самом деле все, что рекурсивно в /каталоге или системных каталогах, опасно)

  • это не очень хорошая практика безопасности, чтобы устанавливать разрешение таким образом

Эдуард Флоринеску
источник
1
Большое спасибо! Слова "Каталоги нужно установить x бит" решили мою проблему! Я сделал "sudo chmod g + x <родительский путь dir>", и это сработало.
кинорнирвана