Add an 'add' command to ugidfw(8), which permits specifying a new

rule without explicitly specifying a new rule number.

Update copyrights, remove license clause three.

Obtained from:	TrustedBSD Project
Sponsored by:	DARPA, McAfee Research
This commit is contained in:
Robert Watson 2004-02-25 03:59:56 +00:00
parent 47ab23aa82
commit ae5fbd9b53
2 changed files with 65 additions and 10 deletions

View file

@ -1,4 +1,4 @@
.\" Copyright (c) 2002 Networks Associates Technology, Inc.
.\" Copyright (c) 2002, 2004 Networks Associates Technology, Inc.
.\" All rights reserved.
.\"
.\" This software was developed for the FreeBSD Project by Chris
@ -15,9 +15,6 @@
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. The names of the authors may not be used to endorse or promote
.\" products derived from this software without specific prior written
.\" permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@ -33,7 +30,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd October 11, 2002
.Dd February 24, 2004
.Dt UGIDFW 8
.Os
.Sh NAME
@ -41,6 +38,18 @@
.Nd "firewall-like access controls for file system objects"
.Sh SYNOPSIS
.Nm
.Cm add
.Cm subject
.Op Cm not
.Op Cm uid Ar uid
.Op Cm gid Ar gid
.Cm object
.Op Cm not
.Op Cm uid Ar uid
.Op Cm gid Ar gid
.Cm mode
.Ar arswxn
.Nm
.Cm list
.Nm
.Cm set
@ -71,6 +80,27 @@ policy.
.Pp
The arguments are as follows:
.Bl -tag -width indent -offset indent
.It Cm add
Add a new
.Nm
rule.
.It Xo
.Cm add
.Cm subject
.Op Cm not
.Op Cm uid Ar uid
.Op Cm gid Ar gid
.Cm object
.Op Cm not
.Op Cm uid Ar uid
.Op Cm gid Ar gid
.Cm mode
.Ar arswxn
.Xc
Add a new rule, automatically selecting the rule number.
See the description of
.Cm set
for syntax information.
.It Cm list
Produces a list of all the current
.Nm

View file

@ -1,5 +1,5 @@
/*-
* Copyright (c) 2002 Networks Associates Technology, Inc.
* Copyright (c) 2002, 2004 Networks Associates Technology, Inc.
* All rights reserved.
*
* This software was developed for the FreeBSD Project by NAI Labs, the
@ -15,9 +15,6 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The names of the authors may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@ -50,6 +47,9 @@ void
usage(void)
{
fprintf(stderr, "ugidfw add [subject [not] [uid uid] [gid gid]]"
" [object [not] [uid uid] \\\n");
fprintf(stderr, " [gid gid]] mode arswxn\n");
fprintf(stderr, "ugidfw list\n");
fprintf(stderr, "ugidfw set rulenum [subject [not] [uid uid] [gid gid]]"
" [object [not] \\\n");
@ -59,6 +59,29 @@ usage(void)
exit(-1);
}
void
add_rule(int argc, char *argv[])
{
char errstr[BUFSIZ];
struct mac_bsdextended_rule rule;
long value;
int error, rulenum;
char *endp;
error = bsde_parse_rule(argc, argv, &rule, BUFSIZ, errstr);
if (error) {
fprintf(stderr, "%s\n", errstr);
return;
}
error = bsde_add_rule(&rulenum, &rule, BUFSIZ, errstr);
if (error) {
fprintf(stderr, "%s\n", errstr);
return;
}
printf("Added rule %d\n", rulenum);
}
void
list_rules(void)
{
@ -168,7 +191,9 @@ main(int argc, char *argv[])
if (argc < 2)
usage();
if (strcmp("list", argv[1]) == 0) {
if (strcmp("add", argv[1]) == 0) {
add_rule(argc-2, argv+2);
} else if (strcmp("list", argv[1]) == 0) {
if (argc != 2)
usage();
list_rules();