我有一个需要在 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 分区,请使用permissions
fstab 中的选项。
首先卸载 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 或类似语言编写的文本脚本文件不同,此策略不适用于二进制文件。