Date: Mon, 14 Sep 1998 23:17:23 +0200 (CEST) From: xaa@xaa.iae.nl To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: bin/7929: chpass with -c CLASS to change class Message-ID: <19980914211723.9A1B64217@ariel.xaa.iae.nl>
index | next in thread | raw e-mail
>Number: 7929
>Category: bin
>Synopsis: extra option for chclass
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Mon Sep 14 14:20:00 PDT 1998
>Last-Modified:
>Originator: Mark Huizer
>Organization:
>Release: FreeBSD 3.0-CURRENT i386
>Environment:
current / 2.2.7 systems
>Description:
there is no easy way to change loginclasses from scripts, the
way you can do it with chpass -s SHELL user
>How-To-Repeat:
>Fix:
This patch will add chpass -c CLASSNAME to the possibilities, sorry,
haven't changed usage() and manpage yet.
--- usr.bin/chpass/chpass.c.orig Mon Sep 14 22:43:55 1998
+++ usr.bin/chpass/chpass.c Mon Sep 14 23:08:47 1998
@@ -82,7 +82,7 @@
int argc;
char **argv;
{
- enum { NEWSH, LOADENTRY, EDITENTRY, NEWPW, NEWEXP } op;
+ enum { NEWSH, NEWCLASS, LOADENTRY, EDITENTRY, NEWPW, NEWEXP } op;
struct passwd *pw, lpw;
char *username = NULL;
int ch, pfd, tfd;
@@ -94,9 +94,9 @@
op = EDITENTRY;
#ifdef YP
- while ((ch = getopt(argc, argv, "a:p:s:e:d:h:oly")) != -1)
+ while ((ch = getopt(argc, argv, "a:p:c:s:e:d:h:oly")) != -1)
#else
- while ((ch = getopt(argc, argv, "a:p:s:e:")) != -1)
+ while ((ch = getopt(argc, argv, "a:p:c:s:e:")) != -1)
#endif
switch(ch) {
case 'a':
@@ -115,6 +115,10 @@
op = NEWEXP;
arg = optarg;
break;
+ case 'c':
+ op = NEWCLASS;
+ arg = optarg;
+ break;
#ifdef YP
case 'h':
#ifdef PARANOID
@@ -160,7 +164,7 @@
uid = getuid();
- if (op == EDITENTRY || op == NEWSH || op == NEWPW || op == NEWEXP)
+ if (op == EDITENTRY || op == NEWSH || op == NEWPW || op == NEWEXP || op == NEWCLASS)
switch(argc) {
#ifdef YP
case 0:
@@ -199,7 +203,12 @@
if (p_expire(arg, pw, (ENTRY *)NULL))
pw_error((char *)NULL, 0, 1);
}
-
+ if (op == NEWCLASS) {
+ if (uid) /* only root can change class */
+ baduser();
+ if (p_class(arg, pw, (ENTRY *)NULL))
+ pw_error((char *)NULL, 0, 1);
+ }
if (op == LOADENTRY) {
if (uid)
baduser();
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19980914211723.9A1B64217>
