diff options
Diffstat (limited to 'bin')
-rw-r--r-- | bin/chgrp/chgrp.1 | 164 | ||||
-rw-r--r-- | bin/chgrp/chown.8 | 181 | ||||
-rw-r--r-- | bin/chgrp/chown.c | 284 |
3 files changed, 0 insertions, 629 deletions
diff --git a/bin/chgrp/chgrp.1 b/bin/chgrp/chgrp.1 deleted file mode 100644 index ffdd5a6..0000000 --- a/bin/chgrp/chgrp.1 +++ /dev/null @@ -1,164 +0,0 @@ -.\" Copyright (c) 1983, 1990, 1993, 1994, 2003 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" This code is derived from software contributed to Berkeley by -.\" the Institute of Electrical and Electronics Engineers, Inc. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 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. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" from: @(#)chgrp.1 8.3 (Berkeley) 3/31/94 -.\" $NetBSD: chgrp.1,v 1.8 2017/07/04 06:52:20 wiz Exp $ -.\" -.Dd October 22, 2012 -.Dt CHGRP 1 -.Os -.Sh NAME -.Nm chgrp -.Nd change group -.Sh SYNOPSIS -.Nm -.Oo -.Fl R -.Op Fl H | Fl L | Fl P -.Oc -.Op Fl fhv -.Ar group -.Ar -.Nm -.Oo -.Fl R -.Op Fl H | Fl L | Fl P -.Oc -.Op Fl fhv -.Fl Fl reference=rfile -.Ar -.Sh DESCRIPTION -The -.Nm -utility sets the group ID of the file named by each -.Ar file -operand to the -.Ar group -ID specified by the group operand. -.Pp -Options: -.Bl -tag -width Ds -.It Fl H -If the -.Fl R -option is specified, symbolic links on the command line are followed. -(Symbolic links encountered in the tree traversal are not followed.) -.It Fl L -If the -.Fl R -option is specified, all symbolic links are followed. -.It Fl P -If the -.Fl R -option is specified, no symbolic links are followed. -.It Fl R -Change the group ID for the file hierarchies rooted -in the files instead of just the files themselves. -.It Fl f -The force option ignores errors, except for usage errors and doesn't -query about strange modes (unless the user does not have proper permissions). -.It Fl h -If -.Ar file -is a symbolic link, the group of the link is changed. -.It Fl v -Cause -.Nm -to be verbose, showing files as they are processed. -.El -.Pp -If -.Fl h -is not given, unless the -.Fl H -or -.Fl L -option is set, -.Nm -on a symbolic link always succeeds and has no effect. -The -.Fl H , -.Fl L -and -.Fl P -options are ignored unless the -.Fl R -option is specified. -In addition, these options override each other and the -command's actions are determined by the last one specified. -The default is as if the -.Fl P -option had been specified. -.Pp -The -.Ar group -operand can be either a group name from the group database, -or a numeric group ID. -Since it is valid to have a group name that is numeric (and -doesn't have the numeric ID that matches its name) the name lookup -is always done first. -Preceding the ID with a ``#'' character will force it to be taken -as a number. -.Pp -The user invoking -.Nm -must belong to the specified group and be the owner of the file, -or be the super-user. -.Pp -Unless invoked by the super-user, -.Nm -clears the set-user-id and set-group-id bits on a file to prevent -accidental or mischievous creation of set-user-id or set-group-id -programs. -.Sh FILES -.Bl -tag -width /etc/group -compact -.It Pa /etc/group -Group ID file -.El -.Sh EXIT STATUS -.Ex -std chgrp -.Sh SEE ALSO -.Xr chown 2 , -.Xr lchown 2 , -.Xr fts 3 , -.Xr group 5 , -.Xr passwd 5 , -.Xr symlink 7 , -.Xr chown 8 -.Sh STANDARDS -The -.Nm -utility is expected to be POSIX 1003.2 compatible. -.Pp -The -.Fl v -option and the use of ``#'' to force a numeric group ID -are extensions to -.St -p1003.2 . diff --git a/bin/chgrp/chown.8 b/bin/chgrp/chown.8 deleted file mode 100644 index a4cd79d..0000000 --- a/bin/chgrp/chown.8 +++ /dev/null @@ -1,181 +0,0 @@ -.\" Copyright (c) 1990, 1991, 1993, 1994, 2003 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 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. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" from: @(#)chown.8 8.3 (Berkeley) 3/31/94 -.\" $NetBSD: chown.8,v 1.12 2017/07/04 06:53:12 wiz Exp $ -.\" -.Dd September 11, 2016 -.Dt CHOWN 8 -.Os -.Sh NAME -.Nm chown -.Nd change file owner and group -.Sh SYNOPSIS -.Nm -.Oo -.Fl R -.Op Fl H | Fl L | Fl P -.Oc -.Op Fl fhv -.Ar owner Ns Op Ar :group -.Ar -.Nm -.Oo -.Fl R -.Op Fl H | Fl L | Fl P -.Oc -.Op Fl fhv -.Ar :group -.Ar -.Nm -.Oo -.Fl R -.Op Fl H | Fl L | Fl P -.Oc -.Op Fl fhv -.Fl Fl reference=rfile -.Ar -.Sh DESCRIPTION -.Nm -sets the user ID and/or the group ID of the specified files. -Symbolic links named by arguments are silently left unchanged unless -.Fl h -is used. -.Pp -The options are as follows: -.Bl -tag -width Ds -.It Fl H -If the -.Fl R -option is specified, symbolic links on the command line are followed. -(Symbolic links encountered in the tree traversal are not followed.) -.It Fl L -If the -.Fl R -option is specified, all symbolic links are followed. -.It Fl P -If the -.Fl R -option is specified, no symbolic links are followed. -.It Fl R -Change the user ID and/or the group ID for the file hierarchies rooted -in the files instead of just the files themselves. -.It Fl f -Do not report any failure to change file owner or group, nor modify -the exit status to reflect such failures. -.It Fl h -If -.Ar file -is a symbolic link, the owner and/or group of the link is changed. -.It Fl v -Cause -.Nm -to be verbose, showing files as they are processed. -.El -.Pp -The -.Fl H , -.Fl L -and -.Fl P -options are ignored unless the -.Fl R -option is specified. -In addition, these options override each other and the -command's actions are determined by the last one specified. -The default is as if the -.Fl P -option had been specified. -.Pp -The -.Fl R -option cannot be used together with the -.Fl h -option. -.Pp -The -.Ar owner -and -.Ar group -operands are both optional, however, one must be specified. -If the -.Ar group -operand is specified, it must be preceded by a colon (``:'') character. -.Pp -The -.Ar owner -may be either a user name or a numeric user ID. -The -.Ar group -may be either a group name or a numeric group ID. -Since it is valid to have a user or group name that is numeric (and -does not have the numeric ID that matches its name) the name lookup -is always done first. -Preceding an ID with a ``#'' character will force it to be taken -as a number. -.Pp -The ownership of a file may only be altered by a super-user for -obvious security reasons. -.Pp -Unless invoked by the super-user, -.Nm -clears the set-user-id and set-group-id bits on a file to prevent -accidental or mischievous creation of set-user-id and set-group-id -programs. -.Sh EXIT STATUS -.Ex -std chown -.Sh COMPATIBILITY -Previous versions of the -.Nm -utility used the dot (``.'') character to distinguish the group name. -This has been changed to be a colon (``:'') character so that user and -group names may contain the dot character. -.Sh SEE ALSO -.Xr chflags 1 , -.Xr chgrp 1 , -.Xr find 1 , -.Xr chown 2 , -.Xr lchown 2 , -.Xr fts 3 , -.Xr symlink 7 -.Sh STANDARDS -The -.Nm -command is specified by POSIX.1-2017. -.Pp -The -.Fl v -and -.Fl f -options and the use of ``#'' to force a numeric lookup -are extensions to -.St -p1003.2 . -.Sh HISTORY -A -.Nm -utility appeared in -.At v1 . diff --git a/bin/chgrp/chown.c b/bin/chgrp/chown.c deleted file mode 100644 index 493d103..0000000 --- a/bin/chgrp/chown.c +++ /dev/null @@ -1,284 +0,0 @@ -/* $NetBSD: chown.c,v 1.8 2012/10/24 01:12:51 enami Exp $ */ - -/* - * Copyright (c) 1988, 1993, 1994, 2003 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 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. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> -#ifndef lint -__COPYRIGHT("@(#) Copyright (c) 1988, 1993, 1994, 2003\ - The Regents of the University of California. All rights reserved."); -#endif /* not lint */ - -#ifndef lint -#if 0 -static char sccsid[] = "@(#)chown.c 8.8 (Berkeley) 4/4/94"; -#else -__RCSID("$NetBSD: chown.c,v 1.8 2012/10/24 01:12:51 enami Exp $"); -#endif -#endif /* not lint */ - -#include <sys/types.h> -#include <sys/stat.h> - -#include <ctype.h> -#include <dirent.h> -#include <err.h> -#include <errno.h> -#include <locale.h> -#include <fts.h> -#include <grp.h> -#include <pwd.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <getopt.h> - -static void a_gid(const char *); -static void a_uid(const char *); -static id_t id(const char *, const char *); -__dead static void usage(void); - -static uid_t uid; -static gid_t gid; -static int ischown; -static const char *myname; - -int -main(int argc, char **argv) -{ - FTS *ftsp; - FTSENT *p; - int Hflag, Lflag, Rflag, ch, fflag, fts_options, hflag, rval, vflag; - char *cp, *reference; - int (*change_owner)(const char *, uid_t, gid_t); - - setprogname(*argv); - - (void)setlocale(LC_ALL, ""); - - myname = getprogname(); - ischown = (myname[2] == 'o'); - reference = NULL; - - Hflag = Lflag = Rflag = fflag = hflag = vflag = 0; - while ((ch = getopt(argc, argv, "HLPRfhv")) != -1) - switch (ch) { - case 'H': - Hflag = 1; - Lflag = 0; - break; - case 'L': - Lflag = 1; - Hflag = 0; - break; - case 'P': - Hflag = Lflag = 0; - break; - case 'R': - Rflag = 1; - break; - case 'f': - fflag = 1; - break; - case 'h': - /* - * In System V the -h option causes chown/chgrp to - * change the owner/group of the symbolic link. - * 4.4BSD's symbolic links didn't have owners/groups, - * so it was an undocumented noop. - * In NetBSD 1.3, lchown(2) is introduced. - */ - hflag = 1; - break; - case 'v': - vflag = 1; - break; - case '?': - default: - usage(); - } - argv += optind; - argc -= optind; - - if (argc == 0 || (argc == 1 && reference == NULL)) - usage(); - - fts_options = FTS_PHYSICAL; - if (Rflag) { - if (hflag) { - errx(EXIT_FAILURE, - "the -R and -h options " - "may not be specified together."); - } - if (Hflag) - fts_options |= FTS_COMFOLLOW; - if (Lflag) { - fts_options &= ~FTS_PHYSICAL; - fts_options |= FTS_LOGICAL; - } - } else if (!hflag) { - fts_options |= FTS_COMFOLLOW; - } - - uid = (uid_t)-1; - gid = (gid_t)-1; - if (ischown) { - if ((cp = strchr(*argv, ':')) != NULL) { - *cp++ = '\0'; - a_gid(cp); - } - a_uid(*argv); - } else { - a_gid(*argv); - } - argv++; - - if ((ftsp = fts_open(argv, fts_options, NULL)) == NULL) { - err(EXIT_FAILURE, "fts_open"); - } - - for (rval = EXIT_SUCCESS; (p = fts_read(ftsp)) != NULL;) { - change_owner = chown; - switch (p->fts_info) { - case FTS_D: - if (!Rflag) /* Change it at FTS_DP. */ - fts_set(ftsp, p, FTS_SKIP); - continue; - case FTS_DNR: /* Warn, chown, continue. */ - warnx("%s: %s", p->fts_path, strerror(p->fts_errno)); - rval = EXIT_FAILURE; - break; - case FTS_ERR: /* Warn, continue. */ - case FTS_NS: - warnx("%s: %s", p->fts_path, strerror(p->fts_errno)); - rval = EXIT_FAILURE; - continue; - case FTS_SL: /* Ignore unless -h. */ - /* - * All symlinks we found while doing a physical - * walk end up here. - */ - if (!hflag) - continue; - /* - * Note that if we follow a symlink, fts_info is - * not FTS_SL but FTS_F or whatever. And we should - * use lchown only for FTS_SL and should use chown - * for others. - */ - change_owner = lchown; - break; - case FTS_SLNONE: /* Ignore. */ - /* - * The only symlinks that end up here are ones that - * don't point to anything. Note that if we are - * doing a phisycal walk, we never reach here unless - * we asked to follow explicitly. - */ - continue; - default: - break; - } - - if ((*change_owner)(p->fts_accpath, uid, gid) && !fflag) { - warn("%s", p->fts_path); - rval = EXIT_FAILURE; - } else { - if (vflag) - printf("%s\n", p->fts_path); - } - } - if (errno) { - err(EXIT_FAILURE, "fts_read"); - } - exit(rval); - /* NOTREACHED */ -} - -static void -a_gid(const char *s) -{ - struct group *gr; - - if (*s == '\0') { /* Argument was "uid[:.]". */ - return; - } - gr = *s == '#' ? NULL : getgrnam(s); - if (gr == NULL) { - gid = id(s, "group"); - } else { - gid = gr->gr_gid; - } - return; -} - -static void -a_uid(const char *s) -{ - if (*s == '\0') { /* Argument was "[:.]gid". */ - return; - } - if (*s == '#' || uid_from_user(s, &uid) == -1) { - uid = id(s, "user"); - } - return; -} - -static id_t -id(const char *name, const char *type) -{ - id_t val; - char *ep; - - errno = 0; - if (*name == '#') { - name++; - } - val = (id_t)strtoul(name, &ep, 10); - if (errno) { - err(EXIT_FAILURE, "%s", name); - } - if (*ep != '\0') { - errx(EXIT_FAILURE, "%s: invalid %s name", name, type); - } - return (val); -} - -static void -usage(void) -{ - - (void)fprintf(stderr, - "Usage: %s [-fhv] %s file ...\n" - "\t%s -R [-H | -L | -P] [-fv] file ...\n", - myname, ischown ? "owner:group|owner|:group" : "group", - myname); - exit(EXIT_FAILURE); -} |