См. Редактирование ниже, поскольку выясняется, что проблема связана с сопоставлением uid / gid и sid, и показано обходное решение, которое поможет быстрее понять проблему.
У нас есть серверный компьютер Ubuntu 11.04 (назовем его данными), подключенный к домену Windows с помощью инструментов, предоставляемых так же открытый Пока все хорошо, потому что я могу:
Таким образом, компьютер сам понимает, в каких группах домена я состою, и может правильно обрабатывать разрешения.
Но проблема в том, что я хочу получить доступ к файлам из общего ресурса 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, я воспользуюсь ею, чтобы воссоздать вашу проблему и создать новый ответ. Извините за путаницу!