LINUX.ORG.RU

samba 3.5.9: не работают логон скрипты из под нерутовых юзеров


0

1

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

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

если запускать руками от обычного пользователя по полному пути \\ancor-srv\netlogon\logon.bat - всё замечательно отрабатывает

при включении дебаггинга картина становится яснее: при логине нерутовым пользователем парсинг имени логон скрипта из конфига идет неправильно (почему то в имя файла подставляется полный путь да еще с кривыми слэшами) поэтому оно говорит файлнотфаунд и отваливается 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

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

конфиг права на папку и дебаг выводы ниже


        [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

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

        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

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

        [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)
        --


MarvinFS ()
Ответ на: комментарий от MarvinFS

ага... если указать в USER MANAGER (гуишная MSовская тулза для управления доменом NT4) для каждого пользователя в свойствах напрямую логон скрипт logon.bat то всё работает... меня как бы не напрягает прописать всем его прокликать, но тем не менее почему оно так странно работает из глобального конфига

MarvinFS ()
Ответ на: комментарий от MarvinFS

Так он каждому пользователю и назначается. Пользователей можно не новых добавлять а копировать. Тогда все, групы, время работы, окружение и тот-же логон-скрипт, все уже есть, остается только новый логин и пароль прописать. Берешь пользователя нужной группы и копируешь.

lvi ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.