From: Mike Karels Date: Sun, 19 Apr 1987 07:27:02 +0000 (-0800) Subject: don't clear set-gid when su creates file when not groupmember X-Git-Tag: BSD-4_3_Net_1-Snapshot-Development~4790 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/67361d543188004c23e8675506802b52a85fa12f don't clear set-gid when su creates file when not groupmember SCCS-vsn: sys/kern/vfs_syscalls.c 7.3 SCCS-vsn: sys/ufs/ffs/ffs_vnops.c 7.3 SCCS-vsn: sys/ufs/ffs/ufs_vnops.c 7.3 SCCS-vsn: sys/ufs/lfs/lfs_vnops.c 7.3 SCCS-vsn: sys/ufs/ufs/ufs_vnops.c 7.3 --- diff --git a/usr/src/sys/kern/vfs_syscalls.c b/usr/src/sys/kern/vfs_syscalls.c index a2087631af..a5e4d5dbef 100644 --- a/usr/src/sys/kern/vfs_syscalls.c +++ b/usr/src/sys/kern/vfs_syscalls.c @@ -3,7 +3,7 @@ * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * - * @(#)vfs_syscalls.c 7.2 (Berkeley) %G% + * @(#)vfs_syscalls.c 7.3 (Berkeley) %G% */ #include "param.h" @@ -1113,7 +1113,7 @@ maknode(mode, ndp) ip->i_nlink = 1; ip->i_uid = u.u_uid; ip->i_gid = pdir->i_gid; - if (ip->i_mode & ISGID && !groupmember(ip->i_gid)) + if (ip->i_mode & ISGID && !groupmember(ip->i_gid) && !suser()) ip->i_mode &= ~ISGID; #ifdef QUOTA ip->i_dquot = inoquota(ip); diff --git a/usr/src/sys/ufs/ffs/ffs_vnops.c b/usr/src/sys/ufs/ffs/ffs_vnops.c index e2a1bdaa54..ecfd247219 100644 --- a/usr/src/sys/ufs/ffs/ffs_vnops.c +++ b/usr/src/sys/ufs/ffs/ffs_vnops.c @@ -3,7 +3,7 @@ * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * - * @(#)ffs_vnops.c 7.2 (Berkeley) %G% + * @(#)ffs_vnops.c 7.3 (Berkeley) %G% */ #include "param.h" @@ -1113,7 +1113,7 @@ maknode(mode, ndp) ip->i_nlink = 1; ip->i_uid = u.u_uid; ip->i_gid = pdir->i_gid; - if (ip->i_mode & ISGID && !groupmember(ip->i_gid)) + if (ip->i_mode & ISGID && !groupmember(ip->i_gid) && !suser()) ip->i_mode &= ~ISGID; #ifdef QUOTA ip->i_dquot = inoquota(ip); diff --git a/usr/src/sys/ufs/ffs/ufs_vnops.c b/usr/src/sys/ufs/ffs/ufs_vnops.c index ca866dec65..dcb13ebfed 100644 --- a/usr/src/sys/ufs/ffs/ufs_vnops.c +++ b/usr/src/sys/ufs/ffs/ufs_vnops.c @@ -3,7 +3,7 @@ * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * - * @(#)ufs_vnops.c 7.2 (Berkeley) %G% + * @(#)ufs_vnops.c 7.3 (Berkeley) %G% */ #include "param.h" @@ -1113,7 +1113,7 @@ maknode(mode, ndp) ip->i_nlink = 1; ip->i_uid = u.u_uid; ip->i_gid = pdir->i_gid; - if (ip->i_mode & ISGID && !groupmember(ip->i_gid)) + if (ip->i_mode & ISGID && !groupmember(ip->i_gid) && !suser()) ip->i_mode &= ~ISGID; #ifdef QUOTA ip->i_dquot = inoquota(ip); diff --git a/usr/src/sys/ufs/lfs/lfs_vnops.c b/usr/src/sys/ufs/lfs/lfs_vnops.c index 37a682dd1a..60735780d8 100644 --- a/usr/src/sys/ufs/lfs/lfs_vnops.c +++ b/usr/src/sys/ufs/lfs/lfs_vnops.c @@ -3,7 +3,7 @@ * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * - * @(#)lfs_vnops.c 7.2 (Berkeley) %G% + * @(#)lfs_vnops.c 7.3 (Berkeley) %G% */ #include "param.h" @@ -1113,7 +1113,7 @@ maknode(mode, ndp) ip->i_nlink = 1; ip->i_uid = u.u_uid; ip->i_gid = pdir->i_gid; - if (ip->i_mode & ISGID && !groupmember(ip->i_gid)) + if (ip->i_mode & ISGID && !groupmember(ip->i_gid) && !suser()) ip->i_mode &= ~ISGID; #ifdef QUOTA ip->i_dquot = inoquota(ip); diff --git a/usr/src/sys/ufs/ufs/ufs_vnops.c b/usr/src/sys/ufs/ufs/ufs_vnops.c index ca866dec65..dcb13ebfed 100644 --- a/usr/src/sys/ufs/ufs/ufs_vnops.c +++ b/usr/src/sys/ufs/ufs/ufs_vnops.c @@ -3,7 +3,7 @@ * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * - * @(#)ufs_vnops.c 7.2 (Berkeley) %G% + * @(#)ufs_vnops.c 7.3 (Berkeley) %G% */ #include "param.h" @@ -1113,7 +1113,7 @@ maknode(mode, ndp) ip->i_nlink = 1; ip->i_uid = u.u_uid; ip->i_gid = pdir->i_gid; - if (ip->i_mode & ISGID && !groupmember(ip->i_gid)) + if (ip->i_mode & ISGID && !groupmember(ip->i_gid) && !suser()) ip->i_mode &= ~ISGID; #ifdef QUOTA ip->i_dquot = inoquota(ip);