mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] fix wrong permissions for vfat directories
@ 2002-11-30 21:36 Andries.Brouwer
  2002-12-02 18:16 ` Jochen Hein
  0 siblings, 1 reply; 2+ messages in thread
From: Andries.Brouwer @ 2002-11-30 21:36 UTC (permalink / raw)
  To: jochen, torvalds; +Cc: linux-kernel

    From: Jochen Hein <jochen@jochen.org>

    I do mount vfat with autofs, and options umask=002 there.  mount
    and /proc/mounts confirms that: 

    /dev/hda5 on /mount/d type vfat (rw,umask=002,gid=1000)

    The directory permissions don't allow writing:

    drwxr-xr-x    2 root     jochen      32768 2002-11-30 20:37 ./

Fixed by the patch below.

Andries

-----

diff -u --recursive --new-file -X /linux/dontdiff a/fs/fat/inode.c b/fs/fat/inode.c
--- a/fs/fat/inode.c	Fri Nov 22 22:40:41 2002
+++ b/fs/fat/inode.c	Sat Nov 30 22:10:54 2002
@@ -205,7 +205,7 @@
 		seq_printf(m, ",uid=%d", opts->fs_uid);
 	if (opts->fs_gid != 0)
 		seq_printf(m, ",gid=%d", opts->fs_gid);
-	seq_printf(m, ",umask=%04o", opts->fs_umask);
+	seq_printf(m, ",fmask=%04o", opts->fs_fmask);
 	seq_printf(m, ",dmask=%04o", opts->fs_dmask);
 	if (sbi->nls_disk)
 		seq_printf(m, ",codepage=%s", sbi->nls_disk->charset);
@@ -267,7 +267,7 @@
 
 	opts->fs_uid = current->uid;
 	opts->fs_gid = current->gid;
-	opts->fs_umask = opts->fs_dmask = current->fs->umask;
+	opts->fs_fmask = opts->fs_dmask = current->fs->umask;
 	opts->codepage = 0;
 	opts->iocharset = NULL;
 	if (is_vfat)
@@ -333,7 +333,15 @@
 		else if (!strcmp(this_char,"umask")) {
 			if (!value || !*value) ret = 0;
 			else {
-				opts->fs_umask = simple_strtoul(value,&value,8);
+				opts->fs_fmask = opts->fs_dmask =
+					simple_strtoul(value,&value,8);
+				if (*value) ret = 0;
+			}
+		}
+		else if (!strcmp(this_char,"fmask")) {
+			if (!value || !*value) ret = 0;
+			else {
+				opts->fs_fmask = simple_strtoul(value,&value,8);
 				if (*value) ret = 0;
 			}
 		}
@@ -1119,7 +1127,7 @@
 		    ((sbi->options.showexec &&
 		       !is_exec(de->ext))
 		    	? S_IRUGO|S_IWUGO : S_IRWXUGO)
-		    & ~sbi->options.fs_umask) | S_IFREG;
+		    & ~sbi->options.fs_fmask) | S_IFREG;
 		MSDOS_I(inode)->i_start = CF_LE_W(de->start);
 		if (sbi->fat_bits == 32) {
 			MSDOS_I(inode)->i_start |=
@@ -1253,7 +1261,7 @@
 	if (S_ISDIR(inode->i_mode))
 		mask = sbi->options.fs_dmask;
 	else
-		mask = sbi->options.fs_umask;
+		mask = sbi->options.fs_fmask;
 	inode->i_mode &= S_IFMT | (S_IRWXUGO & ~mask);
 out:
 	unlock_kernel();
diff -u --recursive --new-file -X /linux/dontdiff a/fs/umsdos/ioctl.c b/fs/umsdos/ioctl.c
--- a/fs/umsdos/ioctl.c	Fri Nov 22 22:40:19 2002
+++ b/fs/umsdos/ioctl.c	Sat Nov 30 22:12:08 2002
@@ -430,7 +430,9 @@
 		 */
 		dir->i_sb->u.msdos_sb.options.fs_uid = data.umsdos_dirent.uid;
 		dir->i_sb->u.msdos_sb.options.fs_gid = data.umsdos_dirent.gid;
-		dir->i_sb->u.msdos_sb.options.fs_umask = data.umsdos_dirent.mode;
+		dir->i_sb->u.msdos_sb.options.fs_fmask =
+			dir->i_sb->u.msdos_sb.options.fs_dmask =
+				data.umsdos_dirent.mode;
 		ret = 0;
 	}
 out:
diff -u --recursive --new-file -X /linux/dontdiff a/include/linux/msdos_fs_sb.h b/include/linux/msdos_fs_sb.h
--- a/include/linux/msdos_fs_sb.h	Fri Nov 22 22:40:42 2002
+++ b/include/linux/msdos_fs_sb.h	Sat Nov 30 22:12:40 2002
@@ -8,7 +8,7 @@
 struct fat_mount_options {
 	uid_t fs_uid;
 	gid_t fs_gid;
-	unsigned short fs_umask;
+	unsigned short fs_fmask;
 	unsigned short fs_dmask;
 	unsigned short codepage;  /* Codepage for shortname conversions */
 	char *iocharset;          /* Charset used for filename input/display */




^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] fix wrong permissions for vfat directories
  2002-11-30 21:36 [PATCH] fix wrong permissions for vfat directories Andries.Brouwer
@ 2002-12-02 18:16 ` Jochen Hein
  0 siblings, 0 replies; 2+ messages in thread
From: Jochen Hein @ 2002-12-02 18:16 UTC (permalink / raw)
  To: Andries.Brouwer, Linus Torvalds; +Cc: Linux Kernel Mailing List

Andries.Brouwer@cwi.nl writes:

>     From: Jochen Hein <jochen@jochen.org>
>
>     I do mount vfat with autofs, and options umask=002 there.  

> Fixed by the patch below.

I see it has been applied to -bk, Thanks.  Mind fixing the
documentation too?

Jochen

--- linux-2.5.50/Documentation/filesystems/vfat.txt.jh	2002-12-02 18:45:58.000000000 +0100
+++ linux-2.5.50/Documentation/filesystems/vfat.txt	2002-12-02 18:49:07.000000000 +0100
@@ -8,10 +8,12 @@
 
 VFAT MOUNT OPTIONS
 ----------------------------------------------------------------------
-umask=###     -- The permission mask (see umask(1)) for the regulare file.
+umask=###     -- The permission mask (for files and directories, see umask(1)).
                  The default is the umask of current process.
 dmask=###     -- The permission mask for the directory.
                  The default is the umask of current process.
+fmask=###     -- The permission mask for files.
+                 The default is the umask of current process.
 codepage=###  -- Sets the codepage for converting to shortname characters
 		 on FAT and VFAT filesystems.  By default, codepage 437
 		 is used.  This is the default for the U.S. and some

-- 
Wenn Du nicht weißt was Du tust, tu's mit Eleganz.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2002-12-02 18:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-30 21:36 [PATCH] fix wrong permissions for vfat directories Andries.Brouwer
2002-12-02 18:16 ` Jochen Hein

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome