[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <nt6dr29m1lalc3dersj4sf22od2l638fvq@4ax.com>
Date: Wed, 24 Jan 2007 10:46:24 +1100
From: Grant Coady <grant_lkml@...o.com.au>
To: dann frazier <dannf@...nf.org>
Cc: Willy Tarreau <w@....eu>, Grant Coady <gcoady.lk@...il.com>,
Santiago Garcia Mantinan <manty@...ian.org>,
linux-kernel@...r.kernel.org, debian-kernel@...ts.debian.org
Subject: Re: problems with latest smbfs changes on 2.4.34 and security backports
On Tue, 23 Jan 2007 14:12:57 -0700, dann frazier <dannf@...nf.org> wrote:
>Users have reported a symlink issue with my recent smbfs backport.
>Turns out my backport overlooked a second 2.6 patch w/ the fix:
> http://linux.bkbits.net:8080/linux-2.6/?PAGE=cset&REV=419e7b76CdrmRG_NZ8LKj9DUUBGu1w
>
>This is a backport of Haroldo Gamal's 2.6 patch that fixes the symlink
>issue, and also cleans up an unnecessary double assignment. As his
>commit message notes, you will need the userspace patches from Samba
>Bug #999 in order to use the permission/ownership assigned by the
>server.
Server-side:
grant@...tree:/home/other$ uname -r
2.6.19.2a
grant@...tree:/home/other$ ls -l
total 8
drwxr-xr-x 2 root root 96 2007-01-21 11:44 dir/
lrwxrwxrwx 1 root root 3 2007-01-21 11:43 dirlink -> dir/
-rw-r--r-- 1 root root 15 2007-01-21 11:43 file
lrwxrwxrwx 1 root root 4 2007-01-21 11:44 filelink -> file
-rw-r--r-- 1 grant wheel 20 2007-01-24 10:24 test
lrwxrwxrwx 1 grant wheel 4 2007-01-24 10:23 testlink -> test
Client-side, 2.4.34c is with this new patch, 2.4.33.3 and 2.6.19.2
for comparison:
grant@...pro:/home/other$ uname -r
2.4.33.3
grant@...pro:/home/other$ ls -l
total 4096
drwxr-xr-x 1 root root 0 2007-01-21 11:44 dir/
lrwxrwxrwx 1 root root 3 2007-01-21 11:43 dirlink -> dir/
-rw-r--r-- 1 root root 15 2007-01-21 11:43 file
lrwxrwxrwx 1 root root 4 2007-01-21 11:44 filelink -> file
-rw-r--r-- 1 grant wheel 20 2007-01-24 10:24 test
lrwxrwxrwx 1 grant wheel 4 2007-01-24 10:23 testlink -> test
grant@...pro:~$ uname -r
2.6.19.2a
grant@...pro:~$ ls -l /home/other/
total 10
drwxr-xr-x 1 grant wheel 0 2007-01-21 11:44 dir/
lrwxr-xr-x 1 grant wheel 3 2007-01-21 11:43 dirlink -> dir/
-rwxr-xr-x 1 grant wheel 15 2007-01-21 11:43 file*
lrwxr-xr-x 1 grant wheel 4 2007-01-21 11:44 filelink -> file*
-rwxr-xr-x 1 grant wheel 20 2007-01-24 10:24 test*
lrwxr-xr-x 1 grant wheel 4 2007-01-24 10:23 testlink -> test*
grant@...pro:~$ uname -r
2.4.34c
grant@...pro:~$ ls -l /home/other/
total 4096
drwxr-xr-x 1 grant wheel 0 2007-01-21 11:44 dir/
lrwxr-xr-x 1 grant wheel 3 2007-01-21 11:43 dirlink -> dir/
-rwxr-xr-x 1 grant wheel 15 2007-01-21 11:43 file*
lrwxr-xr-x 1 grant wheel 4 2007-01-21 11:44 filelink -> file*
-rwxr-xr-x 1 grant wheel 20 2007-01-24 10:24 test*
lrwxr-xr-x 1 grant wheel 4 2007-01-24 10:23 testlink -> test*
Grant.
>
>Signed-off-by: dann frazier <dannf@...ian.org>
>
>diff --git a/fs/smbfs/inode.c b/fs/smbfs/inode.c
>index be975fe..7fd9b51 100644
>--- a/fs/smbfs/inode.c
>+++ b/fs/smbfs/inode.c
>@@ -513,10 +513,10 @@ smb_read_super(struct super_block *sb, void *raw_data, int silent)
> mnt->flags = (oldmnt->file_mode >> 9) | SMB_MOUNT_UID |
> SMB_MOUNT_GID | SMB_MOUNT_FMODE | SMB_MOUNT_DMODE;
> } else {
>- mnt->file_mode = mnt->dir_mode = S_IRWXU | S_IRGRP | S_IXGRP |
>- S_IROTH | S_IXOTH | S_IFREG;
>- mnt->dir_mode = mnt->dir_mode = S_IRWXU | S_IRGRP | S_IXGRP |
>- S_IROTH | S_IXOTH | S_IFDIR;
>+ mnt->file_mode = S_IRWXU | S_IRGRP | S_IXGRP |
>+ S_IROTH | S_IXOTH | S_IFREG;
>+ mnt->dir_mode = S_IRWXU | S_IRGRP | S_IXGRP |
>+ S_IROTH | S_IXOTH | S_IFDIR;
> if (parse_options(mnt, raw_data))
> goto out_bad_option;
> }
>diff --git a/fs/smbfs/proc.c b/fs/smbfs/proc.c
>index 7f0794c..5570007 100644
>--- a/fs/smbfs/proc.c
>+++ b/fs/smbfs/proc.c
>@@ -1994,10 +1994,11 @@ void smb_decode_unix_basic(struct smb_fattr *fattr, struct smb_sb_info *server,
>
> if ( (server->mnt->flags & SMB_MOUNT_DMODE) &&
> (S_ISDIR(fattr->f_mode)) )
>- fattr->f_mode = (server->mnt->dir_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFDIR;
>+ fattr->f_mode = (server->mnt->dir_mode & S_IRWXUGO) | S_IFDIR;
> else if ( (server->mnt->flags & SMB_MOUNT_FMODE) &&
> !(S_ISDIR(fattr->f_mode)) )
>- fattr->f_mode = (server->mnt->file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG;
>+ fattr->f_mode = (server->mnt->file_mode & S_IRWXUGO) |
>+ (fattr->f_mode & S_IFMT);
>
> }
>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists