232
239
TALLOC_FREE(share_mode);
235
static int traverse_fn1(struct db_record *rec,
236
const struct connections_key *key,
242
static int traverse_fn1(const struct connections_key *key,
237
243
const struct connections_data *crec,
255
static int traverse_sessionid(struct db_record *db, void *state)
261
static int traverse_sessionid(const char *key, struct sessionid *session,
257
struct sessionid sessionid;
258
264
fstring uid_str, gid_str;
260
if (db->value.dsize != sizeof(sessionid))
263
memcpy(&sessionid, db->value.dptr, sizeof(sessionid));
265
if (!process_exists(sessionid.pid) || !Ucrit_checkUid(sessionid.uid)) {
266
if (!process_exists(session->pid)
267
|| !Ucrit_checkUid(session->uid)) {
269
Ucrit_addPid( sessionid.pid );
271
Ucrit_addPid(session->pid);
271
fstr_sprintf(uid_str, "%u", (unsigned int)sessionid.uid);
272
fstr_sprintf(gid_str, "%u", (unsigned int)sessionid.gid);
273
fstr_sprintf(uid_str, "%u", (unsigned int)session->uid);
274
fstr_sprintf(gid_str, "%u", (unsigned int)session->gid);
274
276
d_printf("%-7s %-12s %-12s %-12s (%s)\n",
275
procid_str_static(&sessionid.pid),
276
numeric_only ? uid_str : uidtoname(sessionid.uid),
277
numeric_only ? gid_str : gidtoname(sessionid.gid),
278
sessionid.remote_machine, sessionid.hostname);
277
procid_str_static(&session->pid),
278
numeric_only ? uid_str : uidtoname(session->uid),
279
numeric_only ? gid_str : gidtoname(session->gid),
280
session->remote_machine, session->hostname);
312
314
load_case_tables();
314
setup_logging(argv[0],True);
316
setup_logging(argv[0], DEBUG_STDERR);
318
318
if (getuid() != geteuid()) {
319
319
d_printf("smbstatus should not be run setuid\n");
414
414
if ( show_processes ) {
415
struct db_context *db;
416
db = db_open(NULL, lock_path("sessionid.tdb"), 0,
417
TDB_CLEAR_IF_FIRST, O_RDONLY, 0644);
419
d_printf("sessionid.tdb not initialised\n");
421
d_printf("\nSamba version %s\n",samba_version_string());
422
d_printf("PID Username Group Machine \n");
423
d_printf("-------------------------------------------------------------------\n");
424
if (lp_security() == SEC_SHARE) {
425
d_printf(" <processes do not show up in "
426
"anonymous mode>\n");
429
db->traverse_read(db, traverse_sessionid, NULL);
415
d_printf("\nSamba version %s\n",samba_version_string());
416
d_printf("PID Username Group Machine \n");
417
d_printf("-------------------------------------------------------------------\n");
418
if (lp_security() == SEC_SHARE) {
419
d_printf(" <processes do not show up in "
420
"anonymous mode>\n");
423
sessionid_traverse_read(traverse_sessionid, NULL);
433
425
if (processes_only) {
447
439
d_printf("\nService pid machine Connected at\n");
448
440
d_printf("-------------------------------------------------------\n");
450
connections_forall(traverse_fn1, NULL);
442
connections_forall_read(traverse_fn1, NULL);
461
453
struct db_context *db;
462
454
db = db_open(NULL, lock_path("locking.tdb"), 0,
463
TDB_CLEAR_IF_FIRST, O_RDONLY, 0);
455
TDB_CLEAR_IF_FIRST|TDB_INCOMPATIBLE_HASH, O_RDONLY, 0);
466
458
d_printf("%s not initialised\n",