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>
next in thread | raw e-mail | index | archive | help
>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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19980914211723.9A1B64217>