如何在 NTFS(或 FAT32)分区上使用“chmod”?

如何在 NTFS(或 FAT32)分区上使用“chmod”?

我有一个需要在 NTFS 分区上执行的脚本。该脚本的权限设置为 600。

我尝试通过运行来修改权限chmod 755 script.sh,它不会报告失败或任何内容 - 但它也不会改变文件的权限:

$ stat script.sh

  File: `script.sh'
  Size: 297070      Blocks: 584        IO Block: 4096   regular file
Device: 811h/2065d  Inode: 35515       Links: 1
Access: (0600/-rw-------)  Uid: ( 1000/  xxxxxx)   Gid: ( 1000/  xxxxxx)
Access: 2010-09-30 14:05:16.041621000 -0700
Modify: 2010-09-30 14:05:05.070157000 -0700
Change: 2010-09-30 14:05:05.070475000 -0700

$ chmod 755 script.sh
$ stat script.sh

  File: `script.sh'
  Size: 297070      Blocks: 584        IO Block: 4096   regular file
Device: 811h/2065d  Inode: 35515       Links: 1
Access: (0600/-rw-------)  Uid: ( 1000/  xxxxxx)   Gid: ( 1000/  xxxxxx)
Access: 2010-09-30 14:05:16.041621000 -0700
Modify: 2010-09-30 14:05:05.070157000 -0700
Change: 2010-09-30 14:05:05.070475000 -0700

如您所见,它保持不变。

答案1

与大多数人的看法相反,NTFS 是一个兼容 POSIX 的文件系统,并且可以使用 NTFS 上的权限

要启用此功能,您需要一个“用户映射文件”或仅permissions在安装时提供该选项(当不需要与 Windows 兼容时)。这会将 Linux 用户映射到系统上的用户 ID,就像 NTFS/Windows 内部使用它们一样。

查看ntfs-3g 手册页了解一些信息和示例。如果您需要更多信息,请参阅有关所有权和权限的 ntfs-3g 高级文档

(请注意,这在 FAT 文件系统上不起作用。)

¹ 是的,它还可以存储在 linux/unix 中有效但在 Windows 下无效的文件名,支持符号链接和硬链接等。

答案2

模式由分区的挂载选项决定(您不能通过 chmod 更改它)。

对于文件上的“755”和目录上的“777”,你可以使用类似

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever

答案3

对于 NTFS 分区,请使用permissionsfstab 中的选项。

首先卸载 ntfs 分区。

使用以下方式识别分区 UUIDblkid

sudo blkid

然后编辑/etc/fstab

# Graphical 
gksu gedit /etc/fstab

# Command line
sudo -e /etc/fstab

并添加或编辑 ntfs 分区的一行

# change the "UUID" to your partition UUID
UUID=12102C02102CEB83 /media/windows ntfs-3g auto,users,permissions 0 0

创建挂载点(如果需要)

sudo mkdir /media/windows

现在挂载分区

mount /media/windows

我给你的选项auto将在你启动时自动挂载分区并users允许用户挂载和卸载。

然后您可以在 ntfs 分区上使用 chown 和 chmod。

答案4

您始终可以显式调用脚本解释器,在这种情况下不需要执行权限。如果脚本使用狂欢,可以通过查看脚本的第一行来验证,只需运行

bash script.sh

请注意,如果脚本调用同一分区上的其他脚本或二进制文件,则此方法无效。还请注意,与用 Bash Script、Perl、Python 或类似语言编写的文本脚本文件不同,此策略不适用于二进制文件。

相关内容