我有一些位于 Samba 服务器上的 python 脚本。我首先在 Windows 下使用它们,现在想在 Linux 机器上使用它们。因此,我使用以下命令在我的 Linux 计算机 (Kubuntu 16.04) 上安装了服务器文件夹:
sudo mount -t cifs //[IP address]/Share Share -o username=guest
现在我想在Linux机器上运行这个共享目录中的python文件。当 python 必须写入此目录中的文件时,就会出现问题(我创建 .PNG 文件并写入 .CSV 文件来记录我的结果):
IOError: [Errno 13] Permission denied: 'filename.png'
这是有道理的......此类文件的权限是:
-rw-rw-r--+ 1 nobody nogroup
我写入的 .PNG 文件实际上是在那一刻创建的。所以结果是一个具有上述权限的空文件。
已经存在的文件(在 Windows 上创建)的权限是:
-rwxrw-rw-+ 1 nobody nogroup
有人可以帮我从这里出去吗?
我希望能够写入该文件。它应该仍然可以在 Windows 计算机上工作/访问。
我不确定问题出在哪里。我不知道为什么这些文件不属于任何人,即使这些文件是刚刚创建的。那么无法写入的原因当然是组权限是只读的并且该文件是 nogroup 的一部分。
我在 Windows 计算机(不是服务器)上访问相同的文件,我可以在那里读写并做任何我想做的事情。
所以我的问题是,为什么这些文件不属于任何人且属于 nogroup,我该如何解决这个问题?
答案1
这里有很多可能的问题。
- 您以用户身份挂载共享
guest
。如果此帐户没有足够的权限来创建文件,您将遇到问题 - 您不使用
-o noperm
,因此客户端会尝试抢占权限检查 - 以及服务器想要强制执行的任何内容 - 空的 PNG 文件是否已经存在,或者您可以完全确定它是由您的脚本创建的吗?
- 根据服务器是 Windows 还是 Samba,您可能拥有与 Windows 权限交互的服务器端文件系统权限