Почему пользователь добавляется только в одну группу за раз?

1

У меня ограниченные познания в системах Linux, поэтому я не могу их использовать :) Я пытаюсь добавить Apache и пользователя, вызываемого adminв одну группу в CentOS. При запуске id adminя получаю группы 1000 (apache) и группу 1002 (admin), при запуске id apacheя получаю группы 1000 (apache) и 1003 (access).

Я вижу, что они оба являются членами группы 1000 (apache), но когда я пытаюсь добавить администратора в группу 1003 (доступ) через usermod -G access admin, он по какой-то причине удаляет администратора из группы apache (поэтому, когда я запускаю 'id admin' Я получаю группы 1002 и 1003, но они больше не входят в список 1000).

Есть ли ограничение на количество групп, членом которых может быть пользователь? Если нет, то как мне поместить их в одну группу?

Моя проблема связана с проблемами прав доступа - например, в определенной папке, которая принадлежит «admin», когда я пытаюсь создать новый каталог или загрузить файл с правами администратора, я могу это сделать. Однако, когда я пытаюсь сделать это с помощью пользователя apache, я не могу.

Изменить: вывод для getfacl:

getfacl: Removing leading '/' from absolute path names
# file: home/admin/domains/xxx/public_html/xxx/xxx
# owner: apache
# group: apache
user::rwx
user:apache:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:apache:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

14 апреля редактировать:

getfacl: Removing leading '/' from absolute path names
# file: home/admin/domains/public_html/xxx/xxx
# owner: apache
# group: apache
user::rwx
user:admin:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:admin:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
MAR
источник

Ответы:

3

Мар, как я всегда отвечал на твой предыдущий вопрос , тебе не нужно добавлять пользователей в какие-либо группы, чтобы получить доступ к файлам в определенной папке и ее подпапках, потому что POSIX ACL вполне достаточно для решения таких проблем.

Используйте команду ниже:

setfacl -Rm d:u:apache:rwX,u:apache:rwX /path/to/your/folder

Отныне пользователь apache (и admin) может делать все, что он хочет, в этой папке и ее подпапках, но больше никому.

-Rm R ecursively м odify списки управления доступом

u: apache: rwX Установить ACL для пользователя apache для существующих файлов и (вложенных) папок начальной папки

d: u: apache: rwX Установить ACL для пользователя apache для вновь создаваемых файлов и (вложенных) папок

Вы можете удалить все дополнительные ACL в любое время, используя

setfacl -Rb /path/to/your/folder
Олег Болден
источник
Какие файловые системы поддерживают ACL? Страница руководства говорит, что она «возится» с битами разрешений на неподдерживаемых FS, а затем
выдает
Я протестировал и использовал его для ext4.
Олег Болден
@OlegBolden Спасибо за помощь, однако после выполнения этой команды я все еще не могу создать папки в этой конкретной папке, когда я вошел в DirectAdmin с пользователем admin ...?
MAR
Покажите мне вывод дляgetfacl /your_folder
Олег Болден
1
Удалите все ACL с помощью setfacl -Rb /your/folderкоманды и введите эту команду для доступа администратора.setfacl -Rm d:u:admin:rwX,u:admin:rwX /path/to/your/folder Кроме того, вам не нужно писать атрибут для группы apache этой папки. Сбрось это используя chmod g-w /your/folder.
Олег Болден
4

Когда я добавляю admin в группу доступа, он удаляет admin из группы apache

usermod -G access admin

Вы не используете usermodправильно.

Если пользователь в настоящее время является членом группы, которой нет в списке, он будет удален из группы . Это поведение можно изменить с помощью параметра -a, который добавляет пользователя в текущий список дополнительных групп.

Используйте следующую команду:

usermod -G access, apache admin

Или же:

usermod -a -G access admin

usermod (8) - справочная страница по Linux

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
           A list of supplementary groups which the user is also a member
           of. Each group is separated from the next by a comma, with no
           intervening whitespace. The groups are subject to the same
           restrictions as the group given with the -g option.

           If the user is currently a member of a group which is not listed,
           the user will be removed from the group. This behaviour can be
           changed via the -a option, which appends the user to the current
           supplementary group list.

Source usermod (8) - справочная страница по Linux

ДэвидПостилл
источник
usermod -a -G access adminсделал свое дело. Спасибо!
МАР
Это общий комментарий. Когда вы изменяете группу пользователей, вы должны перечислить все группы, членами которых вы хотите их видеть, в противном случае команда предполагает изменение группы пользователей. Именно поэтому страница руководства по команде и синтаксис команды иллюстрируют именно это. Я понимаю, что ответ указывает на все это, просто подумал, что стоит отметить его ожидаемое поведение.
Ramhound