From: Matt Z. <md...@de...> - 2003-04-10 02:36:44
|
retitle 188320 Files created on a hostfs mount are always executable thanks (forwarding to user-mode-linux-devel) On Wed, Apr 09, 2003 at 11:53:46AM +0200, Sam Hocevar wrote: > When creating a file on a hostfs-mounted partition, it always has the > executable flag set: > > % touch /home/sam/test > % ls -l /home/sam/test > -rwxr-xr-x 1 sam sam 0 Apr 9 11:47 /home/sam/test* > % Curious...I hadn't noticed this before; perhaps it wasn't always this way. The code looks a bit suspicious to me: +int hostfs_create(struct inode *dir, struct dentry *dentry, int mode) [...] + error = file_create(name, + mode | S_IRUSR, mode | S_IWUSR, mode | S_IXUSR, + mode | S_IRGRP, mode | S_IWGRP, mode | S_IXGRP, + mode | S_IROTH, mode | S_IWOTH, mode | S_IXOTH); [...] +int file_create(char *name, int ur, int uw, int ux, int gr, + int gw, int gx, int or, int ow, int ox) [...] + mode = 0; + mode |= ur ? S_IRUSR : 0; + mode |= uw ? S_IWUSR : 0; + mode |= ux ? S_IXUSR : 0; + mode |= gr ? S_IRGRP : 0; + mode |= gw ? S_IWGRP : 0; + mode |= gx ? S_IXGRP : 0; + mode |= or ? S_IROTH : 0; + mode |= ow ? S_IWOTH : 0; + mode |= ox ? S_IXOTH : 0; + fd = open64(name, O_CREAT, mode); The bitwise ORs in hostfs_create seem like perhaps they were meant to be ANDs instead. The current effect is to always enable all permission bits, ignoring the 'mode' argument, which means that files will be created with mode 0777 as modified by the (host) umask. -- - mdz |
From: Jeff D. <jd...@ka...> - 2003-04-14 02:38:43
|
md...@de... said: > The bitwise ORs in hostfs_create seem like perhaps they were meant to > be ANDs instead. Correct, thanks for analyzing this. This will be fixed in the next patch. Jeff |