Commit Graph

124 Commits

Author SHA1 Message Date
Karel Zak 47b014f776 su: fix stupid typo
Signed-off-by: Karel Zak <kzak@redhat.com>
2012-11-01 13:03:28 +01:00
Karel Zak cf1a99dacc su: move generic su code to su-common.c
Signed-off-by: Karel Zak <kzak@redhat.com>
2012-09-04 17:00:30 +02:00
Karel Zak 8528ea2f81 su: add --group and --supp-group options
These options allow to specify alternative groups. The command
su(1) has to be executed by root. The implementation is based on
Fedora runuser(1) command.

For example:

 # su --group=kzak --supp-group=uuidd -
 # id
 uid=0(root) gid=1000(kzak) groups=0(root),985(uuidd),1000(kzak)

non-root user:

 $ su --group=kzak -
 su: only root can specify alternative groups

Signed-off-by: Karel Zak <kzak@redhat.com>
2012-09-04 17:00:30 +02:00
Karel Zak 99b765f0c4 su: use xstrdup()
Signed-off-by: Karel Zak <kzak@redhat.com>
2012-07-26 21:48:50 +02:00
Karel Zak 1775fce841 su: fix compiler warning [-Wmissing-prototypes]
Signed-off-by: Karel Zak <kzak@redhat.com>
2012-07-16 18:31:45 +02:00
Sami Kerola 9d13b6d54a su: align with howto-usage-function
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
2012-07-16 18:18:21 +02:00
Karel Zak d5f9b6e5fb Merge branch '2012wk23' of git://github.com/kerolasa/lelux-utiliteetit
* '2012wk23' of git://github.com/kerolasa/lelux-utiliteetit:
  lsblk: use blkdev_scsi_type_to_name()
  blkdev: add blkdev_scsi_type_to_name()
  wipefs: use symbolic value for markup mode
  eject: inform if CD-ROM drive is not ready
  docs: clean up partx.8 manual
  include: fix void pointer arithmetics warnings
  sysfs: fix printf format warnings
  build: fix unused parameter warnings
  build: fix redundant redeclaration warnings
  include: fix spurious list.h warnings
  uuidd: use output redirection which works [checkbashisms]
  blkid: fix realloc memory leak [cppcheck]
  setarch: do not use -1 as array index [cppcheck]
2012-06-15 12:44:17 +02:00
Bernhard Voelker f5caaf39d2 su: remove unimplemented options -u and -v
Signed-off-by: Bernhard Voelker <mail@bernhard-voelker.de>
2012-06-15 11:18:08 +02:00
Sami Kerola 0e9b73d3fb build: fix redundant redeclaration warnings
env.c:24:15: warning: redundant redeclaration of 'environ' [-Wredundant-decls]
su.c:81:15: warning: redundant redeclaration of 'environ' [-Wredundant-decls]

fstab.c:581:14: warning: redundant redeclaration of 'strsignal' [-Wredundant-decls]

kill.h:1:13: note: previous declaration of 'get_pids' was here
kill.c:152:13: warning: redundant redeclaration of 'get_pids' [-Wredundant-decls]

kill.c:142:5: warning: redundant redeclaration of 'main' [-Wredundant-decls]
getopt.c:89:5: warning: redundant redeclaration of 'main' [-Wredundant-decls]

agetty.c:536:15: warning: redundant redeclaration of 'optarg' [-Wredundant-decls]
agetty.c:537:13: warning: redundant redeclaration of 'optind' [-Wredundant-decls]
script.c:161:13: warning: redundant redeclaration of 'optind' [-Wredundant-decls]
wall.c:96:13: warning: redundant redeclaration of 'optind' [-Wredundant-decls]

libmount.h:362:26: note: previous declaration of 'mnt_update_get_fs' was here
libmount.h:454:26: note: previous declaration of 'mnt_context_get_fs' was here
mountP.h:383:26: warning: redundant redeclaration of 'mnt_context_get_fs' [-Wredundant-decls]
mountP.h:398:26: warning: redundant redeclaration of 'mnt_update_get_fs' [-Wredundant-decls]

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
2012-06-11 19:51:35 +02:00
Ludwig Nussel 8ce7dfa341 su: preserve errno in cleanup_pam()
Signed-off-by: Ludwig Nussel <ludwig.nussel@suse.de>
2012-06-05 15:51:26 +02:00
Ludwig Nussel a9a8b2c4f4 su: use BSD err function instead of gnu's error()
Signed-off-by: Ludwig Nussel <ludwig.nussel@suse.de>
2012-06-05 15:20:08 +02:00
Ludwig Nussel 1ecb6186c5 su: remove unused code
Signed-off-by: Ludwig Nussel <ludwig.nussel@suse.de>
2012-06-05 15:19:09 +02:00
Ludwig Nussel e824086bbd su: replace PAM_BAIL_P macro with better solution
Signed-off-by: Ludwig Nussel <ludwig.nussel@suse.de>
2012-06-05 15:16:27 +02:00
Ludwig Nussel e557efdedd su: introduce xsetenv globally
Signed-off-by: Ludwig Nussel <ludwig.nussel@suse.de>
2012-06-05 15:16:18 +02:00
Ludwig Nussel a711e67a44 su: use ENV_PATH resp ENV_SUPATH to be consistent with login
Signed-off-by: Ludwig Nussel <ludwig.nussel@suse.de>
2012-06-05 15:16:10 +02:00
Ludwig Nussel 07ffbaf2b0 su: use EXIT_FAILURE consistently
Signed-off-by: Ludwig Nussel <ludwig.nussel@suse.de>
2012-06-05 15:16:03 +02:00
Ludwig Nussel 8aa108ff47 su: don't use custom MAX macro
Signed-off-by: Ludwig Nussel <ludwig.nussel@suse.de>
2012-06-05 15:15:56 +02:00
Karel Zak 7149efa8a4 su: remove program_name
Signed-off-by: Karel Zak <kzak@redhat.com>
2012-05-29 12:53:46 +02:00
Karel Zak 5aaf51f2fc su: fix compiler warning [-Wunused-parameter]
Signed-off-by: Karel Zak <kzak@redhat.com>
2012-05-29 11:01:23 +02:00
Thomas Schwinge 4ddf2dcc8c su: Don't include the unused <sys/fsuid.h>
Signed-off-by: Thomas Schwinge <thomas@codesourcery.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
2012-05-29 10:49:01 +02:00
Ludwig Nussel 9c44ac503f use existing logindefs.c and pathnames.h
I'm not sure having /usr/local in _PATH_DEFPATH_ROOT and even putting it
in front is such a good idea though. /usr/local might be on NFS so could
prevent root from logging in if the network is down.
2012-05-25 10:55:40 +02:00
Ludwig Nussel f29fc7e0bb syslog always 2012-05-25 10:21:09 +02:00
Ludwig Nussel c92880ef39 remove non pam code 2012-05-25 10:20:57 +02:00
Ludwig Nussel ff6b15d645 make su build as part of util-linux 2012-05-24 14:26:51 +02:00
Tim Waugh c6a1746b5f call setsid() when called with -c
Prevents command injection via TIOCSTI

https://bugzilla.redhat.com/show_bug.cgi?id=173008
2012-05-24 13:52:43 +02:00
Werner Fink a6fdd3f812 make sure /sbin resp /usr/sbin are in PATH 2012-05-24 13:52:43 +02:00
Ludwig Nussel 589554ad7a honor settings in /etc/default/su resp /etc/login.defs 2012-05-24 13:52:43 +02:00
Ludwig Nussel a9980c85c9 set sane default path 2012-05-24 13:52:42 +02:00
Ludwig Nussel b14d022fd0 log all su attempts 2012-05-24 13:52:42 +02:00
Ludwig Nussel 8171142ab6 pam support for su 2012-05-24 13:52:42 +02:00
Jim Meyering ce5f2f2677 Help translators include translation team's web or email address.
* src/system.h (emit_bug_reporting_address): New function.
* src/base64.c: Use it rather than a literal printf.
* src/basename.c, src/cat.c, src/chgrp.c, src/chmod.c:
* src/chown.c, src/chroot.c, src/cksum.c, src/comm.c, src/cp.c:
* src/csplit.c, src/cut.c, src/date.c, src/dd.c, src/df.c:
* src/dircolors.c, src/dirname.c, src/du.c, src/echo.c, src/env.c:
* src/expand.c, src/expr.c, src/factor.c, src/fmt.c, src/fold.c:
* src/head.c, src/hostid.c, src/hostname.c, src/id.c, src/install.c:
* src/join.c, src/kill.c, src/link.c, src/ln.c, src/logname.c:
* src/ls.c, src/md5sum.c, src/mkdir.c, src/mkfifo.c, src/mknod.c:
* src/mv.c, src/nice.c, src/nl.c, src/nohup.c, src/od.c:
* src/paste.c, src/pathchk.c, src/pinky.c, src/pr.c, src/printenv.c:
* src/printf.c, src/ptx.c, src/pwd.c, src/readlink.c, src/rm.c:
* src/rmdir.c, src/seq.c, src/setuidgid.c, src/shred.c, src/shuf.c:
* src/sleep.c, src/sort.c, src/split.c, src/stat.c, src/stty.c:
* src/su.c, src/sum.c, src/sync.c, src/system.h, src/tac.c:
* src/tail.c, src/tee.c, src/test.c, src/touch.c, src/tr.c:
* src/true.c, src/tsort.c, src/tty.c, src/uname.c, src/unexpand.c:
* src/uniq.c, src/unlink.c, src/uptime.c, src/users.c, src/wc.c:
* src/who.c, src/whoami.c, src/yes.c: Likewise.
2007-03-28 08:50:29 +02:00
Paul Eggert 7943f79d6b Don't include dirname.h, since system.h does it now. 2006-09-03 02:53:16 +00:00
Paul Eggert 5b6aef6c5c Add a bootstrap procedure, so that the CVS version contains fewer
files and we bootstrap the rest from gnulib, gettext, etc.
* README-cvs: New file.
* bootstrap: New file.
* bootstrap.conf: New file.
* .x-sc_trailing_blank: Remove config-log, .gdb-history.  Add .po.
* configure.ac (AC_PREREQ): Move here from m4/*.m4, for benefit
of gnulib-tool.
(gl_DEFAULT_POSIX2_VERSION, gl_USE_SYSTEM_EXTENSIONS, gl_PERL):
(gl_IGNORE_UNUSED_LIBRARIES): Remove; now done by gnulib.
(gl_EARLY): Add.
(gl_MACROS): Call just after gl_EARLY, just for clarity.
* src/c99-to-c98.diff: Remove patch to ls.c; no longer needed.
* src/kill.c (strtoimax): Remove decl.
* src/ls.c: Include "wcwidth.h" instead of rolling it ourselves.
* src/wc.c: Likewise.
* src/ls.c (sort_files): Rewrite to avoid need for C99-style
declaration, so that we don't need to patch this file.
* src/printf.c (strtoimax, strtoumax): Remove decls.
* src/su.c: Include getpass.h.
(getpass): remove.
* src/system.h: Include mempcpy.h, stpcpy.h, strpbrk.h.
Include inttypes.h unconditionally; remove decls it handles.
* lib/Makefile.am: include gnulib.mk, so that we can remove most of
this file.
(AM_CPPFLAGS): Don't mention -I$(srcdir), since that's now done
for us.
(noinst_LIBRARIES, LDDADD, DEFS): Remove.
(libcoreutils_a_SOURCES): Trim down greatly, just to the files
that aren't in gnulib.
Remove defns gnulib does for us.
* m4/check-decl.m4 (gl_CHECK_DECLS):
Don't include stdio.h, string.h, stdlib.h, unistd.h, sys/time.h,
time.h.  Use AC_CHECK_DECLS_ONCE for free, getenv, geteuid, getlogin,
getuid, lseek, malloc, memchr, realloc.  Don't check for getutent,
memrchr, nanosleep, stpcpy, strndup, strnlen, strstr, strtoul,
strtoull.
(_gl_DECL_HEADERS): Remove; all uses removed.
* m4/jm-macros.m4 (gl_MACROS): Move AC_PREREQ into configure.ac
for the benefit of gnulib-tool.  Call gl_INIT.
Do not call or require macros that gnulib will handle for us.
Don't check for fchmod, hasmntopt, isascii, lchown, listmntent,
mempcpy, realpath, wcrtomb, tzset.
(gl_CHECK_ALL_HEADERS): Don't check for sys/statvfs.h, sys/vfs.h,
sys/mount.h.
(gl_CHECK_ALL_TYPES): Require AC_TYPE_UNSIGNED_LONG_LONG_INT.
Don't check for struct stat.st_blksize.
Don't require AC_STRUCT_ST_DM_MODE, gt_TYPE_SSIZE_T,
gl_AC_TYPE_UINT32_T, gl_AC_TYPE_UINTMAX_T, gl_AC_TYPE_UINTPTR_T,
gl_AC_TYPE_UNSIGNED_LONG_LONG.
* m4/prereq.m4 (gl_PREREQ): Require gl_FUNC_XFTS, gl_ROOT_DEV_INO.
Don't require macros that gnulib does for us.
* m4/stat-prog.m4 (cu_PREREQ_STAT_PROG): Don't check for
sys/sysmacros.h.  Don't check for statvfs.  Use AC_CHECK_HEADERS_ONCE
for netinet/in.h, nfs/nfs_clnt.h, nfs/vfs.h.
Don't require gl_AC_TYPE_LONG_LONG, gt_HEADER_INTTYPES_H.
2006-08-21 07:30:45 +00:00
Jim Meyering 0d4e00316a * src/su.c (usage): Correct typo in --help output: s/commmand/command/
Reported by Tim Waugh.
Also remove the comment duplicating much of --help output.
2006-07-21 13:32:40 +00:00
Jim Meyering 989f03571c (log_su, run_shell): Use new last_component, in place of base_name. 2006-03-26 12:08:20 +00:00
Jim Meyering 63f1886772 Remove unnecessary parens in `#if defined (SYMBOL)' expressions. 2005-08-23 15:09:13 +00:00
Jim Meyering 7d33c6f860 Update FSF postal mail address. 2005-05-14 07:58:31 +00:00
Jim Meyering 47cf26b757 Update FSF postal mail address. 2005-05-14 06:57:06 +00:00
Paul Eggert 0c606e84bb (run_shell): Pass a new n_additional_args arg, so that
the callee doesn't have to count 'em.  All callers changed.
Don't allocate more space for the arg vector than we'll need.
Use memcpy to copy the args rather than rolling our own loop.
Use size_t for sizes.
(fast_startup, simulate_login, change_environment, log_su,
correct_password, restricted_shell, main): Use bool for booleans.
(longopts): Don't assume change_environment is an int.
Use NULL, not 0, for pointers.
(xsetenv): New function, replacing xputenv and concat.
All callers changed.
(elements): Remove; no longer needed.
(log_su, correct_passwd, main): Prefer !x to x==NULL.
(log_su): 2 -> STDERR_FILENO.
(modify_environment, main): Don't assume that getenv's returned value
has an indefinite lifetime.
(modify_environment): Allocate a larger environ.
(main): Remove an impossible 'case 0'; if it happens now, it'll
get diagnosed.  Don't assume getpwnam results outlive endpwent.
Check for null or empty pw_name, pw_dir and for null pw_passwd.
2004-08-03 22:23:25 +00:00
Jim Meyering 179a982378 (correct_password, restricted_shell, main):
Prefer the notation `STREQ (a, b)' over `strcmp (a, b) == 0'.
2004-06-01 13:04:02 +00:00
Jim Meyering 12f1e56dd3 (usage): Use EXIT_SUCCESS, not 0, for clarity.
(main): Initialize exit_failure to EXIT_FAIL.

(main): Use EXIT_ENOENT and EXIT_CANNOT_INVOKE
rather than roll-your-own symbols or integers.
2004-01-22 21:00:25 +00:00
Jim Meyering 571b609ef9 Most .c files (AUTHORS): Revert the WRITTEN_BY/AUTHORS change
of 2003-09-19.  Now, AUTHORS is a comma-separated list of strings.
Update the call to parse_long_options so that `AUTHORS, NULL' are the
last parameters.

* src/true.c (main): Append NULL to version_etc argument list.
* src/sys2.h (case_GETOPT_VERSION_CHAR): Likewise.
2003-10-18 10:05:47 +00:00
Jim Meyering 6fa9096595 (WRITTEN_BY): Rename from AUTHORS.
Begin each WRITTEN_BY string with `Written by ' and end it with `.'.
Mark each WRITTEN_BY string as translatable.
2003-09-18 22:19:03 +00:00
Jim Meyering 8e5b5ee01a Don't include headers already included by system.h:
Don't include closeout.h.
2003-07-23 07:29:54 +00:00
Jim Meyering f7a168d629 (usage): Don't call close_stdout here.
(main): Use close_stdout via atexit.
Now `su --version > /dev/full' fails, as it should.
Somehow, the change of 2000-05-07 that purports to fix this
was not checked in.
2003-07-18 08:38:43 +00:00
Jim Meyering cf4bd2fc7c (main): Call initialize_main. 2003-06-17 18:13:23 +00:00
Jim Meyering 6c940aca73 Remove anachronistic casts of xmalloc,
xrealloc, and xcalloc return values and of xrealloc's first argument.
2003-04-11 10:51:56 +00:00
Jim Meyering 722bc0061c Change `exit (0)' to `exit (EXIT_SUCCESS)',
`exit (1)' to `exit (EXIT_FAILURE)', and
`usage (1)' to `usage (EXIT_FAILURE)'.
2002-08-31 08:52:10 +00:00
Jim Meyering 046582e4ba Change `error (1, ...' to `error (EXIT_FAILURE, ...'. 2002-08-30 23:04:53 +00:00
Jim Meyering 9fa7b2b012 (run_shell): Exit with status 126 or 127 when execvp or
execv fails, for consistency with POSIX commands like env and nice.
2002-08-01 09:19:24 +00:00