设置 NTFS 分区权限

f.l*_*mbe 9 permissions ntfs executable

我的 PC 上有一个 NTFS 分区。它在 Linux 和 Windows 双引导系统之间共享数据。

我的/etc/fstab线路是:

#Mount Dati at boot=
UUID=01CD9E64E80BD460 /mnt/Dati ntfs nls=iso8859-1,umask=0022,uid=1000,gid=1000,dmask=027,fmask=137 0 0
Run Code Online (Sandbox Code Playgroud)

有问题,因为我无法使任何文件可执行。我应该改变什么?

另外,有人可以帮助我理解 umask、dmask 和 fmask 或发布一些指南的链接吗?

总结:对于在 Linux 和 Windows 之间共享并在 samba 网络上共享的 NTFS 分区,我应该给予什么权限?

小智 22

我知道这个问题是不久前被问到的,但无论如何我都会尝试为未来的用户回答:

关于文件系统中的掩码:

linux 文件系统中掩码的用途是控制- 不同用户/组之间对特定文件和文件夹的读取、写入和执行权限。我强调“控制”这个词,因为面具与给予许可不同。恰好相反; 他们要控制或限制许可。因此,如果要将文件的 777 设置为权限,则必须使用 000 作为该文件的掩码。对于权限 655,掩码将为 122(即:对于权限 xyz 掩码将为 (777-xyz))。

什么是 umask、dmask 和 fmask?

  • umask = 用户掩码(文件夹目录!)
  • dmask = 仅目录掩码
  • fmask = 仅文件掩码

如何设置 NTFS 分区文件的可执行权限?

运行此命令以获取每个 NTFS 驱动器的 UUID(通用唯一标识符):

$ sudo blkid
Run Code Online (Sandbox Code Playgroud)

你会得到这样的输出:

/dev/sda6: LABEL="Software" UUID="FEDC5DB5DC5D6943" TYPE="ntfs" 
/dev/sda7: LABEL="Works" UUID="585AD06A35149024" TYPE="ntfs" 
Run Code Online (Sandbox Code Playgroud)

现在编辑 fstab 文件:

$ sudo vim /etc/fstab
Run Code Online (Sandbox Code Playgroud)

在 fstab 文件中,使用以下选项添加/编辑每个驱动器指定行(请记住谨慎使用其他选项,因为添加任何其他选项可能会导致问题):

defaults,auto,umask=002 
Run Code Online (Sandbox Code Playgroud)

因此,在编辑/添加 nfts 驱动器后,您的 fstab 文件部分将如下所示:

#<file system>           <mount point>   <type>  <options>                  <dump>  <pass>
UUID=FEDC5DB5DC5D6943   /media/software   ntfs    defaults,auto,umask=002      0      0
UUID=585AD06A35149024   /media/works      ntfs    defaults,auto,umask=002      0      0
Run Code Online (Sandbox Code Playgroud)

上面的umask 将设置权限等于775,即admin 用户(即你)和admin 用户组的读写权限和其他用户的读写权限。对于 samba 共享,您可能需要gid=YourGroupID,uid=YourUserID在选项集中使用。您可以使用以下命令查找 YourGroupID 和 YourUserID 值:

$ id YourUserName
Run Code Online (Sandbox Code Playgroud)

如果已经安装,现在卸载您的驱动器:

$ sudo umount -a
Run Code Online (Sandbox Code Playgroud)

然后通过这个命令挂载:

$ sudo mount -a
Run Code Online (Sandbox Code Playgroud)

安装后,您可以以任何方式使用驱动器。