Добрый день, в продолжении обсуждения задачи "организация автоматически подключаемой папки пользователя домена" хочу дать дополнительные пояснения и сообщить новости по отношению к предыдущему обсуждению: https://lists.altlinux.org/pipermail/sysadmins/2021-July/038358.html
Кратко. Если для решения задачи подключения сетевых каталогов не требуется явное монтирование через cifs, а достаточно доступа по UNC-путям (в linux по протоколу smb:// доступно в любом, практически, файловом менеджере), то достаточно раскидать каждому пользователю свой ярлычок со ссылкой на сетевой каталог в формате: smb://ИМЯ_СЕРВЕРА/ИМЯ_ШАРЫ/ПУТЬ_ШАРЕ. Строго говоря, управление ярлычками называется не политикой, а предпочтением (или Настройкой в русском переводе утилиты редактирования шаблона групповой политики в RSAT), поскольку, по-первых, такие изменения в конфигурации невозможно откатить (они как татуировки - несмываемые), а во-вторых - потому что такие изменения невозможно запретить изменять. Ну, можно как-то на уровне файлового доступа что-то накрутить, конечно. Но не для всех задач это подходит. Итого, в качестве решения для раскидывания каждому пользователю "своего" ярлычка с именем пользователя в качестве имени шары (домашнего каталога на файловом сервере samba), я предлагал использовать групповые политики в ALT (пакет alterator-gpupdate для поддержки на клиентах) со ссылкой для ярлычок в формате (см. https://drive.google.com/uc?export=view&id=1eeBu49ju9Le1XeIrrtWFrZxBgSjvj6fk): smb://SAMBA_SERVER/%LogonUser% Данное решение в тот момент требовало доработки нашего инструмента применения групповых политик. Хочу сообщить, что необходимая доработка была успешно внесена в релизе gpupdate-0.9.2, пересобрана и включена в бранч p9: - https://github.com/altlinux/gpupdate/releases/tag/0.9.2-alt1 - http://git.altlinux.org/gears/g/gpupdate.git Детали по поводу управления ярлыками через групповые политики можно уточнить у нас на wiki: https://www.altlinux.org/Групповые_политики/Управление_ярлыками В качестве примера нас на wiki приводится пример машинной политики для создания ярлыка: {GUID GPT}/Machine/Preferences/Shortcuts/Shortcuts.xml Приведу другой похожий пример, которым можно воспользоваться даже не разворачивая RSAT под Windows, чтобы попробовать: <?xml version="1.0" encoding="utf-8"?> <Shortcuts clsid="{872ECB34-B2EC-401b-A585-D32574AA90EE}"> <Shortcut clsid="{4F2F7C55-2790-433e-8127-0739D1CFA327}" userContext="1" name="Точка SSH" status="Точка SSH" image="1" changed="2021-08-03 16:35:50" uid="{033064C7-140C-4371-9709-2089D718A196}"> <Properties pidl="" targetType="FILESYSTEM" action="R" comment="" shortcutKey="0" startIn="" arguments="" iconIndex="0" targetPath="%HOME%/.ssh" iconPath="ssh" window="" shortcutPath="%DesktopDir%\Точка SSH"/> </Shortcut> </Shortcuts> В новом релизе была внесена доработка, позволяющая раскрывать подстановки не только для файла самого ярлыка (shortcutPath), но и для пути, на который он ссылается (targetPath). Таким образом, для рассматриваемой задачи следует создать пользовательскую политику: {GPT}/User/Preferences/Shortcuts/Shortcuts.xml где следует указать shortcutPath="%DesktopDir%\Документы на сервере" и targetPath="smb://server.my.domain/%LogonUser%" при этом на samba сервере должна быть включена шара [homes], а пользователь должен, например, хотя бы раз залогинится, чтобы у него существовал домашний каталог на samba-сервере. Можно этот каталог создать вручную админом, задав ему владельца и группу. Создаём объект групповой политики. # kinit DOMAIN_ADMIN # samba-tool gpo create "Home shares on server policy" -k yes Using temporary directory /tmp/.private/root/tmpjreop66v (use --tmpdir to change) Password for [[email protected]]: GPO 'Home shares on server policy' created as {06975BC5-8858-44B0-934C-10D550877476} Проверяем, создался ли к нему каталог с шаблоном групповой политики (GPT): # ls -t /var/lib/samba/sysvol/*/Policies | head -1 {06975BC5-8858-44B0-934C-10D550877476} Важно помнить про то, что расширенные права на файлы в каталоге GPT имеют существенное значение для целостности инфраструктуры. Как минимум для того, чтобы компьютеры могли получить доступ к соответствующим файлам в сетевом каталоге SysVol. # getfacl /var/lib/samba/sysvol/*/Policies/{06975BC5-8858-44B0-934C-10D550877476} getfacl: Removing leading '/' from absolute path names # file: var/lib/samba/sysvol/domain.alt/Policies/{06975BC5-8858-44B0-934C-10D550877476} # owner: DOMAIN\\domain\040admins # group: DOMAIN\\domain\040admins user::rwx user:NT\040AUTHORITY\\system:rwx user:NT\040AUTHORITY\\authenticated\040users:r-x user:DOMAIN\\enterprise\040admins:rwx user:NT\040AUTHORITY\\enterprise\040domain\040controllers:r-x group::rwx group:NT\040AUTHORITY\\system:rwx group:NT\040AUTHORITY\\authenticated\040users:r-x group:DOMAIN\\domain\040admins:rwx group:DOMAIN\\enterprise\040admins:rwx group:NT\040AUTHORITY\\enterprise\040domain\040controllers:r-x mask::rwx other::--- default:user::rwx default:user:NT\040AUTHORITY\\system:rwx default:user:NT\040AUTHORITY\\authenticated\040users:r-x default:user:DOMAIN\\domain\040admins:rwx default:user:DOMAIN\\enterprise\040admins:rwx default:user:NT\040AUTHORITY\\enterprise\040domain\040controllers:r-x default:group::--- default:group:NT\040AUTHORITY\\system:rwx default:group:NT\040AUTHORITY\\authenticated\040users:r-x default:group:DOMAIN\\domain\040admins:rwx default:group:DOMAIN\\enterprise\040admins:rwx default:group:NT\040AUTHORITY\\enterprise\040domain\040controllers:r-x default:mask::rwx default:other::--- # smbcacls //dc0/sysvol domain.alt/Policies/{06975BC5-8858-44B0-934C-10D550877476} -k yes REVISION:1 CONTROL:SR|PD|DP OWNER:DOMAIN\Domain Admins GROUP:DOMAIN\Domain Admins ACL:DOMAIN\Domain Admins:ALLOWED/OI|CI/FULL ACL:DOMAIN\Enterprise Admins:ALLOWED/OI|CI/FULL ACL:CREATOR OWNER:ALLOWED/OI|CI|IO/FULL ACL:DOMAIN\Domain Admins:ALLOWED/OI|CI/FULL ACL:NT AUTHORITY\SYSTEM:ALLOWED/OI|CI/FULL ACL:NT AUTHORITY\Authenticated Users:ALLOWED/OI|CI/READ ACL:NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS:ALLOWED/OI|CI/READ Создаём каталог с политикой для ярлычков: # mkdir -p /var/lib/samba/sysvol/domain.alt/Policies/{06975BC5-8858-44B0-934C-10D550877476}/User/Preferences/Shortcuts Создаём файл с предпочтением: # cat >/var/lib/samba/sysvol/domain.alt/Policies/\{06975BC5-8858-44B0-934C-10D550877476\}/User/Preferences/Shortcuts/Shortcuts.xml <?xml version="1.0" encoding="utf-8"?> <Shortcuts clsid="{872ECB34-B2EC-401b-A585-D32574AA90EE}"> <Shortcut clsid="{4F2F7C55-2790-433e-8127-0739D1CFA327}" userContext="1" name="Домашний на сервере" status="Домашний на сервере" image="1" changed="2021-08-15 18:00:00" uid="{033064C7-140C-4371-9709-2089D718A196}"> <Properties pidl="" targetType="FILESYSTEM" action="R" comment="" shortcutKey="0" startIn="" arguments="" iconIndex="0" targetPath="smb://SERVER/%LogonUser%" iconPath="ssh" window="" shortcutPath="%DesktopDir%\Домашний на сервере"/> </Shortcut> </Shortcuts> Назначаем политику одному из подразделений # samba-tool ou list OU=desktop OU=orgTest OU=gsettings OU=Deny Login OU=Allow Login OU=Win Department OU=Allow/Deny Login OU=Domain Controllers # samba-tool gpo setlink OU=gsettings,DC=domain,DC=alt {06975BC5-8858-44B0-934C-10D550877476} -k yes Added/Updated GPO link GPO(s) linked to DN OU=gsettings,DC=domain,DC=alt GPO : {06975BC5-8858-44B0-934C-10D550877476} Name : Home shares on server policy Options : NONE В некоторых ситуациях может потребоваться проверить и сбросить права на файлы: # getfacl /var/lib/samba/sysvol/*/Policies/{06975BC5-8858-44B0-934C-10D550877476}/User/Preferences/Shortcuts/Shortcuts.xml # smbcacls //dc0/sysvol domain.alt/Policies/{06975BC5-8858-44B0-934C-10D550877476}/User/Preferences/Shortcuts/Shortcuts.xml -k yes # samba-tool ntacl sysvolreset Мне не потребовалось, но видно, что права урезаны: # smbcacls //dc0/sysvol domain.alt/Policies/{06975BC5-8858-44B0-934C-10D550877476}/User/Preferences/Shortcuts/Shortcuts.xml -k yes REVISION:1 CONTROL:SR|DP OWNER:DOMAIN\Administrator GROUP:S-1-22-2-0 ACL:DOMAIN\Administrator:ALLOWED/0x0/RWDPO ACL:S-1-22-2-0:ALLOWED/0x0/ ACL:NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS:ALLOWED/0x0/R ACL:DOMAIN\Enterprise Admins:ALLOWED/0x0/RWDPO ACL:DOMAIN\Domain Admins:ALLOWED/0x0/RWDPO ACL:NT AUTHORITY\Authenticated Users:ALLOWED/0x0/R ACL:NT AUTHORITY\SYSTEM:ALLOWED/0x0/RWDPO ACL:NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS:ALLOWED/0x0/R ACL:DOMAIN\Enterprise Admins:ALLOWED/0x0/RWDPO ACL:DOMAIN\Domain Admins:ALLOWED/0x0/RWDPO ACL:NT AUTHORITY\Authenticated Users:ALLOWED/0x0/R ACL:NT AUTHORITY\SYSTEM:ALLOWED/0x0/RWDPO ACL:Everyone:ALLOWED/0x0/ # getfacl /var/lib/samba/sysvol/*/Policies/{06975BC5-8858-44B0-934C-10D550877476}/User/Preferences/Shortcuts/Shortcuts.xml getfacl: Removing leading '/' from absolute path names # file: var/lib/samba/sysvol/domain.alt/Policies/{06975BC5-8858-44B0-934C-10D550877476}/User/Preferences/Shortcuts/Shortcuts.xml # owner: root # group: root user::rw- user:NT\040AUTHORITY\\system:rwx #effective:rw- user:NT\040AUTHORITY\\authenticated\040users:r-x #effective:r-- user:DOMAIN\\domain\040admins:rwx #effective:rw- user:DOMAIN\\enterprise\040admins:rwx #effective:rw- user:NT\040AUTHORITY\\enterprise\040domain\040controllers:r-x #effective:r-- group::--- group:NT\040AUTHORITY\\system:rwx #effective:rw- group:NT\040AUTHORITY\\authenticated\040users:r-x #effective:r-- group:DOMAIN\\domain\040admins:rwx #effective:rw- group:DOMAIN\\enterprise\040admins:rwx #effective:rw- group:NT\040AUTHORITY\\enterprise\040domain\040controllers:r-x #effective:r-- mask::rw- other::--- Все эти штуки с правами обычно никто не проверяет, потому что не очень понимает, а какими они должны быть. _______________________________ Всё готово, проверяем на клиенте. Заходим в клиента с выключенными политиками: clw0 ~ # ssh suser@localhost suser@localhost's password: Last login: Sun Aug 15 17:55:46 2021 from 127.0.0.1 suser@clw0 ~ $ выход Connection to localhost closed. Домашний каталог условно пуст: clw0 ~ # ls /home/DOMAIN.ALT/suser/ Применение групповых политик было отключено: clw0 ~ # gpupdate-setup disabled Включение применения групповых политик (для включения через alterator доступен соответствующий графический модуль управления, а также "галочка" во время введения машины в домен): clw0 ~ # gpupdate-setup enable workstation clw0 ~ # control system-policy gpupdate Логинимся через ssh, видим уведомление о применении групповых политик. clw0 ~ # ssh suser@localhost suser@localhost's password: Apply group policies for suser. Last login: Sun Aug 15 17:56:55 2021 from 127.0.0.1 Проверяем наличие и содержание ярлычка. suser@clw0 ~ $ ls Desktop/Домашний\ на\ сервере.desktop -l -rwxr--r-- 1 suser domain users 137 авг 15 17:58 'Desktop/Домашний на сервере.desktop' suser@clw0 ~ $ cat Desktop/Домашний\ на\ сервере.desktop [Desktop Entry] Type=Application Version=1.0 Name=Домашний на сервере Terminal=false Exec=smb://SERVER/suser Icon=ssh _________________________________ PS: следует учесть, что полная поддержка (в режиме создать, удалить, обновить, и заменить) для ярлыков запланирована только на следующий ближайший релиз. Пока ярлыки только пересоздаются. PPS: Думаю, что это всё стоит дополнить и перенести на вики и в документацию. PPPS: Локальная проверка на клиенте доступа на в сервер: clw0 ~ # ssh suser@localhost suser@localhost's password: Apply group policies for suser. Last login: Sun Aug 15 18:30:23 2021 from 127.0.0.1 suser@clw0 ~ $ kinit Password for [email protected]: Warning: Your password will expire in 365 days on Вт 16 авг 2022 17:50:24 suser@clw0 ~ $ smbclient -k -L //dc0.domain.alt Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.14.5) suser Disk Home directory of DOMAIN\suser SMB1 disabled -- no workgroup available suser@clw0 ~ $ gio list smb://dc0.domain.alt/suser gio: smb://dc0.domain.alt/suser/: Указанный адрес не подключён suser@clw0 ~ $ gio mount smb://dc0.domain.alt/suser suser@clw0 ~ $ gio list smb://dc0.domain.alt/suser suser@clw0 ~ $ gio mkdir smb://dc0.domain.alt/suser/data suser@clw0 ~ $ gio list smb://dc0.domain.alt/suser data Почему этот mount - не настоящий cifs mount: suser@clw0 ~ $ mount | grep gvfs gvfsd-fuse on /run/user/549401134/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=549401134,group_id=549400513) suser@clw0 ~ $ mountpoint /run/user/549401134/gvfs /run/user/549401134/gvfs is a mountpoint suser@clw0 ~ $ ls /run/user/549401134/gvfs 'smb-share:server=dc0.domain.alt,share=suser' suser@clw0 ~ $ ls /run/user/549401134/gvfs/smb-share:server=dc0.domain.alt,share=suser data suser@clw0 ~ $ rpm -qa|grep gvfs|grep smb gvfs-backend-smb-1.48.1-alt1.x86_64 suser@clw0 ~ $ rpm -ql gvfs-backend-smb /usr/libexec/gvfs/gvfsd-smb /usr/libexec/gvfs/gvfsd-smb-browse /usr/share/GConf/gsettings/gvfs-smb.convert /usr/share/glib-2.0/schemas/org.gnome.system.smb.gschema.xml /usr/share/gvfs/mounts/smb-browse.mount /usr/share/gvfs/mounts/smb.mount suser@clw0 ~ $ ldd /usr/libexec/gvfs/gvfsd-smb | grep libsmbclient libsmbclient.so.0 => /usr/lib64/libsmbclient.so.0 (0x00007f64fd3fb000) -- Sin (Sinelnikov Evgeny) _______________________________________________ Sysadmins mailing list [email protected] https://lists.altlinux.org/mailman/listinfo/sysadmins
