我的 Ubuntu 机器上有一个通过网络共享的驱动器,其中一台可以访问它的计算机是 Windows 7 计算机。
每当我在 Windows 计算机上将文件复制到 Ubuntu 共享文件夹时,该文件都会显示为无人拥有,并且权限有限:
-rwxr--r-- 1 nobody nogroup
我总是必须转到 Ubuntu 端的命令行并发出命令,chown
以便我有权编辑该文件。在此之前,我无法移动或复制它,并且它不会与 Dropbox 同步。
我怎样才能使当我从 Windows 机器复制文件时,它们自动归我所有(我的 Ubuntu 机器上只有一个用户帐户),并且我有权自由编辑和移动它们?
答案1
我不确定您的目录如何在网络上共享。如果使用 Samba,请编辑 smb.conf 并在共享定义中添加以下两行:
[yourshare]
...
force user = yourusername
force group = yourgroup
...
希望这可以帮助。
答案2
您应该能够使用 cp 中的 --no-preserve 标志来执行此操作
cp --no-preserve=ownership source destination
编辑:这仍然会有奇怪的权限(不过所有者将是调用 cp 的用户)。从 ntfs 复制时,这可能会更好用:
cp --no-preserve=ownership,mode source destination
这会将其与要复制到的文件夹的位掩码匹配,因此如果您以“用户 a”身份登录并复制到具有 drwxr-xr-x 权限(0755)的目录中,则文件将归“用户 a”所有并具有 -rw-r--r-- 权限(0644)。
答案3
我认为问题与 Ubuntu 端有关,因为共享目录没有足够的权限。
由于目录中创建的任何文件都具有父子关系权限功能,因此这是一个很好的机会来改变umask目录。
由于维基百科,
在计算机中,umask 是一个命令,它确定掩码的设置,该掩码控制如何为新创建的文件设置文件权限
所以我认为改变目录的 umask 可能值得测试。
归档变更umask,网络上有很多文档和例子。希望能得到帮助。
答案4
如果其他答案对你没有帮助,作为最后的选择您可以编写一个小型 bash 脚本,自动授予您对共享文件夹中所有文件的完全权限和所有权。您仍然必须手动启动此命令,但可以避免为每个文件单独输入该命令。也许还有可能让脚本“监视”文件夹,并且每当文件夹发生变化时,都会立即授予权限。不过我认为这只会在运行时起作用,而不会检测关机和下次重启之间的变化。