scp文件未设置正确的所有者

时间:2009-03-18 12:58:51

标签: linux ssh file-permissions scp umask

SCP是否在设置文件权限时遇到问题,或者我的服务器配置错误?

更新(19 / Mar / 09) :实际上:没有问题 - 我误解了权限的工作方式 - 它们不会改变文件内容更改时

用例:

我要编辑的服务器上有一个名为“importantFile.txt”的文件。该文件具有“master”的所有者和组:

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

我被称为“奴隶”但幸运的是,我在小组“主人”,所以我可以编辑我认为合适的文件。但是,我是一个懒惰的奴隶,不能打扰在服务器上编辑文件,我更喜欢在我的本地机器上编辑文件并将其保存到服务器:

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

如果我这样做,服务器上文件的内容会正常上传,文件的时间戳会更新,但文件的权限不会改变,文件仍由“master”拥有。这是一个问题,因为如果“奴隶”上传了不良内容,没有人会知道造成问题的是“奴隶”,“主人”会显得内疚。

也许我必须设置一个umask?如果是这样的话?我尝试了.bash_profile没有成功,并且在/etc/ssh/sshd_config上没有在Google上找到关于umask的任何内容。

4 个答案:

答案 0 :(得分:1)

您必须删除该文件才能覆盖它。您能够做到这一点取决于目录的权限和所有权。无法劫持现有文件的所有权。您拥有的写入权限仅适用于文件的内容。

答案 1 :(得分:1)

scp没什么特别的 - 尝试以奴隶身份登录到服务器,并使用你最喜欢的文本编辑器编辑文件......你会发现同样的行为...写入文件不会让你成为该文件的所有者。


示例:

以root身份

#cd /tmp
#mkdir fubar
#chgrp vboxusers fubar
#cd fubar/
#touch testfile
#chgrp vboxusers testfile 
#chmod g+w . testfile
#ls -al
total 16
drwxrwxr-x  2 root vboxusers  4096 2009-03-19 10:30 .
drwxrwxrwt 15 root root      12288 2009-03-19 10:29 ..
-rw-rw-r--  1 root vboxusers     0 2009-03-19 10:30 testfile
#echo foo > testfile 
#ls -al
total 20
drwxrwxr-x  2 root vboxusers  4096 2009-03-19 10:30 .
drwxrwxrwt 15 root root      12288 2009-03-19 10:29 ..
-rw-rw-r--  1 root vboxusers     4 2009-03-19 10:30 testfile

作为用户(在vboxusers组中)

>cd /tmp/fubar
>ls -al
total 20
drwxrwxr-x  2 root vboxusers  4096 2009-03-19 10:30 .
drwxrwxrwt 15 root root      12288 2009-03-19 10:29 ..
-rw-rw-r--  1 root vboxusers     4 2009-03-19 10:30 testfile
>echo bar >> testfile 
>ls -al
total 20
drwxrwxr-x  2 root vboxusers  4096 2009-03-19 10:30 .
drwxrwxrwt 15 root root      12288 2009-03-19 10:29 ..
-rw-rw-r--  1 root vboxusers     8 2009-03-19 10:31 testfile
>vim testfile
>ls -al
total 20
drwxrwxr-x  2 root vboxusers  4096 2009-03-19 10:31 .
drwxrwxrwt 15 root root      12288 2009-03-19 10:31 ..
-rw-rw-r--  1 root vboxusers    12 2009-03-19 10:31 testfile
>cat testfile 
foo
bar
baz

答案 2 :(得分:1)

您似乎可以通过backup-by-copying-when-mismatch变量配置Emacs如何处理此问题(请参阅Emacs手册或在Emacs中输入C-h-v backup-by-copying-when-mismatch)。

我实际上就此提出了bug report,因为我认为这是Tramp中的一个错误。

答案 3 :(得分:0)

我误解了文件的工作方式,修改文件内容不会改变所有权或组。

为什么混乱? EMACS - 每当我编辑文件时,我使用的是Emacs,而Emacs确实将所有者和组更改为当前用户。这样做是因为它通过将“filename”移动到“filename~”并创建一个名为“filename”的新文件来节省时间来生成备份文件 - 因为它是一个新文件,它具有当前用户文件权限。我想这是VI粉丝的一对一?