The Community Forums

Interact with an entire community of cPanel & WHM users!
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Umask and rsync - help please!

Discussion in 'General Discussion' started by karikas, Jan 4, 2010.

  1. karikas

    karikas Member

    Joined:
    Mar 8, 2006
    Messages:
    15
    Likes Received:
    0
    Trophy Points:
    1
    I have a dilemma... to automate deployment of a web site from our development server (Windows) to our live server (centros linux) I'm using cwrsync on the Windows side to send it over. The problem is that the permissions are all wrong. My only hope is to get rsync to recognize a umask on my server and adhere to that... but it's not happening! Can anybody tell me where I'm going wrong?

    What I need is for the directories to be chmodded to 755 and individual files to be 644 when they're created on the linux side.

    Here's what I have setup... first, here's my rsync command from Windows (censored the username and ip address):
    Code:
    "c:\program files (x86)\cwrsync\bin\rsync" -rtvz --rsh='"/cygdrive/c/program files (x86)/cwrsync/bin/ssh" -p20880' ./Mysite.com/ mysite@xx.xxx.xxx.xx:~mysite/
    
    I've tried adding
    Code:
    --chmod u=rwx,g=r,o=r
    to that but it can't write in the directories it creates... can create directories though. -p option hasn't helped one bit either.

    On the linux server, previously I didn't have umask set in either my /etc/bashrc or /etc/profile. It wasn't in the user's .bashrc or .bash_profile files either. So I added this to /etc/bashrc:

    Code:
    if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
            umask 002
    else
            umask 022
    fi
    
    and restarted ssh just in case, but no luck. Tried adding this additionally to /etc/profile:

    Code:
    umask 002 # Proper functioning of rsync from windows
    
    ...restarted ssh (via /sbin/service sshd restart) and no luck.

    I'm really stuck here and honestly I feel like I'm missing some fundamental reason this isn't working, like I'm not restarting something correctly. Does anybody know what I'm talking about and what the problem may be? I'm happy to provide additional info if needed.

    Thank you very much in advance,
    - Mike
     
    #1 karikas, Jan 4, 2010
    Last edited: Jan 4, 2010
  2. madaboutlinux

    madaboutlinux Well-Known Member

    Joined:
    Jan 24, 2005
    Messages:
    1,052
    Likes Received:
    2
    Trophy Points:
    38
    Location:
    Earth
    By default directories and files are created with 755 abd 644 permissions on a Linux server. What are the permissions of those on a Windows server and with what permissions are they created on Linux server when you rsync them?

    You haven't included the p and o option which are for permissions and ownership respectively. Use the options -vrplogDtH while syncing the files and see if it works for you.
     
  3. karikas

    karikas Member

    Joined:
    Mar 8, 2006
    Messages:
    15
    Likes Received:
    0
    Trophy Points:
    1
    I've used the options you suggested but am still not getting the right results... here's what I get now when transferring a directory and file with your suggestion:

    Code:
    dr-xr-xrwx  2 mysite mysite 4096 Jan  4 18:01 .
    -r-xr-xrwx  1 mysite mysite   14 Jan  4 17:58 test_file.html
    
    We aren't doing anything special with the files on the Windows side... they are the 'stock' permissions you get when a regular user creates files (windows permissions make my head spin anyway).

    Here's some more information if it can help any kind souls see what the problem is...

    Here are what I want as permissions when I rsync files to Linux (755 for dirs and 644 for files):

    Code:
    drwxr-xr-x  2 mysite mysite 4096 Jan  4 18:06 .
    -rw-r--r--  1 mysite mysite    5 Jan  4 18:06 test.file
    
    On the linux side, when logged in as the user, when I create a directory and file manually I get these permissions instead:

    Code:
    drwxrwxr-x  2 mysite mysite 4096 Jan  4 17:58 .
    -rw-rw-r--  1 mysite mysite   10 Jan  4 17:58 test.txt
    
    That's just for reference - as far as I know that's not behaving as the default should be for a linux environ.

    When I rsync files over, without setting any permissions options, I get these permissions (same rsync command as op):

    Code:
    drwxr-xr-x  2 mysite mysite 4096 Jan  4 18:01 .
    -r-xr-xr-x  1 mysite mysite   14 Jan  4 17:58 test_file.html
    
    Setting --chmod in my rsync command sets both my directories and files to the same permissions, which is definitely not what I want.

    I know this can be solved by changing the umask or something along those lines... apparently I'm not doing it correctly or something, I spent a couple hours last night googling and working on it but with no helpful results. See my op. Does anybody know what I'm missing?

    Many thanks - Mike
     
  4. karikas

    karikas Member

    Joined:
    Mar 8, 2006
    Messages:
    15
    Likes Received:
    0
    Trophy Points:
    1
    Solved!

    Thought I'd post my solution. Turns out it had nothing to do with my linux servers... I tried rsyncing to my other server, which had always worked before, and encountered the same problem.

    The issue turned out to be my copy of cwRsync on my Windows machine, which had recently been upgrade to Window 7 Ultimate from Vista Home Premium. The permissions became all wonky when cwRsync tried to send them over. Lots of Googling and testing later, the solution was to set this environment variable on my Windows machine:

    Code:
    set CYGWIN=nontsec
    ...and that turns off CYGWin's attempts to match up Windows permissions with the target linux machine's permissions. That was the problem... setting that environment variable fixed everything!
     
  5. madaboutlinux

    madaboutlinux Well-Known Member

    Joined:
    Jan 24, 2005
    Messages:
    1,052
    Likes Received:
    2
    Trophy Points:
    38
    Location:
    Earth
    Wow, you really must have done quite a searching and testing... thx for sharing the solution... Mike.
     
Loading...

Share This Page