scp file not setting correct owner

Tom picture Tom · Mar 18, 2009 · Viewed 7.3k times · Source

Does SCP have a problem setting file permissions or have I misconfiguration my server?

Updated (19/Mar/09): Actually: There is no problem - I have just misunderstood the way permissions work - they don't change when the file contents are changed

Use case:

There is a file on a server that I want to edit called "importantFile.txt". The file has owner and group of "master":

ls -l importantFile.txt:
-rw-rw-r--  1 master master     7 Mar 18 08:11 importantFile.txt

I am called "slave" but luckily, I am in group "master" so I can edit the file as I see fit. However, I'm a lazy slave and can't be bothered to edit the file on the server, I'd prefer to edit the file on my local machine and SCP it to the server:

echo "bored slave info" > importantFile.txt
scp importantFile.txt slave@theServerAddress:/pathToFile/importantFile.txt

If I do this, the contents of the file on the server are uploaded fine and the timestamp of the file is updated but the permissions of the file don't change, the file is still owned by "master". This is a problem because if "slave" uploaded bad content, no one would know it was "slave" who caused the problem, "master" would look guilty.

Perhaps I have to set a umask? if so where? I tried .bash_profile without success and haven't found anything on Google about umask in /etc/ssh/sshd_config.

Answer

ypnos picture ypnos · Mar 18, 2009

You have to delete the file to overwrite it. Wether you are able to do that depends on the directory's permissions and ownership. Hijacking ownership of an already existing file is not possible. The write permission you have is only applied on the contents of the file.