Доброго времени суток.Появилась необходимость пересадить пользователей с Windows на Linux. Сейчас все работают на терминальном сервере Windows_2003 с тонких бездисковых клиентов. Используют 1с_8.2 + Офис. Профили, несколько дисков и "Мои Документы" монтируются по сети.
Для перехода был выбран вариант:
- терминальный сервер под Ubuntu_10.04_x64
- RX@Etersoft
- Wine@Etersoft
- тонкие клиенты на ThinStation-2.2.2h.
- аутентификация через LDAP сервер
- монтирование папки "Мои Документы" и нескольких "Дисков (W:,Z:...)", они нужны в Wine чтобы 1С могла с них доставать файлы, по сети.
Тонкого клиента собрал, аутентификацию в LDAP с созданием Хомяка (дом. папки) для нового пользователя сделал,..., осталось лишь монтировать сетевые Шары для пользователя. Для этого был выбран и настроен pam_mount. Но вот беда- после настройки pam_mount команда
sudo nxserver -- terminate username
перестала работать и начала выдавать
************************************************************************************
iddqd@xTerminal:~$ sudo nxserver --terminate testuser
NX> 100 NXSERVER - Version 3.2.0-74-SVN OS (GPL, using backend: 3.4.0)
reenter password for pam_mount:NX> 1000 NXNODE - Version 3.2.0-74-SVN OS (GPL, using backend: 3.4.0)
NX> 500 Error: Fatal - Missing parameter session id.
NX> 716 Terminating session on user request.
rm: невозможно удалить «/tmp/.X0-lock»: Операция не позволяется
rm: невозможно удалить «/tmp/.X2030-lock»: Операция не позволяется
rm: невозможно удалить «/tmp/.X11-unix/X0»: Операция не позволяется
rm: невозможно удалить «/tmp/.X11-unix/X2030»: Операция не позволяется
NX> 1001 Bye.
pam_mount(spawn.c:101): error setting uid to 0
NX> 999 Bye
************************************************************************************
при этом сессия "висит" и никак не убивается, помогает только ПЕРЕЗАГРУЗКА. Впрочем после перезагрузки всё встает на свои места. Если отключить pam_mount в /etc/pad.d/common-sesson то сессия убивается через nxserver -- terminate, но это же "костыли" какие то.
Впринципе сейчас все работает, но запускать систему в продакшн при невозможности убить NX-сессию очень не хочется. Ведь как бы ни был надежен Linux но иногда сессии NX всё же приходится убивать ручками :(
Конфиги прилагаю.
/etc/pam.d/common-session
********************************************************************************
#
# /etc/pam.d/common-session - session-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of sessions of *any* kind (both interactive and
# non-interactive).
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules. See
# pam-auth-update(8) for details.
# pre_auth-client-config # # here are the per-package modules (the "Primary" block)
# pre_auth-client-config # session [default=1] pam_permit.so
# pre_auth-client-config # # here's the fallback if no module succeeds
# pre_auth-client-config # session requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
# pre_auth-client-config # session required pam_permit.so
# pre_auth-client-config # # and here are more per-package modules (the "Additional" block)
# pre_auth-client-config # session required pam_unix.so
# pre_auth-client-config # session optional pam_ldap.so
# pre_auth-client-config # session optional pam_ck_connector.so nox11
# pre_auth-client-config # # end of pam-auth-update config
session required pam_limits.so
session required pam_mkhomedir.so skel=/etc/skel/
session required pam_unix.so
session optional pam_ldap.so
session optional pam_mount.so
********************************************************************************
/etc/pam.d/common-auth
********************************************************************************
#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules. See
# pam-auth-update(8) for details.
# pre_auth-client-config # # here are the per-package modules (the "Primary" block)
# pre_auth-client-config # auth [success=2 default=ignore] pam_unix.so nullok_secure
# pre_auth-client-config # auth [success=1 default=ignore] pam_ldap.so use_first_pass
# pre_auth-client-config # # here's the fallback if no module succeeds
# pre_auth-client-config # auth requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
# pre_auth-client-config # auth required pam_permit.so
# pre_auth-client-config # # and here are more per-package modules (the "Additional" block)
# pre_auth-client-config # # end of pam-auth-update config
auth required pam_env.so
auth [default=2 success=ignore] pam_unix.so # likeauth nullok
auth [default=1 success=ignore] pam_ldap.so use_first_pass
auth requisite pam_deny.so
auth optional pam_mount.so
********************************************************************************
/etc/security/pam_mount.conf.xml
********************************************************************************
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<!--
See pam_mount.conf(5) for a description.
-->
<pam_mount>
<!-- debug should come before everything else,
since this file is still processed in a single pass
from top-to-bottom -->
<debug enable="0" />
<!-- Volume definitions -->
<!-- pam_mount parameters: General tunables -->
<!--
<luserconf name=".pam_mount.conf.xml" />
-->
<!-- Note that commenting out mntoptions will give you the defaults.
You will need to explicitly initialize it with the empty string
to reset the defaults to nothing. -->
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />
<!--
<mntoptions deny="suid,dev" />
<mntoptions allow="*" />
<mntoptions deny="*" />
-->
<mntoptions require="nosuid,nodev" />
<path>/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin</path>
<logout wait="2000" hup="0" term="0" kill="0" />
<!-- pam_mount parameters: Volume-related -->
<volume
user="*"
fstype="cifs"
server="server_IP"
path="UsersDoc/%(USER)"
mountpoint="/server/usersdoc/%(USER)"
options="iocharset=utf8,nocase,nosuid,nodev,noexec,noperm,nounix,domain=assist.corp"
/>
<mkmountpoint enable="1" remove="true" />
</pam_mount>
********************************************************************************
Уже не знаю куда копать. Буду благодарен за помощь.
PS. Если есть способы выполнить поставленную задачу без pam_mount буду рассмотривать их. Мне главное чтобы пользователь мог работать и безопасность не страдала :)