lkml.org 
[lkml]   [2007]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: problems with latest smbfs changes on 2.4.34 and security backports
    Date
    On Tue, 23 Jan 2007 14:12:57 -0700, dann frazier <dannf@dannf.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@deltree:/home/other$ uname -r
    2.6.19.2a
    grant@deltree:/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@sempro:/home/other$ uname -r
    2.4.33.3
    grant@sempro:/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@sempro:~$ uname -r
    2.6.19.2a
    grant@sempro:~$ 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@sempro:~$ uname -r
    2.4.34c
    grant@sempro:~$ 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@debian.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@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-01-24 01:25    [W:0.051 / U:59.428 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site