我的本地计算机装有 Debian 10,我在 KDE 上使用 Dolphin。我正在使用它连接到运行 ubuntu 16.04 的远程计算机。我可以使用 Dolphin 中的 sftp 命令连接并浏览文件:
sftp://{username[:password]}@{domain}/{path}
我在远程计算机上的用户是 sudoer。从我的本地计算机,我可以打开要编辑的远程计算机上的文件,但是当我尝试保存它时,我收到“访问被拒绝”。远程文件的权限设置为 674,并且我在远程计算机上的用户帐户位于该文件组所在的组中。我不确定为什么访问被拒绝。组中的任何人都不应具有写入权限吗?
答案1
在 UNIX/Linux 上,目录只是文件名和 inode 的“列表”。如果您已经获得现有文件的写入权限,则应该能够对其进行修改。但要在目录中创建/删除文件,必须对该目录本身具有写权限。
sudo
在这里似乎无关紧要,尽管可以/usr/lib/ssh/sftp-server
通过sudo
- 例如调用远程。sftp -s '/usr/bin/sudo /usr/libexec/sftp-server' <remotehost>
。
从第三条评论来看,我认为编辑器通过 sftp 使用 FUSE,并在编辑原始文件时创建一个临时文件,并且由于作者没有对该目录的写入权限,因此失败了。