Red Hat Bugzilla – Bug 1225560
usermod should prevent inadvertent homedir ownership changes on group id modification
Last modified: 2016-11-03 23:40:40 EDT
Description of problem: RHEL7 version of usermod states (in its manpage): -g, --gid GROUP The group name or number of the user's new initial login group. The group must exist. Any file from the user's home directory owned by the previous primary group of the user will be owned by this new group. The group ownership of files outside of the user's home directory must be fixed manually. Some use cases (ie. system users with `/' as home) require just changing the GID value in /etc/passwd, without actually touching any files in a home directory. This RFE proposes just that - an override option that would stop usermod from touching any homedirs (second paragraph of the help above). Alternatively, if you, after reconsideration, find the existing default too disruptive, the feature could be turned off by default with an opt-in switch instead, similarly to how useradd -m behaves with "CREATE_HOME no" in login.defs. Version-Release number of selected component (if applicable): shadow-utils-4.1.5.1-18.el7 How reproducible: always Steps to Reproduce: # useradd joe # /bin/su - joe -c 'touch testfile' # ls -l /home/joe/testfile -rw-r-----. 1 joe joe 0 May 27 18:27 /home/joe/testfile # usermod -g adm joe # ls -l /home/joe/testfile -rw-r-----. 1 joe adm 0 May 27 18:27 /home/joe/testfile Actual results: usermod changes file metadata in user homedir Expected results: usermod provides a way to change group without touching homedir Additional info: "Just use $EDITOR to edit /etc/passwd" might not be a satisfactory resolution/answer as some installations require auditing of tools used to modify the system (with proper audit trail).
I see this as a regression with a potentially catastrophic outcome. I set the severity to High. The default behavior of usermod -g should return to the RHEL6 behavior.
I completely disagree that this is a regression or even potentially catastrophic one. My proposal is to disable the functionality only for users whose homedir is /.
So is the solution to disable this functionality if homedir == "/" acceptable?
Or another possibility - disable this functionality if homedir gid != the old primary gid - that indicates the user's home dir is 'special'.
So I am going to implement this restriction of the chown/chgrp: If the home dir is not owned by the user the chown/chgrp of the home dir tree will not be performed.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2016-2322.html