sitecopy 坚持要求 ~/.netrc 具有 600 权限,但我的 ~/ 位于 NTFS 分区上

sitecopy 坚持要求 ~/.netrc 具有 600 权限,但我的 ~/ 位于 NTFS 分区上

我拼命想让 sitecopy 从我的电脑上运行,但这个愚蠢的东西似乎坚持要读取我的 ~/.netrc 文件,即使手册页似乎另有说明(“如果存在,如果没有指定密码,则会在 ~/.netrc 中搜索密码。”;参见,例如http://linux.die.net/man/1/sitecopy

~/.netrc 不存在于我的主目录中,但尽管如此,sitecopy 似乎期望它,并说它没有正确的权限(应该是 600)。而且这个期望似乎是硬编码的,至少我还没有找到选项或开关或什么的。

我当然很乐意在那里放一个空的 .netrc 文件并赋予它正确的权限,但真正的麻烦就从这里开始了:我的主目录位于一个单独的分区上,该分区格式化为 NTFS,并使用 ntfs-3g 安装。

我还没有发现是否可以为使用 ntfs-3g 安装的分区上的文件赋予单独的权限(如果可以,那么如何赋予)。据我所知,我能控制的只有 umask(在 /etc/fstab 中),然后它适用于分区上的所有文件。现在将 umask 设置为 177 并接受全部文件具有 600 权限不起作用,因为这会阻止我进入分区上的任何目录(您需要为此设置目录的执行位)。

我也尝试过符号链接(在 NTFS 上有效,以防您不知道 ;-))到不同分区上的文件,在该分区中可以单独设置权限,但这不会欺骗 sitecopy,大概是因为它检查的是符号链接的权限,而不是目标的权限。

有人知道这个难题的解决方案吗,无论在哪个层面?唯一不行的就是将我的主分区重新格式化为 e3fs 或类似的东西。(我需要双启动到 Windows。)我将不胜感激!

此致,

弗洛里安

答案1

您可以尝试欺骗您的应用程序,告诉它您的$HOME应用程序在其他地方。

创建一个目录/linuxhome,像这样,您可以在其中根据需要设置权限,并.netrc以适当的权限将您的内容放入其中,然后您可以通过命令行运行 sitecopy:

HOME=/linuxhome sitecopy

如果不是,则适应实际命令sitecopy

答案2

在 Linux 上,另一种可能性是在其他地方(例如)以正确的权限创建文件/var/tmp,然后符号链接它(stat()将返回符号链接目标的权限)...

ln -s /var/tmp/netrc /home/user286915/.netrc

(注意:ntfs-3g 创建 Cygwin 格式的基于文件的符号链接,而不是 Windows 7 格式的重新解析点。)


...或者,如果这是不是NTFS,但像 FAT32 这样的完全受 Unix 损害的文件系统,绑定安装~/.netrc每次启动时都会显示它:

mount --bind /var/tmp/netrc /home/user286915/.netrc

其中/etc/fstab可以表达为:

/var/tmp/netrc  /home/user286915/.netrc  none  bind  0  0

答案3

我还没有发现是否可以为使用 ntfs-3g 安装的分区上的文件赋予单独的权限(如果可以,那么如何赋予)。据我所知,我能控制的只有 umask(在 /etc/fstab 中),然后它将应用于分区上的所有文件。现在将 umask 设置为 177 并接受所有文件都有 600 权限不起作用,因为这会阻止我进入分区上的任何目录(为此,您需要设置目录的执行位)。

NTFS 有自己的 ACL 格式,ntfs-3g映射到 POSIX ACL(包括基本权限),但不可能有完美的映射,并且用户需要告诉 ntfs-3g 要将每个 Unix UID 映射到的 Windows SID(每个 Windows 安装都有不同的“UID 命名空间”),因此默认情况下它是关闭的

(此外,Windows尊重 .exe 文件的“可执行”权限,它只是默认授予a+x所有文件 - 这看起来很丑陋ls。)

您可以通过以下方式启用此功能创建.NTFS-3G/UserMapping文件在 NTFS 分区的根目录下。如果不需要与任何现有 Windows 安装兼容,则可以添加通配符 SID:

sid="S-1-5-21-$((RANDOM*RANDOM))-$((RANDOM*RANDOM))-$((RANDOM*RANDOM))-1000"

mkdir .NTFS-3G; echo "::$sid" > .NTFS-3G/UserMapping

(上述 SID 的最后一部分是“RID”,类似于 Unix UID;与大多数 Unix 系统一样,对于新用户,它们甚至从 1000 开始。)

如果你如果希望 Linux 帐户映射到 Windows 帐户,请使用类似 的工具ntfs-3g.usermap生成 UserMapping 文件 – 它将使用文件系统中已找到的 SID。或者,启动 Windows 并使用类似 的工具whoami或在注册表(位于 下HKEY_USERS)中查找用户的 SID。

安装 UserMapping 文件后,卸载并重新挂载文件系统,并检查系统日志中是否存在 ntfs-3g 消息。

相关内容