PERFORCE change 43050 for review
Robert Watson
rwatson at FreeBSD.org
Wed Nov 26 04:50:07 GMT 2003
http://perforce.freebsd.org/chv.cgi?CH=43050
Change 43050 by rwatson at rwatson_paprika on 2003/11/25 20:49:22
Add "id -M" support; displays the MAC label of the current
process in a style similar to the same argument on Trusted
IRIX.
Affected files ...
.. //depot/projects/trustedbsd/mac/usr.bin/id/id.1#2 edit
.. //depot/projects/trustedbsd/mac/usr.bin/id/id.c#6 edit
Differences ...
==== //depot/projects/trustedbsd/mac/usr.bin/id/id.1#2 (text+ko) ====
@@ -48,6 +48,8 @@
.Fl G Op Fl n
.Op Ar user
.Nm
+.Fl M
+.Nm
.Fl P
.Op Ar user
.Nm
@@ -78,6 +80,8 @@
.It Fl G
Display the different group IDs (effective, real and supplementary)
as white-space separated numbers, in no particular order.
+.It Fl M
+Display the MAC label of the current prorcess.
.It Fl P
Display the id as a password file entry.
.It Fl g
==== //depot/projects/trustedbsd/mac/usr.bin/id/id.c#6 (text+ko) ====
@@ -46,8 +46,10 @@
__FBSDID("$FreeBSD: src/usr.bin/id/id.c,v 1.19 2002/09/04 23:29:02 dwmalone Exp $");
#include <sys/param.h>
+#include <sys/mac.h>
#include <err.h>
+#include <errno.h>
#include <grp.h>
#include <pwd.h>
#include <stdio.h>
@@ -59,6 +61,7 @@
void pline(struct passwd *);
void pretty(struct passwd *);
void group(struct passwd *, int);
+void maclabel(void);
void usage(void);
void user(struct passwd *);
struct passwd *
@@ -71,10 +74,10 @@
{
struct group *gr;
struct passwd *pw;
- int Gflag, Pflag, ch, gflag, id, nflag, pflag, rflag, uflag;
+ int Gflag, Mflag, Pflag, ch, gflag, id, nflag, pflag, rflag, uflag;
const char *myname;
- Gflag = Pflag = gflag = nflag = pflag = rflag = uflag = 0;
+ Gflag = Mflag = Pflag = gflag = nflag = pflag = rflag = uflag = 0;
myname = strrchr(argv[0], '/');
myname = (myname != NULL) ? myname + 1 : argv[0];
@@ -88,11 +91,14 @@
}
while ((ch = getopt(argc, argv,
- (isgroups || iswhoami) ? "" : "PGgnpru")) != -1)
+ (isgroups || iswhoami) ? "" : "PGMgnpru")) != -1)
switch(ch) {
case 'G':
Gflag = 1;
break;
+ case 'M':
+ Mflag = 1;
+ break;
case 'P':
Pflag = 1;
break;
@@ -134,6 +140,9 @@
pw = *argv ? who(*argv) : NULL;
+ if (Mflag && pw != NULL)
+ usage();
+
if (gflag) {
id = pw ? pw->pw_gid : rflag ? getgid() : getegid();
if (nflag && (gr = getgrgid(id)))
@@ -157,6 +166,11 @@
exit(0);
}
+ if (Mflag) {
+ maclabel();
+ exit(0);
+ }
+
if (Pflag) {
pline(pw);
exit(0);
@@ -317,6 +331,30 @@
(void)printf("\n");
}
+void
+maclabel(void)
+{
+ char *string;
+ mac_t label;
+ int error;
+
+ error = mac_prepare_process_label(&label);
+ if (error == -1)
+ errx(1, "mac_prepare_type: %s", strerror(errno));
+
+ error = mac_get_proc(label);
+ if (error == -1)
+ errx(1, "mac_get_proc: %s", strerror(errno));
+
+ error = mac_to_text(label, &string);
+ if (error == -1)
+ errx(1, "mac_to_text: %s", strerror(errno));
+
+ (void)printf("%s\n", string);
+ mac_free(label);
+ free(string);
+}
+
struct passwd *
who(char *u)
{
@@ -366,6 +404,7 @@
(void)fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n",
"usage: id [user]",
" id -G [-n] [user]",
+ " id -M",
" id -P [user]",
" id -g [-nr] [user]",
" id -p [user]",
To Unsubscribe: send mail to majordomo at trustedbsd.org
with "unsubscribe trustedbsd-cvs" in the body of the message
More information about the trustedbsd-cvs
mailing list