Страница 1 из 1

samba: не работают logon скрипты от нерутового пользователя

Добавлено: 2011-08-05 8:51:56
MarvinFS
Уважаемые коллеги,

Есть Samba 3.5.9 и FreeBSD 8.2p1
самба работает в режиме PDC без LDAP
все сервисы работаю хорошо, за исключением:

1. logon script не отрабатывает от обычных пользоветелей (non root) - от рута всё работает и выполняется в любой вариации
причем политики (ntconfig.pol применяются для любых пользователей нормально, а вот логон скрипты только для рута)

Код: Выделить всё

[global]
socket options=SO_RCVBUF=131072 SO_SNDBUF=131072 TCP_NODELAY
min receivefile size=16384
use sendfile=true
aio read size = 16384
aio write size = 16384
aio write behind = true
dns proxy = no

interfaces = 192.168.1.105 127.0.0.1
passdb backend = tdbsam:/usr/local/etc/samba/passdb.tdb
workgroup = ATLANTA
netbios name = ANCOR-SRV
realm = ATLANTA.LOCAL
server string = ANCOR-SRV


        dos charset = cp866
        unix charset = CP1251
        display charset = CP1251

        security = user
        log file = /var/log/samba/log.%m

        max log size = 1000
        load printers = No
        printcap name = /dev/null

        domain logons = Yes
        os level = 85
        preferred master = Yes
        domain master = Yes

        idmap uid = 5000-9999
        idmap gid = 5000-9999

        dns proxy = yes
        time server = True
        winbind enum users = Yes
        winbind enum groups = Yes
        winbind use default domain = Yes
        winbind refresh tickets = Yes
        inherit acls = Yes

        wins support = yes

        hosts allow = 192.168., 127.
        map acl inherit = Yes

        printing = bsd
        print command = lpr -r -P'%p' %s
        lpq command = lpq -P'%p'
        lprm command = lprm -P'%p' %j

        case sensitive = No
        hide unreadable = Yes
        veto files = /*.mp3/*.divx/*.avi/*.mp4/*.mpg/*.flac/*.ogg/
        map archive = No
        store dos attributes = Yes

   nt acl support = Yes
   encrypt passwords = Yes

        logon path =
        logon drive =
        logon home  =
        template homedir =
        admin users     = "@ATLANTA\Domain Admins"

        logon script = logon.bat
#пробовал и такой вариант
#       logon script = /mnt/750g/netlogon/logon.bat

  # Скрипт добавления пользователя
        add user script = /usr/local/etc/samba/add_user_script.sh "%u"
        # Скрипт удаления пользователя
        delete user script = /usr/sbin/pw userdel "%u" -r
        # Скрипт переименованя пользователя
        # (следующие две строки - на самом деле одна. невлезает ..)
        rename user script = /usr/local/etc/samba/rename_user_script.sh "%uold" "%unew"
        # Скрипт перезапуска самбы (Вообще, в man smb.conf, предлагается
        # ребутить или класть всю машину. Перебор, по моему... Хотя -
        # у меня это не работает. Такчто - пофиг.)
        shutdown script = /usr/local/etc/samba/shutdown_script.sh
        # Скрипт добавления новой группы
        add group script = /usr/sbin/pw groupadd "%g"
        # Скрипт удаления группы
        delete group script = /usr/sbin/pw groupdel "%g"
        # Скрипт добавления пользователя в группу
        # (следующие две строки - это одна, в ширину сайта на вписывается)
        add user to group script = /usr/local/etc/samba/add_user_to_group_script.sh "%g" "%u"
        # Скрипт установки первичной группы для пользователя
        set primary group script = /usr/sbin/pw usermod "%u" -g "%g"
        # Скрипт удаления пользователя из группы
        # (следующие две строки - это одна, в ширину сайта на вписывается)
        delete user from group script = /usr/local/etc/samba/delete_user_from_group_script.sh "%g" "%u"
        # Скрпит для добавления аккаунта компьютера
        add machine script = /usr/local/etc/samba/add_machine_script.sh "%u"
        # Скрипт проверки пароля (чтобы не пихали 12345 и прочее. Должен вернуть 0
        # если пароль нормальный, и что-то другое - если нет. Пароль передаётся
        # на стандартный ввод скрпита)
        check password script = /path/to/password/check/script.sh
        # Скрпит - чё елать при получении сообщений по winpopup (из man`a)
        message command = /bin/mail -s 'message from %f on %m' root < %s; rm %s


#smb passwd file = /usr/local/etc/samba/smbpasswd
#unix password sync = no
#passwd program = /usr/bin/passwd %u
#passwd chat = *New*password* %n\n *Please*retype*new*password* %n\n *password*successfully*updated*

[IPC$]
        path = /tmp


[print$]
        comment = Printer Drivers Share
        path = /mnt/750g/drivers

[netlogon]
        path = /mnt/750g/netlogon
#       admin users = "@ATLANTA\Domain Users"
        read only = no
        browseable = yes
        guest ok=yes
если запускать руками от обычного пользователя по пути \\ancor-srv\netlogon\logon.bat
всё замечательно отрабатывает

права на пути скрипта пробовал разные пока оставил вот такие

Код: Выделить всё

root@ancor-srv /usr/local/etc]# ls -la /mnt/750g/
total 14
drwxr-xr-x  7 root  wheel     512 Aug  3 15:37 .
drwxr-xr-x  3 root  wheel     512 Aug  3 09:58 ..
drwxrwxrwx  2 root  ntusers   512 Aug  4 13:40 netlogon

[root@ancor-srv /usr/local/etc]# ls -la /mnt/750g/netlogon/
total 282
drwxrwxrwx  2 root  ntusers     512 Aug  4 13:40 .
drwxr-xr-x  7 root  wheel       512 Aug  3 15:37 ..
-rwxrwxrwx  1 root  ntusers     733 Aug  4 10:35 defprinter.vbs
-rwxrwxrwx  1 root  ntusers     289 Aug  4 13:40 logon.bat
-rwxrwxrwx  1 root  ntusers  262144 Aug  4 13:53 ntconfig.pol

2. при попытке смены пароля пользователя в windows xp по CTRL+ALT+DEL (либо когда ставишь галку User Must Change password on next logon)
выдает ошибку что пароль не соответствует требованиям политик пароля, хотя политики все стоят по умолчанию и новый пароль набирается сессно исходя из требований к паролям например Abc1234) в логах при этом появляется запись
[2011/08/05 10:43:22.258811, 1] smbd/chgpasswd.c:1205(change_oem_password)
change_oem_password: check password script said new password is not good enough!

Код: Выделить всё

[root@ancor-srv /usr/local/etc]# pdbedit -P ?
Account policy names are:
min password length 6
password history 0
user must logon to change password 0
maximum password age 0
minimum password age 0
lockout duration 0
reset count minutes 0
bad lockout attempt 0
disconnect time 0
refuse machine password change 0
пожалуйста помогите, гуглил последние 2 дня ничего нет, только упоминания на буржуйских сайтах о подобных проблемах пару штук без каких либо решений!!!

Re: samba: не работают logon скрипты от нерутового пользоват

Добавлено: 2011-08-05 8:59:03
MarvinFS
c паролем решил вопрос... сам лох не проверил check password скрипт - его тупо нет... а вот с логон скриптами что-то завис

Re: samba: не работают logon скрипты от нерутового пользоват

Добавлено: 2011-08-05 11:00:56
snorlov
Я бы маску на netlogon поставил бы в 0666

Re: samba: не работают logon скрипты от нерутового пользоват

Добавлено: 2011-08-05 11:22:32
MarvinFS
ну права 777 явно больше... понятно что лучше 666 поставить

Re: samba: не работают logon скрипты от нерутового пользоват

Добавлено: 2011-08-05 11:39:19
snorlov
MarvinFS писал(а):ну права 777 явно больше... понятно что лучше 666 поставить
Наврал, у меня на netlogon стоит

Код: Выделить всё

admin users=@"Domain admins"
а на сам каталог netlogon root:wheel c маской 0775

Re: samba: не работают logon скрипты от нерутового пользоват

Добавлено: 2011-08-05 12:10:02
MarvinFS
Наврал, у меня на netlogon стоит

Код: Выделить всё
admin users=@"Domain admins"


а на сам каталог netlogon root:wheel c маской 0775
это ставится по умолчанию, если не играца с правами

Re: samba: не работают logon скрипты от нерутового пользоват

Добавлено: 2011-08-05 15:23:42
princeps
У меня та же беда, кроме админов никто не подхватывает скрипты. Права на нетлогон 777.

Re: samba: не работают logon скрипты от нерутового пользоват

Добавлено: 2011-08-06 0:20:19
MarvinFS
Есть решение? Кто-нибудь? Коммитеры?
ведь проблема существует... еще лисяра о ней упоминал в своей статье о причинах выбора версии 3.0 самбы


и как бэ все забили? а между тем думаю проблема не стоит и двух байтов!

Re: samba: не работают logon скрипты от нерутового пользоват

Добавлено: 2011-08-06 8:45:40
MarvinFS
при включении дебаггинга картина становится яснее:
при логине нерутовым пользователем парсинг имени логон скрипта из конфига идет неправильно (почему то в имя файла подставляется полный путь да еще с кривыми слэшами) поэтому оно говорит файлнотфаунд и отваливается
unix_convert called on file "ancor-srv/netlogon/logon.bat"
unix_convert begin: name = ancor-srv/netlogon/logon.bat, dirpath = , start = ancor-srv/netlogon/logon.bat
Intermediate not found ancor-srv

при логине рутом - всё нормельно имя логон скрипта парсится нормально и работает
unix_convert called on file "logon.bat"
unix_convert begin: name = logon.bat, dirpath = , start = logon.bat
stat_cache_add: Added entry (21f694e0:size 9) LOGON.BAT -> logon.bat
conversion of base_name finished logon.bat -> logon.bat
check_reduced_name [logon.bat] [/mnt/750g/netlogon]
check_reduced_name: logon.bat reduced to /mnt/750g/netlogon/logon.bat
call_trans2qfilepathinfo logon.bat (fnum = -1) level=1004 call=5 total_data=0


вопрос, что делать кому писать куда звонить?

дебаг вывод при логине нерутовым пользователем:

Код: Выделить всё

--
[2011/08/06 11:04:02.138601,  3] smbd/vfs.c:881(check_reduced_name)
  check_reduced_name [.] [/mnt/750g/netlogon]
[2011/08/06 11:04:02.139054,  3] smbd/vfs.c:1038(check_reduced_name)
  check_reduced_name: . reduced to /mnt/750g/netlogon
[2011/08/06 11:04:02.139788,  3] smbd/trans2.c:5226(call_trans2qfilepathinfo)
--
[2011/08/06 11:04:02.268182,  5] smbd/filename.c:169(unix_convert)
 unix_convert called on file "ancor-srv/netlogon/logon.bat"
[2011/08/06 11:04:02.268632,  5] smbd/filename.c:328(unix_convert)
  unix_convert begin: name = ancor-srv/netlogon/logon.bat, dirpath = , start = ancor-srv/netlogon/logon.bat
[2011/08/06 11:04:02.269712,  5] smbd/filename.c:547(unix_convert)
  Intermediate not found ancor-srv
[2011/08/06 11:04:02.270271,  3] smbd/error.c:80(error_packet_set)
  error packet at smbd/trans2.c(5129) cmd=50 (SMBtrans2) NT_STATUS_OBJECT_PATH_NOT_FOUND
--
дебаг вывод при логине рутовым пользователем:

Код: Выделить всё

[2011/08/06 11:30:54.449610,  3] smbd/vfs.c:881(check_reduced_name)
  check_reduced_name [.] [/mnt/750g/netlogon]
[2011/08/06 11:30:54.450091,  3] smbd/vfs.c:1038(check_reduced_name)
  check_reduced_name: . reduced to /mnt/750g/netlogon
[2011/08/06 11:30:54.450866,  3] smbd/trans2.c:5226(call_trans2qfilepathinfo)
--
[2011/08/06 11:30:54.497519,  3] smbd/vfs.c:881(check_reduced_name)
  check_reduced_name [.] [/mnt/750g/netlogon]
[2011/08/06 11:30:54.498003,  3] smbd/vfs.c:1038(check_reduced_name)
  check_reduced_name: . reduced to /mnt/750g/netlogon
[2011/08/06 11:30:54.498775,  3] smbd/trans2.c:5226(call_trans2qfilepathinfo)
--
[2011/08/06 11:30:54.622072,  5] smbd/filename.c:169(unix_convert)
unix_convert called on file "logon.bat"
[2011/08/06 11:30:54.622532,  5] smbd/filename.c:328(unix_convert)
  unix_convert begin: name = logon.bat, dirpath = , start = logon.bat
[2011/08/06 11:30:54.623341,  5] smbd/statcache.c:138(stat_cache_add)
  stat_cache_add: Added entry (21f694e0:size 9) LOGON.BAT -> logon.bat
[2011/08/06 11:30:54.624078,  5] smbd/filename.c:351(unix_convert)
  conversion of base_name finished logon.bat -> logon.bat
[2011/08/06 11:30:54.624846,  3] smbd/vfs.c:881(check_reduced_name)
  check_reduced_name [logon.bat] [/mnt/750g/netlogon]
[2011/08/06 11:30:54.625669,  3] smbd/vfs.c:1038(check_reduced_name)
  check_reduced_name: logon.bat reduced to /mnt/750g/netlogon/logon.bat
[2011/08/06 11:30:54.626443,  3] smbd/trans2.c:5226(call_trans2qfilepathinfo)
  call_trans2qfilepathinfo logon.bat (fnum = -1) level=1004 call=5 total_data=0
[2011/08/06 11:30:54.627195,  5] smbd/trans2.c:4198(smbd_do_qfilepathinfo)
  smbd_do_qfilepathinfo: logon.bat (fnum = -1) level=1004 max_data=40
[2011/08/06 11:30:54.628269,  5] smbd/trans2.c:4442(smbd_do_qfilepathinfo)
--
  Intermediate not found RECYCLER
[2011/08/06 11:30:56.058036,  3] smbd/error.c:80(error_packet_set)
  error packet at smbd/trans2.c(5129) cmd=50 (SMBtrans2) NT_STATUS_OBJECT_PATH_NOT_FOUND
--
[2011/08/06 11:30:56.622520,  4] smbd/vfs.c:751(vfs_ChDir)
  vfs_ChDir to /mnt/750g/netlogon
[2011/08/06 11:30:56.622628,  5] smbd/filename.c:169(unix_convert)
  unix_convert called on file "logon.bat"
[2011/08/06 11:30:56.622766,  3] smbd/vfs.c:881(check_reduced_name)
  check_reduced_name [logon.bat] [/mnt/750g/netlogon]
[2011/08/06 11:30:56.622866,  3] smbd/vfs.c:1038(check_reduced_name)
  check_reduced_name: logon.bat reduced to /mnt/750g/netlogon/logon.bat
[2011/08/06 11:30:56.622937,  3] smbd/vfs.c:881(check_reduced_name)
  check_reduced_name [logon.bat] [/mnt/750g/netlogon]
[2011/08/06 11:30:56.623016,  3] smbd/vfs.c:1038(check_reduced_name)
  check_reduced_name: logon.bat reduced to /mnt/750g/netlogon/logon.bat
[2011/08/06 11:30:56.623069,  5] smbd/files.c:119(file_new)
--
[2011/08/06 11:30:56.623106,  3] smbd/dosmode.c:166(unix_mode)
  unix_mode(logon.bat) returning 0644
[2011/08/06 11:30:56.623152,  3] smbd/vfs.c:881(check_reduced_name)
  check_reduced_name [logon.bat] [/mnt/750g/netlogon]
[2011/08/06 11:30:56.623231,  3] smbd/vfs.c:1038(check_reduced_name)
  check_reduced_name: logon.bat reduced to /mnt/750g/netlogon/logon.bat
[2011/08/06 11:30:56.623400,  4] smbd/open.c:1990(open_file_ntcreate)
--
[2011/08/06 11:30:56.623511,  2] smbd/open.c:647(open_file)
  root opened file logon.bat read=Yes write=No (numopen=2)
[2011/08/06 11:30:56.623556,  5] smbd/oplock.c:86(set_file_oplock)
  set_file_oplock: granted oplock on file logon.bat, 62:4ddf402:0/8, tv_sec = 4e3cd190, tv_usec = 981d7
[2011/08/06 11:30:56.623824,  5] smbd/nttrans.c:722(reply_ntcreate_and_X)
  reply_ntcreate_and_X: fnum = 10135, open name = logon.bat
[2011/08/06 11:30:56.624400,  3] smbd/process.c:1489(process_smb)
--
[2011/08/06 11:30:56.624812,  3] smbd/trans2.c:5226(call_trans2qfilepathinfo)
  call_trans2qfilepathinfo logon.bat (fnum = 10135) level=1006 call=7 total_data=0
[2011/08/06 11:30:56.624852,  5] smbd/trans2.c:4198(smbd_do_qfilepathinfo)
  smbd_do_qfilepathinfo: logon.bat (fnum = 10135) level=1006 max_data=8
[2011/08/06 11:30:56.625017,  5] lib/util.c:617(show_msg)
--
[2011/08/06 11:30:56.626864,  5] smbd/filename.c:169(unix_convert)
  unix_convert called on file "logon.bat"
[2011/08/06 11:30:56.626985,  3] smbd/vfs.c:881(check_reduced_name)
  check_reduced_name [logon.bat] [/mnt/750g/netlogon]
[2011/08/06 11:30:56.627088,  3] smbd/vfs.c:1038(check_reduced_name)
  check_reduced_name: logon.bat reduced to /mnt/750g/netlogon/logon.bat
[2011/08/06 11:30:56.627132,  5] smbd/trans2.c:2333(call_trans2findfirst)
  dir=./, mask = logon.bat
[2011/08/06 11:30:56.627162,  5] smbd/dir.c:423(dptr_create)
--
[2011/08/06 11:30:56.627200,  3] smbd/vfs.c:881(check_reduced_name)
  check_reduced_name [./] [/mnt/750g/netlogon]
[2011/08/06 11:30:56.627236,  3] smbd/vfs.c:1038(check_reduced_name)
  check_reduced_name: ./ reduced to /mnt/750g/netlogon
[2011/08/06 11:30:56.627341,  3] smbd/dir.c:544(dptr_create)
--
[2011/08/06 11:30:56.627390,  4] smbd/trans2.c:2400(call_trans2findfirst)
  dptr_num is 256, wcard = logon.bat, attr = 22
[2011/08/06 11:30:56.627648,  3] smbd/dir.c:993(smbd_dirptr_get_entry)
  smbd_dirptr_get_entry mask=[logon.bat] found ./logon.bat fname=logon.bat (logon.bat)
[2011/08/06 11:30:56.627730,  5] smbd/trans2.c:2466(call_trans2findfirst)
--
[2011/08/06 11:30:56.628072,  4] smbd/trans2.c:2510(call_trans2findfirst)
  SMBtrans2 mask=logon.bat directory=./ dirtype=22 numentries=1
[2011/08/06 11:30:56.629719,  3] smbd/process.c:1489(process_smb)
--
[2011/08/06 11:30:56.807004,  5] smbd/filename.c:169(unix_convert)
  unix_convert called on file "logon.bat"
[2011/08/06 11:30:56.807113,  3] smbd/vfs.c:881(check_reduced_name)
  check_reduced_name [logon.bat] [/mnt/750g/netlogon]
[2011/08/06 11:30:56.807221,  3] smbd/vfs.c:1038(check_reduced_name)
  check_reduced_name: logon.bat reduced to /mnt/750g/netlogon/logon.bat
[2011/08/06 11:30:56.807288,  3] smbd/vfs.c:881(check_reduced_name)
  check_reduced_name [logon.bat] [/mnt/750g/netlogon]
[2011/08/06 11:30:56.807374,  3] smbd/vfs.c:1038(check_reduced_name)
  check_reduced_name: logon.bat reduced to /mnt/750g/netlogon/logon.bat

Re: samba: не работают logon скрипты от нерутового пользоват

Добавлено: 2011-08-06 10:28:42
MarvinFS
ага... если указать в USER MANAGER (гуишная MSовская тулза для управления доменом NT4) для каждого пользователя в свойствах напрямую логон скрипт logon.bat то всё работает... меня как бы не напрягает прописать всем его прокликать, но тем не менее почему оно так странно работает из глобального конфига

Re: samba: не работают logon скрипты от нерутового пользоват

Добавлено: 2011-08-06 11:46:41
princeps
надо в исходниках поглядеть из-за чего такая бодяга.

Re: samba: не работают logon скрипты от нерутового пользоват

Добавлено: 2011-08-08 19:50:49
princeps
у меня заработало следующим образом: перенёс шару нетлогон из /usr/local/etc/samba/netlogon (так было в статье) в /home/netlogon. Где-то давно читал, что проблема кроется в том, что все каталоги в иерархии нетлогона должны быть доступны на чтение юзеру, может в этом дело. Блин, ведь сталкивался уже с таким косяком, записывать надо.