summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2006-07-17 03:13:14 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2006-07-17 03:13:14 +0000
commit628c7baa85934252389017886f36cd3d025a6ddb (patch)
tree126f9453f6ce35ee2d142bd0f8c0da705f0d6abe
parentd847e28b37cba59cb449efcc6623bb0bfcc2765c (diff)
downloadcoreutils-628c7baa85934252389017886f36cd3d025a6ddb.tar.xz
chmod, install, and mkdir now leave setgid and setuid bits
of directories alone unless you specify them explicitly. install and mkdir now implement X correctly. install now creates parent directories with mode 755, without changing their owner or group.
-rw-r--r--ChangeLog38
-rw-r--r--doc/ChangeLog22
-rw-r--r--lib/ChangeLog27
-rw-r--r--m4/ChangeLog10
4 files changed, 97 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 5c96c9e48..00875b7bd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,41 @@
+2006-07-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: chmod, install, and mkdir now leave setgid and setuid bits
+ of directories alone unless you specify them explicitly.
+ install and mkdir now implement X correctly.
+ install now creates parent directories with mode 755, without
+ changing their owner or group.
+ * src/chmod.c (process_file): Adjust to mode_adjust API change.
+ * src/install.c: Include mkancesdirs.h.
+ (announce_mkdir, make_ancestor): New functions.
+ (DEFAULT_MODE): New macro, specifying initial value of 'mode'.
+ (mode): Use it.
+ (dir_mode, dir_mode_bits): New vars.
+ (main): Set dir modes separately from nondir, so that the X
+ op of -m works correctly.
+ (main): Remove cwd_errno cruft, since make_dir_parents no longer
+ affects cwd. Adjust to new make_dir_parents API.
+ (install_file_in_file_parents): 2nd arg is now char *, not char
+ const *. Use mkancesdirs instead of rolling our own code.
+ (change_attributes): Don't worry about AFS, since that kludge
+ should not be needed any more.
+ * mkdir.c (struct mkdir_options): New struct.
+ (announce_mkdir, make_ancestor): New functions.
+ (main): Use them. Adjust to mode_adjust API change. Stick with
+ umask 0. Use make_dir_parents for all the work.
+ * mkfifo.c (main): Adjust to new mode_adjust API.
+ * mknod.c (main): Likewise.
+ * tests/chmod/setgid: Do the setgid test instead of bailing.
+ * tests/mkdir/p-3: Remove re_protect case that no longer applies.
+ GNU chmod now behaves like other versions of chmod.
+ * tests/mkdir/perm: Add a test for the X bug.
+
+2006-07-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/base64.c (do_decode): Output to parameter OUT, not to stdout.
+ This doesn't fix any bugs, since OUT always equals stdout, but it
+ makes the code easier to understand.
+
2006-07-14 Jim Meyering <jim@meyering.net>
* Makefile.maint (CVS_LIST): Use new file, build-aux/vc-list-files,
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 518a3f131..ab3cdd58d 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,25 @@
+2006-07-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi: Change GNU to @acronym{GNU} in a few places.
+ Use "set-user-ID" and "set-group-ID" a bit more consistently.
+ Use "appropriate privileges" rather than "super-user" a bit
+ more consistently.
+ (install invocation): Parent directories are now 755 without uid
+ or gid changing. The default mode is now 0755, not 755.
+ (mkdir invocation): Rewrite the top-level usage description, since
+ I couldn't easily follow the old one. It's now 3 lines not 8.
+ For -m, describe file permission bits versus other bits, and note
+ that mkdir is atomic if you don't mention special bits.
+ (chmod invocation): Mention what chmod does to setgid and setuid bits.
+ * perm.texi (Mode Structure): Modernize the explanation of the
+ setuid and setgid bits on directories.
+ (Changing Special Mode Bits): Mention that a implies both u and g
+ for s. Cross reference to new node.
+ (Numeric Modes): Don't claim that 0055 is the same as 55; this isn't
+ true any more. Mention new node.
+ 4755 is now like u=rwxs,go=rx,g-s, not like u=rwxs,go=rx.
+ (Directory Setuid and Setgid): New node.
+
2006-07-08 Jim Meyering <jim@meyering.net>
* coreutils.texi (Squeezing): Separate doubled "the", so typo-checkers
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 774159fbd..7437f1f06 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,30 @@
+2006-07-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * dirchownmod.c, dirchownmod.h, mkancesdirs.c, mkancesdirs.h:
+ New files.
+ * mkdir-p.c: Don't include alloca.h, stdio.h, sys/types.h,
+ unistd.h, string.h, chdir-safer.h, dirname.h, lchmod.h, lchown.h,
+ save-cwd.h. Instead, include dirchownmod.h and mkancesdirs.h.
+ (make_dir_parents): New args MAKE_ANCESTOR, OPTIONS, ANNOUNCE,
+ MODE_BITS. Remove options VERBOSE_FMT_STRING, CWD_ERRNO. All
+ callers changed. Revamp internals significantly, by not
+ attempting to create directories that are temporarily more
+ permissive than the final results. Do not attempt to use
+ save_cwd/restore_cwd; it isn't worth it for mkdir and install.
+ This removes some race conditions, fixes some bugs, and simplifies
+ things. Use new dirchownmod function to do owner and mode changes.
+ * mkdir-p.h: Likewise.
+ * modechange.c (octal_to_mode): New function.
+ (struct mode_change): New member mentioned.
+ (make_node_op_equals): New arg mentioned. All callers changed.
+ (mode_compile): Keep track of which mode bits the user has explicitly
+ mentioned.
+ (mode_adjust): New arg DIR, so that we implement the X op correctly.
+ New arg PMODE_BITS, to keep track of which mode bits the user
+ mentioned; it treats S_ISUID and S_ISGID speciall.
+ All callers changed.
+ * lib/modechange.h: Likewise.
+
2006-07-16 Jim Meyering <jim@meyering.net>
* userspec.c (parse_with_separator): Say "invalid spec" rather than
diff --git a/m4/ChangeLog b/m4/ChangeLog
index abeddd220..0e0b6b046 100644
--- a/m4/ChangeLog
+++ b/m4/ChangeLog
@@ -1,3 +1,13 @@
+2006-07-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * mkancesdirs.m4: New file.
+ * afs.m4: Remove; no longer needed.
+ * jm-macros.m4 (gl_MACROS): Remove gl_AFS.
+ * mkdir-p.m4 (gl_MKDIR_PARENTS): Mention dirchownmod.c, dirchownmod.h.
+ Don't require AC_FUNC_ALLOCA, gl_AFS, gl_CHDIR_SAFER; no longer needed.
+ Require gl_FUNC_LCHOWN, since dirchownmod.c needs it.
+ * prereq.m4 (gl_PREREQ): Require gl_MKANCESDIRS.
+
2006-07-11 Eric Blake <ebb9@byu.net>
* absolute-header.m4: Fix comments to match recent change.