Мой crontab (запущенный как пользователь) содержит следующую команду
00-59 00-23 * * * /usr/bin/smbget -R smb://192.168.10.32/Data -u USER -p PASSWORD
Но я получаю сообщение об ошибке, поскольку у вас недостаточно прав для доступа smb://192.168.10.32/Data/
Но ту же команду я могу выполнить (как пользователь) из командной строки.
Как дать разрешение crontab на решение проблемы.
Ошибки, которые я зафиксировал после выполнения:
00-59 00-23 * * * /usr/bin/smbget -R smb://192.168.10.32/Data -u USER -p PASSWORD 2>> /path/to/samba.log
Невозможно открыть каталог smb: //192.168.10.32/Data/a: Permission denied
Невозможно открыть каталог smb: //192.168.10.32/Data/b: Permission denied
Невозможно открыть каталог smb: //192.168.10.32/Data/c: Permission denied
У вас недостаточно прав для доступа к smb: //192.168.10.32/Data/d
У вас недостаточно прав для доступа к smb: //192.168.10.32/Data/e
params.c:OpenConfFile() - Unable to open configuration file "/home/USER/.smb/smb.conf":
No such file or directory
params.c:OpenConfFile() - Unable to open configuration file "/home/USER/.smb/smb.conf.append":
No such file or directory
Using netbios name MACHINE_NAME1.
Using workgroup WORKGROUP.
parsed path: fname='smb://192.168.10.32/Data' server='192.168.10.32' share='Data' path='' options=''
SMBC_check_options(): server='192.168.10.32' share='Data' path='' options=''
SMBC_server: server_n=[192.168.10.32] server=[192.168.10.32]
-> server_n=[192.168.10.32] server=[192.168.10.32]
Connecting to 192.168.10.32 at port 445
session request ok
Doing spnego session setup (blob length=46)
got OID=1.3.6.1.4.1.311.2.2.10
got principal=<null>
Got challenge flags:
Got NTLMSSP neg_flags=0x628a8215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_TARGET_INFO
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
session setup ok
tconx ok
Case sensitive: True
Server connect ok: //192.168.10.32/Data: 0x7f552dd6a290
received 10 entries (eos=1)
parsed path: fname='smb://192.168.10.32/Data/BSEEQ' server='192.168.10.32' share='Data' path='\BSEEQ' options=''
SMBC_check_options(): server='192.168.10.32' share='Data' path='\BSEEQ' options=''
SMBC_server: server_n=[192.168.10.32] server=[192.168.10.32]
-> server_n=[192.168.10.32] server=[192.168.10.32]
Connecting to 192.168.10.32 at port 445
session request ok
Doing spnego session setup (blob length=46)
got OID=1.3.6.1.4.1.311.2.2.10
got principal=<null>
Got challenge flags:
Got NTLMSSP neg_flags=0x628a8215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_TARGET_INFO
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
SPNEGO login failed: Account disabled
session setup ok
parsed path: fname='smb://192.168.10.32/Data/MCX' server='192.168.10.32' share='Data' path='\MCX' options=''
SMBC_check_options(): server='192.168.10.32' share='Data' path='\MCX' options=''
SMBC_server: server_n=[192.168.10.32] server=[192.168.10.32]
-> server_n=[192.168.10.32] server=[192.168.10.32]
Connecting to 192.168.10.32 at port 445
session request ok
Doing spnego session setup (blob length=46)
got OID=1.3.6.1.4.1.311.2.2.10
got principal=<null>
Got challenge flags:
Got NTLMSSP neg_flags=0x628a8215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_TARGET_INFO
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
SPNEGO login failed: Account disabled
session setup ok
parsed path: fname='smb://192.168.10.32/Data/NCDEX' server='192.168.10.32' share='Data' path='\NCDEX' options=''
SMBC_check_options(): server='192.168.10.32' share='Data' path='\NCDEX' options=''
SMBC_server: server_n=[192.168.10.32] server=[192.168.10.32]
-> server_n=[192.168.10.32] server=[192.168.10.32]
Connecting to 192.168.10.32 at port 445
session request ok
Doing spnego session setup (blob length=46)
got OID=1.3.6.1.4.1.311.2.2.10
got principal=<null>
Got challenge flags:
Got NTLMSSP neg_flags=0x628a8215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_TARGET_INFO
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
SPNEGO login failed: Account disabled
session setup ok
parsed path: fname='smb://192.168.10.32/Data/NSEEQ' server='192.168.10.32' share='Data' path='\NSEEQ' options=''
SMBC_check_options(): server='192.168.10.32' share='Data' path='\NSEEQ' options=''
SMBC_server: server_n=[192.168.10.32] server=[192.168.10.32]
-> server_n=[192.168.10.32] server=[192.168.10.32]
Connecting to 192.168.10.32 at port 445
session request ok
Doing spnego session setup (blob length=46)
got OID=1.3.6.1.4.1.311.2.2.10
got principal=<null>
Got challenge flags:
Got NTLMSSP neg_flags=0x628a8215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_TARGET_INFO
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
SPNEGO login failed: Account disabled
session setup ok
parsed path: fname='smb://192.168.10.32/Data/NSEFO' server='192.168.10.32' share='Data' path='\NSEFO' options=''
SMBC_check_options(): server='192.168.10.32' share='Data' path='\NSEFO' options=''
SMBC_server: server_n=[192.168.10.32] server=[192.168.10.32]
-> server_n=[192.168.10.32] server=[192.168.10.32]
Connecting to 192.168.10.32 at port 445
session request ok
Doing spnego session setup (blob length=46)
got OID=1.3.6.1.4.1.311.2.2.10
got principal=<null>
Got challenge flags:
Got NTLMSSP neg_flags=0x628a8215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_TARGET_INFO
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
SPNEGO login failed: Account disabled
session setup ok
parsed path: fname='smb://192.168.10.32/Data/SCRIPMASTER' server='192.168.10.32' share='Data' path='\SCRIPMASTER' options=''
SMBC_check_options(): server='192.168.10.32' share='Data' path='\SCRIPMASTER' options=''
SMBC_server: server_n=[192.168.10.32] server=[192.168.10.32]
-> server_n=[192.168.10.32] server=[192.168.10.32]
Connecting to 192.168.10.32 at port 445
session request ok
Doing spnego session setup (blob length=46)
got OID=1.3.6.1.4.1.311.2.2.10
got principal=<null>
Got challenge flags:
Got NTLMSSP neg_flags=0x628a8215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_TARGET_INFO
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
SPNEGO login failed: Account disabled
session setup ok
SMBC_server: server_n=[192.168.10.32] server=[192.168.10.32]
-> server_n=[192.168.10.32] server=[192.168.10.32]
Connecting to 192.168.10.32 at port 445
session request ok
Doing spnego session setup (blob length=46)
got OID=1.3.6.1.4.1.311.2.2.10
got principal=<null>
Got challenge flags:
Got NTLMSSP neg_flags=0x628a8215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_TARGET_INFO
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
SPNEGO login failed: Account disabled
session setup ok
SMBC_server: server_n=[192.168.10.32] server=[192.168.10.32]
-> server_n=[192.168.10.32] server=[192.168.10.32]
Connecting to 192.168.10.32 at port 445
session request ok
Doing spnego session setup (blob length=46)
got OID=1.3.6.1.4.1.311.2.2.10
got principal=<null>
Got challenge flags:
Got NTLMSSP neg_flags=0x628a8215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_TARGET_INFO
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
SPNEGO login failed: Account disabled
session setup ok
Using workgroup WORKGROUP, user USER
/home/USER
Я столкнулся с подобной проблемой. Очевидно, при захвате рекурсивного каталога с помощью smbget используется текущая переменная среды $ USER. Установка этой переменной на то же имя пользователя, которое передано в smbget, позволяет обойти это, но по-прежнему не работает для заданий Cron.
Эта проблема задокументирована здесь: https://bugzilla.samba.org/show_bug.cgi?id=8400
Вот отрывок из моего сценария
pUSER=$USER # store previous user
USER=$username # new username
smbget -R -v -U -u "$username" "smb://server/c$/directory"
USER=$pUSER # restore previous username
Это работает через командную строку, но не при вызове из cron, очень запутанно.
Надеюсь, это кому-то поможет.
РЕДАКТИРОВАТЬ
Вернувшись к этому, я понял, что то же самое можно сделать с помощью smbmount. Приведенный ниже код - это пример, который работает даже при вызове из crontab.
username=myuser
domain=corp #optional domain prefix
PASS=password123
smbmount \\\\fileserver\\sharename /mnt/somedir -o user=$username,password=$PASS,dom=$domain
cp -R -u -v /mnt/somedir/* /destination_directory
umount /mnt/somedir
Я также занимаюсь этой проблемой и нашел здесь свой путь - похоже, это соответствующая ошибка для этой проблемы: https://bugzilla.samba.org/show_bug.cgi?id=6482
В этом отчете об ошибке предлагается встроить имя пользователя и пароль в URI SMB, например:
smbget -Rr smb://user:pass@host/sharename
У меня возникли проблемы с отказом в разрешении, однако указанный выше формат работает хорошо.
Пожалуйста, обратите внимание: Если вы используете этот метод в своем crontab, то любой, у кого есть доступ к ящику, может получить учетные данные, изучив список процессов. Однако это может быть приемлемо для частной системы.
Имейте в виду, что после множества недавних проблем с разными, но похожими проблемами, cron работает с sh
, а не оболочка вашего выбора (возможно bash
). Поэтому я настоятельно рекомендую вам проверить его как следует, так как функциональность sh
значительно ограничен в отношении bash и всех доступных с ним встроенных модулей, команд и переменных среды. Во-вторых, имейте в виду, что экранирование не буквенно-цифровых символов - это всегда весело. В-третьих, когда ничего не помогает, заставьте задание cron запустить smbget. 00-59 00-23 * * * /usr/bin/smbget -R smb://192.168.10.32/Data -u USER -p PASSWORD 2>&1 >> /path/to/samba.log
чтобы получить более подробную информацию. Добавление этой информации в этот пост может помочь нам сузить круг проблем. Извините, но операции cron для каждого пользователя не так просты, как кажется.