summaryrefslogtreecommitdiffstats
path: root/usr.sbin/chown
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/chown')
-rw-r--r--usr.sbin/chown/Makefile8
-rw-r--r--usr.sbin/chown/chgrp.1145
-rw-r--r--usr.sbin/chown/chown.8170
-rw-r--r--usr.sbin/chown/chown.c315
4 files changed, 0 insertions, 638 deletions
diff --git a/usr.sbin/chown/Makefile b/usr.sbin/chown/Makefile
deleted file mode 100644
index 97972e5..0000000
--- a/usr.sbin/chown/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 6/6/93
-# $FreeBSD$
-
-PROG= chown
-LINKS= ${BINDIR}/chown /usr/bin/chgrp
-MAN= chgrp.1 chown.8
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/chown/chgrp.1 b/usr.sbin/chown/chgrp.1
deleted file mode 100644
index 8a4c271..0000000
--- a/usr.sbin/chown/chgrp.1
+++ /dev/null
@@ -1,145 +0,0 @@
-.\" Copyright (c) 1983, 1990, 1993, 1994
-.\" 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.
-.\" 4. 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.
-.\"
-.\" @(#)chgrp.1 8.3 (Berkeley) 3/31/94
-.\" $FreeBSD$
-.\"
-.Dd February 21, 2010
-.Dt CHGRP 1
-.Os
-.Sh NAME
-.Nm chgrp
-.Nd change group
-.Sh SYNOPSIS
-.Nm
-.Op Fl fhvx
-.Oo
-.Fl R
-.Op Fl H | Fl L | Fl P
-.Oc
-.Ar group
-.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
-The following options are available:
-.Bl -tag -width indent
-.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.
-This is the default.
-.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 does not
-query about strange modes (unless the user does not have proper permissions).
-.It Fl h
-If the file is a symbolic link, the group ID of the link itself is changed
-rather than the file that is pointed to.
-.It Fl v
-Cause
-.Nm
-to be verbose, showing files as the group is modified.
-If the
-.Fl v
-flag is specified more than once,
-.Nm
-will print the filename, followed by the old and new numeric group ID.
-.It Fl x
-File system mount points are not traversed.
-.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.
-.Pp
-The
-.Ar group
-operand can be either a group name from the group database,
-or a numeric group ID.
-If a group name is also a numeric group ID, the operand is used as a
-group name.
-.Pp
-The user invoking
-.Nm
-must belong to the specified group and be the owner of the file,
-or be the super-user.
-.Sh FILES
-.Bl -tag -width /etc/group -compact
-.It Pa /etc/group
-group ID file
-.El
-.Sh EXIT STATUS
-.Ex -std
-.Sh COMPATIBILITY
-In previous versions of this system, symbolic links did not have groups.
-.Pp
-The
-.Fl v
-and
-.Fl x
-options are non-standard and their use in scripts is not recommended.
-.Sh SEE ALSO
-.Xr chown 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
-.St -p1003.2
-compatible.
diff --git a/usr.sbin/chown/chown.8 b/usr.sbin/chown/chown.8
deleted file mode 100644
index b5882a3..0000000
--- a/usr.sbin/chown/chown.8
+++ /dev/null
@@ -1,170 +0,0 @@
-.\" Copyright (c) 1990, 1991, 1993, 1994
-.\" 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.
-.\" 4. 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.
-.\"
-.\" @(#)chown.8 8.3 (Berkeley) 3/31/94
-.\" $FreeBSD$
-.\"
-.Dd February 21, 2010
-.Dt CHOWN 8
-.Os
-.Sh NAME
-.Nm chown
-.Nd change file owner and group
-.Sh SYNOPSIS
-.Nm
-.Op Fl fhvx
-.Oo
-.Fl R
-.Op Fl H | Fl L | Fl P
-.Oc
-.Ar owner Ns Op : Ns Ar group
-.Ar
-.Nm
-.Op Fl fhvx
-.Oo
-.Fl R
-.Op Fl H | Fl L | Fl P
-.Oc
-.No : Ns Ar group
-.Ar
-.Sh DESCRIPTION
-The
-.Nm
-utility changes 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.
-This is the default.
-.It Fl R
-Change the user ID and/or the group ID of the specified directory trees
-(recursively, including their contents) and files.
-Beware of unintentionally matching the
-.Dq Pa ".."
-hard link to the parent directory when using wildcards like
-.Dq Li ".*" .
-.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 the file is a symbolic link, change the user ID and/or the
-group ID of the link itself.
-.It Fl v
-Cause
-.Nm
-to be verbose, showing files as the owner is modified.
-If the
-.Fl v
-flag is specified more than once,
-.Nm
-will print the filename, followed by the old and new numeric user/group ID.
-.It Fl x
-File system mount points are not traversed.
-.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.
-.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 numeric user ID or a user name.
-If a user name is also a numeric user ID, the operand is used as a
-user name.
-The
-.Ar group
-may be either a numeric group ID or a group name.
-If a group name is also a numeric group ID, the operand is used as a
-group name.
-.Pp
-The ownership of a file may only be altered by a super-user for
-obvious security reasons.
-.Sh EXIT STATUS
-.Ex -std
-.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.
-.Pp
-On previous versions of this system, symbolic links did not have
-owners.
-.Pp
-The
-.Fl v
-and
-.Fl x
-options are non-standard and their use in scripts is not recommended.
-.Sh SEE ALSO
-.Xr chgrp 1 ,
-.Xr find 1 ,
-.Xr chown 2 ,
-.Xr fts 3 ,
-.Xr symlink 7
-.Sh STANDARDS
-The
-.Nm
-utility is expected to be
-.St -p1003.2
-compliant.
-.Sh HISTORY
-A
-.Nm
-utility appeared in
-.At v1 .
diff --git a/usr.sbin/chown/chown.c b/usr.sbin/chown/chown.c
deleted file mode 100644
index e13235c..0000000
--- a/usr.sbin/chown/chown.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * Copyright (c) 1988, 1993, 1994
- * 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.
- * 4. 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.
- */
-
-#if 0
-#ifndef lint
-static const char copyright[] =
-"@(#) Copyright (c) 1988, 1993, 1994\n\
- The Regents of the University of California. All rights reserved.\n";
-#endif /* not lint */
-
-#ifndef lint
-static char sccsid[] = "@(#)chown.c 8.8 (Berkeley) 4/4/94";
-#endif /* not lint */
-#endif
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/stat.h>
-
-#include <err.h>
-#include <errno.h>
-#include <fts.h>
-#include <grp.h>
-#include <libgen.h>
-#include <pwd.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-void a_gid(const char *);
-void a_uid(const char *);
-void chownerr(const char *);
-uid_t id(const char *, const char *);
-void usage(void);
-
-uid_t uid;
-gid_t gid;
-int ischown;
-const char *gname;
-
-int
-main(int argc, char **argv)
-{
- FTS *ftsp;
- FTSENT *p;
- int Hflag, Lflag, Rflag, fflag, hflag, vflag, xflag;
- int ch, fts_options, rval;
- char *cp;
-
- ischown = (strcmp(basename(argv[0]), "chown") == 0);
-
- Hflag = Lflag = Rflag = fflag = hflag = vflag = xflag = 0;
- while ((ch = getopt(argc, argv, "HLPRfhvx")) != -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':
- hflag = 1;
- break;
- case 'v':
- vflag++;
- break;
- case 'x':
- xflag = 1;
- break;
- case '?':
- default:
- usage();
- }
- argv += optind;
- argc -= optind;
-
- if (argc < 2)
- usage();
-
- if (Rflag) {
- fts_options = FTS_PHYSICAL;
- if (hflag && (Hflag || Lflag))
- errx(1, "the -R%c and -h options may not be "
- "specified together", Hflag ? 'H' : 'L');
- if (Hflag)
- fts_options |= FTS_COMFOLLOW;
- else if (Lflag) {
- fts_options &= ~FTS_PHYSICAL;
- fts_options |= FTS_LOGICAL;
- }
- } else
- fts_options = hflag ? FTS_PHYSICAL : FTS_LOGICAL;
- if (xflag)
- fts_options |= FTS_XDEV;
-
- uid = (uid_t)-1;
- gid = (gid_t)-1;
- if (ischown) {
- if ((cp = strchr(*argv, ':')) != NULL) {
- *cp++ = '\0';
- a_gid(cp);
- }
-#ifdef SUPPORT_DOT
- else if ((cp = strchr(*argv, '.')) != NULL) {
- warnx("separation of user and group with a period is deprecated");
- *cp++ = '\0';
- a_gid(cp);
- }
-#endif
- a_uid(*argv);
- } else
- a_gid(*argv);
-
- if ((ftsp = fts_open(++argv, fts_options, 0)) == NULL)
- err(1, NULL);
-
- for (rval = 0; (p = fts_read(ftsp)) != NULL;) {
- switch (p->fts_info) {
- case FTS_D: /* Change it at FTS_DP. */
- if (!Rflag)
- fts_set(ftsp, p, FTS_SKIP);
- continue;
- case FTS_DNR: /* Warn, chown. */
- warnx("%s: %s", p->fts_path, strerror(p->fts_errno));
- rval = 1;
- break;
- case FTS_ERR: /* Warn, continue. */
- case FTS_NS:
- warnx("%s: %s", p->fts_path, strerror(p->fts_errno));
- rval = 1;
- continue;
- case FTS_SL:
- case FTS_SLNONE:
- /*
- * The only symlinks that end up here are ones that
- * don't point to anything and ones that we found
- * doing a physical walk.
- */
- if (hflag)
- break;
- else
- continue;
- default:
- break;
- }
- if ((uid == (uid_t)-1 || uid == p->fts_statp->st_uid) &&
- (gid == (gid_t)-1 || gid == p->fts_statp->st_gid))
- continue;
- if ((hflag ? lchown : chown)(p->fts_accpath, uid, gid) == -1) {
- if (!fflag) {
- chownerr(p->fts_path);
- rval = 1;
- }
- } else {
- if (vflag) {
- printf("%s", p->fts_path);
- if (vflag > 1) {
- if (ischown) {
- printf(": %ju:%ju -> %ju:%ju",
- (uintmax_t)
- p->fts_statp->st_uid,
- (uintmax_t)
- p->fts_statp->st_gid,
- (uid == (uid_t)-1) ?
- (uintmax_t)
- p->fts_statp->st_uid :
- (uintmax_t)uid,
- (gid == (gid_t)-1) ?
- (uintmax_t)
- p->fts_statp->st_gid :
- (uintmax_t)gid);
- } else {
- printf(": %ju -> %ju",
- (uintmax_t)
- p->fts_statp->st_gid,
- (gid == (gid_t)-1) ?
- (uintmax_t)
- p->fts_statp->st_gid :
- (uintmax_t)gid);
- }
- }
- printf("\n");
- }
- }
- }
- if (errno)
- err(1, "fts_read");
- exit(rval);
-}
-
-void
-a_gid(const char *s)
-{
- struct group *gr;
-
- if (*s == '\0') /* Argument was "uid[:.]". */
- return;
- gname = s;
- gid = ((gr = getgrnam(s)) != NULL) ? gr->gr_gid : id(s, "group");
-}
-
-void
-a_uid(const char *s)
-{
- struct passwd *pw;
-
- if (*s == '\0') /* Argument was "[:.]gid". */
- return;
- uid = ((pw = getpwnam(s)) != NULL) ? pw->pw_uid : id(s, "user");
-}
-
-uid_t
-id(const char *name, const char *type)
-{
- uid_t val;
- char *ep;
-
- /*
- * XXX
- * We know that uid_t's and gid_t's are unsigned longs.
- */
- errno = 0;
- val = strtoul(name, &ep, 10);
- if (errno || *ep != '\0')
- errx(1, "%s: illegal %s name", name, type);
- return (val);
-}
-
-void
-chownerr(const char *file)
-{
- static uid_t euid = -1;
- static int ngroups = -1;
- static long ngroups_max;
- gid_t *groups;
-
- /* Check for chown without being root. */
- if (errno != EPERM || (uid != (uid_t)-1 &&
- euid == (uid_t)-1 && (euid = geteuid()) != 0)) {
- warn("%s", file);
- return;
- }
-
- /* Check group membership; kernel just returns EPERM. */
- if (gid != (gid_t)-1 && ngroups == -1 &&
- euid == (uid_t)-1 && (euid = geteuid()) != 0) {
- ngroups_max = sysconf(_SC_NGROUPS_MAX) + 1;
- if ((groups = malloc(sizeof(gid_t) * ngroups_max)) == NULL)
- err(1, "malloc");
- ngroups = getgroups(ngroups_max, groups);
- while (--ngroups >= 0 && gid != groups[ngroups]);
- free(groups);
- if (ngroups < 0) {
- warnx("you are not a member of group %s", gname);
- return;
- }
- }
- warn("%s", file);
-}
-
-void
-usage(void)
-{
-
- if (ischown)
- (void)fprintf(stderr, "%s\n%s\n",
- "usage: chown [-fhvx] [-R [-H | -L | -P]] owner[:group]"
- " file ...",
- " chown [-fhvx] [-R [-H | -L | -P]] :group file ...");
- else
- (void)fprintf(stderr, "%s\n",
- "usage: chgrp [-fhvx] [-R [-H | -L | -P]] group file ...");
- exit(1);
-}
OpenPOWER on IntegriCloud