From: Tomas Mraz Date: Tue, 18 Dec 2018 15:32:13 +0000 (+0100) Subject: usermod: Guard against unsafe change of ownership of home directory content X-Git-Tag: 4.7~13^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F143%2Fhead;p=thirdparty%2Fshadow.git usermod: Guard against unsafe change of ownership of home directory content In case the home directory is not a real home directory (owned by the user) but things like / or /var or similar, it is unsafe to change ownership of home directory content. The test checks whether the home directory is owned by the user him/herself, if not no ownership modification of contents is performed. --- diff --git a/src/usermod.c b/src/usermod.c index 72eeb8b2e..68775272d 100644 --- a/src/usermod.c +++ b/src/usermod.c @@ -2313,7 +2313,10 @@ int main (int argc, char **argv) } if (!mflg && (uflg || gflg)) { - if (access (dflg ? prefix_user_newhome : prefix_user_home, F_OK) == 0) { + struct stat sb; + + if (stat (dflg ? prefix_user_newhome : prefix_user_home, &sb) == 0 && + ((uflg && sb.st_uid == user_newid) || sb.st_uid == user_id)) { /* * Change the UID on all of the files owned by * `user_id' to `user_newid' in the user's home