0

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

用例:

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

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

我被称为“奴隶”,但幸运的是,我在“主人”组中,所以我可以根据需要编辑文件。但是,我是一个懒惰的奴隶,懒得在服务器上编辑文件,我更愿意在我的本地机器上编辑文件并将其 SCP 到服务器:

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

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

也许我必须设置一个umask?如果是在哪里?我尝试了 .bash_profile 没有成功,并且在 Google 上没有找到任何关于 .bash_profile 中的 umask 的信息/etc/ssh/sshd_config

4

4 回答 4

1

您必须删除文件才能覆盖它。您是否能够做到这一点取决于目录的权限和所有权。劫持已经存在的文件的所有权是不可能的。您拥有的写入权限仅适用于文件的内容。

于 2009-03-18T13:43:27.263 回答
1

这对 scp 没什么特别的 - 尝试以从属身份登录服务器,并使用您最喜欢的文本编辑器编辑文件...您会发现发生相同的行为...写入文件不会使您成为该文件的所有者文件。


例子:

作为根

#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
于 2009-03-18T14:11:26.947 回答
1

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

我实际上提交了一份关于此的错误报告,因为我认为这是 Tramp 中的错误。

于 2010-10-27T15:31:59.510 回答
0

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

为什么会出现混乱?EMACS - 每当我编辑文件时,我都在使用 Emacs,而 Emacs 确实会将所有者和组更改为当前用户。它这样做是因为它在保存时通过将“文件名”移动到“文件名~”并创建一个名为“文件名”的新文件来制作备份文件 - 因为它是一个新文件,它具有当前用户的文件权限。我猜这是1up to VI的粉丝?

于 2009-03-19T08:12:54.693 回答