Date: Fri, 7 Jun 2002 12:43:56 +0200 From: neologism <neologism@seznam.cz> To: FreeBSD-gnats-submit@FreeBSD.org Subject: kern/38986: a change to msdosfs permissions behaviour according to noexec Message-ID: <20020607124356.A599@variola>
next in thread | raw e-mail | index | archive | help
>Number: 38986 >Category: kern >Synopsis: a change to msdosfs permissions behaviour according to noexec >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Fri Jun 07 09:10:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: neologism >Release: FreeBSD 4.4-RELEASE i386 >Organization: >Environment: System: FreeBSD variola 4.4-RELEASE FreeBSD 4.4-RELEASE #0: Sat Jan 12 11:09:42 GMT 2002 root@:/usr/src/sys/compile/MYKERNEL i386 >Description: Current implementation of permission checking in msdosfs doesn't reflect setting of noexec at mount time. I'm sending a patch which changes this behaviour. Now if noexec is set rights are set to 644 instead of 755. I hope its done the right way. >How-To-Repeat: it is default behaviour >Fix: --- sys/msdosfs/msdosfs_vnops.c Tue Jul 18 13:19:13 2000 +++ /root/msdosfs_vnops.c Sat May 11 14:18:09 2002 @@ -354,10 +354,21 @@ fileid += dep->de_diroffset / sizeof(struct direntry); } vap->va_fileid = fileid; - if ((dep->de_Attributes & ATTR_READONLY) == 0) - mode = S_IRWXU|S_IRWXG|S_IRWXO; - else - mode = S_IRUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH; + /* + * Previously NOEXEC was used just in exec checking, rights were always + * shown with +x. This should prevent such behaviour + */ + if ((pmp->pm_mountp->mnt_flag & MNT_NOEXEC) == 0) { + if ((dep->de_Attributes & ATTR_READONLY) == 0) + mode = S_IRWXU|S_IRWXG|S_IRWXO; + else + mode = S_IRUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH; + } else { + if ((dep->de_Attributes & ATTR_READONLY) == 0) + mode = S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_WOTH; + else + mode = S_IRUSR|S_IRGRP|S_IROTH; + } vap->va_mode = mode & pmp->pm_mask; vap->va_uid = pmp->pm_uid; vap->va_gid = pmp->pm_gid; >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020607124356.A599>