From: Masatake YAMATO Date: Tue, 4 May 2021 18:36:09 +0000 (+0900) Subject: lsfd: print the owner of process as USER X-Git-Tag: v2.38-rc1~144^2~161 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d754885aa6ba51df58e7dd3dfe1223b6f698f035;p=thirdparty%2Futil-linux.git lsfd: print the owner of process as USER Signed-off-by: Masatake YAMATO --- diff --git a/misc-utils/lsfd-file.c b/misc-utils/lsfd-file.c index e350dfd5c6..8fbf825251 100644 --- a/misc-utils/lsfd-file.c +++ b/misc-utils/lsfd-file.c @@ -96,10 +96,10 @@ static bool file_fill_column(struct proc *proc, err(EXIT_FAILURE, _("failed to add output data")); return true; case COL_USER: - add_uid(username_cache, (int)file->stat.st_uid); + add_uid(username_cache, (int)proc->uid); if (scols_line_set_data(ln, column_index, get_id(username_cache, - (int)file->stat.st_uid)->name)) + (int)proc->uid)->name)) err(EXIT_FAILURE, _("failed to add output data")); return true; case COL_FD: @@ -134,7 +134,7 @@ static bool file_fill_column(struct proc *proc, xasprintf(&str, "%d", (int)proc->pid); break; case COL_UID: - xasprintf(&str, "%d", (int)file->stat.st_uid); + xasprintf(&str, "%d", (int)proc->uid); break; case COL_SIZE: xasprintf(&str, "%ju", file->stat.st_size); diff --git a/misc-utils/lsfd.c b/misc-utils/lsfd.c index c9952d73e6..f3c997bdc8 100644 --- a/misc-utils/lsfd.c +++ b/misc-utils/lsfd.c @@ -369,6 +369,13 @@ static struct file *collect_outofbox_file(int dd, const char *name, int associat return collect_file(&sb, sym, association); } +static void collect_proc_uid(struct proc *proc, int dd) +{ + struct stat sb; + if (fstat(dd, &sb) == 0) + proc->uid = sb.st_uid; +} + static void collect_outofbox_files(struct proc *proc, const char *proc_template, enum association assocs[], @@ -388,6 +395,9 @@ static void collect_outofbox_files(struct proc *proc, for (unsigned int i = 0; i < count; i++) { struct file *file; + if (assocs[i] == ASSOC_EXE) + collect_proc_uid(proc, dd); + if ((file = collect_outofbox_file(dd, assoc_names[assocs[i]], assocs[i] * -1)) == NULL) diff --git a/misc-utils/lsfd.h b/misc-utils/lsfd.h index 17c0a37739..9927ed0c67 100644 --- a/misc-utils/lsfd.h +++ b/misc-utils/lsfd.h @@ -92,6 +92,7 @@ enum association { struct proc { pid_t pid; char *command; + uid_t uid; struct list_head procs; struct list_head files; };