ALT Linux sysadmins discussion
 help / color / mirror / Atom feed
From: Evgeny Sinelnikov <sin@altlinux.org>
To: "ALT Linux sysadmins' discussion" <sysadmins@lists.altlinux.org>
Cc: "Константин Палачев" <pku@basealt.ru>,
	"Elena Mishina" <lepata@basealt.ru>,
	"Александр Клепалов" <a.klepalov@school100nt.ru>,
	"Saratov BaseALT department" <saratov@lists.altlinux.org>
Subject: [Sysadmins] Политика управления ярлычками в Samba AD
Date: Sun, 15 Aug 2021 19:46:31 +0400
Message-ID: <CAK42-Gp7ZWDTiKjuMhMnxehSUmYc1gKBJq0_EawXGf3rJJ4jvA@mail.gmail.com> (raw)
In-Reply-To: <CAK42-GpMUWNnPcNA-i89EiEg=dDSxnfJWrvcAK3FK8XrR1myAA@mail.gmail.com>

Добрый день,

в продолжении обсуждения задачи "организация автоматически
подключаемой папки пользователя домена" хочу дать дополнительные
пояснения и сообщить новости по отношению к предыдущему обсуждению:
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 [administrator@DOMAIN.ALT]:
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 suser@DOMAIN.ALT:
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)

  parent reply	other threads:[~2021-08-15 15:46 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-25 21:03 ` [Sysadmins] как организовать автоматически подключаемую папку пользователя домена Evgeny Sinelnikov
2021-07-26  6:09   ` Vladimir Karpinsky
2021-07-26 17:25       ` Vladimir Karpinsky
2021-08-15 15:46   ` Evgeny Sinelnikov [this message]
2021-07-26  5:33 ` Andrey Cherepanov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAK42-Gp7ZWDTiKjuMhMnxehSUmYc1gKBJq0_EawXGf3rJJ4jvA@mail.gmail.com \
    --to=sin@altlinux.org \
    --cc=a.klepalov@school100nt.ru \
    --cc=lepata@basealt.ru \
    --cc=pku@basealt.ru \
    --cc=saratov@lists.altlinux.org \
    --cc=sysadmins@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux sysadmins discussion

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sysadmins/0 sysadmins/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sysadmins sysadmins/ http://lore.altlinux.org/sysadmins \
		sysadmins@lists.altlinux.org sysadmins@lists.altlinux.ru sysadmins@lists.altlinux.com
	public-inbox-index sysadmins

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sysadmins


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git