Rsync shell script permission error on destination server – Managing your servers can streamline the performance of your team by allowing them to complete complex tasks faster. Plus, it can enable them to detect problems early on before they get out of hand and compromise your business. As a result, the risk of experiencing operational setbacks is drastically lower.
But the only way to make the most of your server management is to perform it correctly. And to help you do so, this article will share nine tips on improving your server management and fix some problem about linux, ubuntu, rsync, , .
So this is my first bash script attempt, and I am trying to rsync a project folder on OS X to a development server running ubuntu 14.04. I get some permission errors on the destination server when I try to rsync as my user ‘developer’ but I also got them when I did it as user ‘ubuntu’. I cannot try as root due to default cloud server settings on EC2.
Here is my shell script.
#!/bin/bash rsync -r —l -t -z -v -e "ssh email@example.com" --exclude “/Applications/MAMP/htdocs/finalall/nbproject/” --delete /Applications/MAMP/htdocs/finalall/ :/var/www/html afplay "/System/Library/Sounds/Morse.aiff"
This is my error:
building file list ... rsync: link_stat "/Users/xxxxx/?#200#224l" failed: No such file or directory (2) done IO error encountered -- skipping file deletion rsync: failed to set times on "/var/www/html/.": Operation not permitted (1) ./ rsync: recv_generator: mkdir "/var/www/html/nbproject" failed: Permission denied (13) *** Skipping any contents from this failed directory *** testerterst.php nbproject/ rsync: mkstemp "/var/www/html/.testerterst.php.TISozV" failed: Permission denied (13) sent 493 bytes received 54 bytes 1094.00 bytes/sec total size is 971 speedup is 1.78 rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-42/rsync/main.c(992) [sender=2.6.9]
here is (some of) the output of sudo cat /etc/group
ssh:x:108: landscape:x:109: admin:x:110: ubuntu:x:1000: ssl-cert:x:111: developer:x:1001:
Sincere thanks for any help. It is greatly, greatly appreciated.
The output to
ls -lZd / /var/ /var/www/ /var/www/html/ is:
drwxr-xr-x 22 root root ? 4096 Aug 5 19:53 / drwxr-xr-x 13 root root ? 4096 Aug 5 20:00 /var/ drwxr-xr-x 3 root root ? 4096 Aug 5 20:00 /var/www/ drwxr-xr-x 2 root root ? 4096 Aug 5 20:17 /var/www/html/
You don’t have write access to the /var/www/html on the destination server, since the folder belongs to root and everybody else only has read/execute rights.
The best way to fix this is changing the owner of that directory to your ssh user:
chown -R developer. /var/www/html
This changes the owner of /var/www/html and all its subdirectories to the developer user and his default group.
If still others users need write access to the same directory I would recommend putting them in one group and then change the permissions of the folder to also allow everyone in the same group write access. The followings show you how to do that.
groupadd devs #Adds a group called devs useradd -G devs ubuntu #Adds the devs group to the ubuntu user chown -R .devs /var/www/html #Changes only the group of the directory to devs chmod -R 775 /var/www/html #Allows the owner and group of the directory full access, everybody else only has read/execute
Rather than change directory ownership, you could do this in two stages:
- ssh with a command tacked on to the end.
Assuming theserver is defined in your local ~/.ssh/config:
# rsync sourceDir to the home dir of yourname on theserver. # ':' after 'theserver' invokes ssh as transport. $ rsync -<options> sourceDir yourname@theserver:. # You will be prompted for your theserver password for the cp. # Change the cp source and dest to suit your needs. $ ssh -t theserver "sudo cp -r sourceDir /var/www/. && rm -rf sourceDir"