smbclient(samba-4.10.4) cannot log data in log.smbclient while samba-3.6.23 can
Amit Kumar
amitkuma at redhat.com
Wed Mar 18 12:34:47 UTC 2020
Hello,
smbclient cannot create log file when log-basename is specified in
samba-master.
-l|--log-basename=logdirectory
Base directory name for log/debug files. The extension
".progname" will
be appended (e.g. log.smbclient, log.smbd, etc...). The log
file is
never removed by the client.
*On samba-4.10.4*:
# smbclient -l /var/log/samba //<samba-server-ip>/<share-name> -U
username%password
smb: \> ls
. D 0 Wed Mar 18 05:34:29 2020
.. D 0 Mon Mar 2 06:46:14 2020
test1.xml A 9727426 Mon Mar 2
06:50:39 2020
26699940 blocks of size 1024. 1524304 blocks available
smb: \> q
# ls -ltr /var/log/samba
-rw-r--r--. 1 root root 0 Mar 18 05:35 log.smbclient
<<<<<<<<<<<See file size=0
#
*samba-3.6.23:
*# smbclient -l /var/log/samba //<samba-server-ip>/<share-name> -U
username%password
smb: \> ls
. D 0 Wed Mar 18 06:41:49 2020
.. DR 0 Wed Mar 18 06:41:45 2020
file-1 0 Wed Mar 18 06:41:49 2020
44732 blocks of size 1048576. 36679 blocks available
smb: \> q
# ls -ltr /var/log/samba/
-rw-r--r--. 1 root root 242 Mar 18 08:13 log.smbclient <<<<<<<Creates
the file.
I tried breaking samba-4.10.4 in setup_logging() using gdb but on
running gdb "Single stepping until exit from function setup_logging,
which has no line number information", maybe its pproblem of gdb ad gcc
version mismatch but i am using both latest version.
samba-3.23 breaks perfactly into setup_logging().
I think using git bisect between these versions would be tough as,
versions are far apart.
Even there is significant change log handling between two versions. I
tried adding the old code back but still no luck.
samba-4.10.4/lib/util/debug.c
void setup_logging(const char *prog_name, enum debug_logtype new_logtype)
{
debug_init();
if (state.logtype < new_logtype) {
state.logtype = new_logtype;
}
if (prog_name) {
const char *p = strrchr(prog_name, '/');
if (p) {
prog_name = p + 1;
}
state.prog_name = prog_name;
}
reopen_logs_internal();
+ if (state.logtype == DEBUG_FILE) {
+#ifdef WITH_SYSLOG
+ //const char *p = strrchr_m( prog_name,'/' );
+ const char *p = "/log.smbclient";
+ if (p)
+ prog_name = p + 1;
+#ifdef LOG_DAEMON
+ openlog( prog_name, LOG_PID, SYSLOG_FACILITY );
+#else
+ /* for old systems that have no facility codes. */
+ openlog( prog_name, LOG_PID );
+#endif
+#endif
+ }
}
--
Thank you,
Amit Kumar
<https://www.redhat.com/en/openshift-4>
More information about the samba-technical
mailing list