Назад | Перейти на главную страницу

Linux acls использует неправильный gid для доменных групп, но числовые gid в порядке

См. Редактирование ниже, поскольку выясняется, что проблема связана с сопоставлением uid / gid и sid, и показано обходное решение, которое поможет быстрее понять проблему.


У нас есть серверный компьютер Ubuntu 11.04 (назовем его данными), подключенный к домену Windows с помощью инструментов, предоставляемых так же открытый Пока все хорошо, потому что я могу:

  1. Войдите в систему с учетными данными AD
  2. Установите разрешения для файлов и папок с расширенными ACL, и они заработают. Таким образом, установив разрешение «Администраторы домена» для папки, я могу войти на компьютер с другой учетной записью администратора домена и получить доступ к этой папке.

Таким образом, компьютер сам понимает, в каких группах домена я состою, и может правильно обрабатывать разрешения.

Но проблема в том, что я хочу получить доступ к файлам из общего ресурса samba. Windows, похоже, не понимает, что мы говорим об одних и тех же «администраторах домена» или о любом другом пользователе / ​​группе домена.

подробности

В домашней папке включен acl

Моя доля, поскольку она находится в smb.conf:

[home]
        path = /home/local/MYDOMAIN
        browsable = yes
        guest ok = no
        read only = no
        writeable = yes
        valid users = MYDOMAIN\Administrator, @MYDOMAIN\"Domain Users", @MYDOMAIN\"Domain Admins"
        write list = @MYDOMAIN\"Domain Users", @MYDOMAIN\"Domain Admins"
        nt acl support = yes
        create mask = 700
        directory mask = 700
        hide dot files = yes

Пока все хорошо, я могу получить доступ к общему ресурсу, учитывая, что в папке есть биты разрешений на чтение / выполнение, установленные для «других»

Итак, давайте попробуем получить доступ к test_directory с установленными разрешениями домена. Я удаляю все разрешения unix:

janis.veinbergs@data:/home/local/MYDOMAIN$ whoami
janis.veinbergs
janis.veinbergs@data:/home/local/MYDOMAIN$ id janis.veinbergs
...1319633408(domain^admins)...
janis.veinbergs@data:/home/local/MYDOMAIN$ cd /home/local/MYDOMAIN
janis.veinbergs@data:/home/local/MYDOMAIN$ sudo chown root:root ./test_directory/
janis.veinbergs@data:/home/local/MYDOMAIN$ sudo chmod 700 ./test_directory/

Итак, на машине, если я попробую

ls ./test_directory/

Очевидно, я получаю

ls: cannot open directory ./test_directory/: Permission denied

Итак, я добавляю все разрешения для «Администраторов домена». (Я мог бы пропустить MYDOMAIN \ вещь, потому что MYDOMAIN является доменом по умолчанию для машины)

$ sudo setfacl -m g:MYDOMAIN\\"Domain Admins":rwx ./test_directory/

Я могу делать что-то в каталоге

$ echo "yay" >> ./test_directory/test.txt
$ ls ./test_directory/
test.txt

Пока все хорошо, данные понимают группы домена.

Но если я попытаюсь получить доступ к этой папке на оконная машина (из PowerShell):

PS> whoami
mydomain\janis.veinbergs
PS> gci \\data\home\test_directory
Get-ChildItem : Access to the path '\\data\home\test_directory' is denied.

Теперь из данных я добавлю разрешения для других, чтобы получить доступ к этой папке из Windows:

$ sudo chmod o+rx ./test_directory/

Теперь из окон я вижу файлы:

PS> gci \\data\home\test_directory


    Directory: \\data\home\test_directory


Mode                LastWriteTime     Length Name                                                                                      
----                -------------     ------ ----                                                                                      
-----       2012.02.06.     14:56          4 test.txt  

Теперь я могу просматривать разрешения в окне свойств (локализовано, но вы можете понять)

Интересно, почему он показывает Unix Group \ domain ^ admins, а не MYDOMAIN \ domain ^ admins? Что мне здесь не хватает и как заставить работать?

РЕДАКТИРОВАТЬ: нашел обходной путь

Я нашел обходной путь и возможную причину, но не знаю, как решить. Оказывается, происходит некое неправильное сопоставление между идентификаторами.

Если я ищу сопоставление sid-to-gid с помощью wbinfo для группы MYDOMAIN \ Domain Admins, я обнаруживаю, что сопоставленный unix gid равен 10010. И это, если я устанавливаю разрешения с помощью gid, а не имени, разрешения работают, и окна их понимают:

$ sudo setfacl -m g:10010:rwx ./test_directory/

Когда я перечисляю разрешения в числовой форме, чтобы увидеть gid и sid, я вижу, что когда настройки разрешений, такие как MYDOMAIN \ "Domain Admins", фактически используют другой GID

$ getfacl -n ./test_directory/
# file: test_directory/
# owner: 0
# group: 0
user::rwx
group::r-x
group:10010:rwx  <-- this is the actual GID mapping for MYDOMAIN\\"Domain Admins" group (setfacl -m g:10010:rwx) and it works when browsing share with windows
group:1319633408:rwx <-- this entry is when setting permission like setfacl -m g:MYDOMAIN\\"Domain Admins":rwx
mask::rwx
other::---

Затем я посмотрел на свою конфигурацию idmap в smb.conf:

   idmap domains = ALL
   idmap config ALL:backend = lwicompat_v4
   idmap config ALL:default = yes
   idmap config ALL:readonly = yes
   idmap uid = 10000-33554431
   idmap gid = 10000-33554431

Я вижу, что gid из записи ACL 1319633408 не входит в заданную область. Итак, я попытался расширить область действия до 10000-3355443100, перезапустил smbd, но это все равно не сработало.

Итак, теперь у меня есть обходной путь, чтобы установить разрешения с помощью gid, sid, но это неудобно для пользователя. Что мне делать, чтобы это исправить?

Оказывается, мне еще пришлось установить поддержку likewise-cifs.

Речь шла о выполнении этих команд:

$ /opt/likewise/bin/samba-interop-install --install
$ service smbd restart
$ service winbind restart

Кредиты для Точно так же Open 6 и Samba - лучший файловый сервер с открытым исходным кодом

Теперь при сопоставлении SID-to-GID я возвращаю правильный GID, который также используется вместо короткого 10010:

sudo wbinfo -n "Domain Admins"
<i get long SID: S-...-512>
wbinfo -Y S-...-512
1319633408

Одно предложение: Точно так же Центрифуги не любит кавычки вокруг имен с пробелами. Вместо этого вы должны использовать обратную косую черту, чтобы отметить группу. Итак, когда я ссылаюсь на свою группу Windows Администраторы домена в Debian, используя Likewise Open, я бы написал %Domain\ Admins. Можете ли вы попробовать это и посмотреть, правильно ли он теперь назначает GID?

Обновить:

После хорошего ночного сна я понимаю, что использую не Likewise Open, а их конкурента Centrify Express. Это не голосование одного за другого, а разъяснение для других, которые могли бы прочитать ответ в будущем.

У меня есть запасная машина, на которую я могу установить Likewise Open, я воспользуюсь ею, чтобы воссоздать вашу проблему и создать новый ответ. Извините за путаницу!