Nat*_*man 145 permissions ntfs 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
Run Code Online (Sandbox Code Playgroud)
如您所见,它保持不变。
Jan*_*anC 100
与大多数人的看法相反,NTFS 是一个兼容 POSIX 的文件系统,并且可以在 NTFS 上使用权限。
要启用此功能,您需要一个“用户映射文件”或仅permissions
在挂载时提供选项(当不需要与 Windows 兼容时)。这将系统上的 linux 用户映射到用户 ID,如 NTFS/Windows 在内部使用它们。
有关一些信息和一些示例,请参阅ntfs-3g 联机帮助页。如果您需要更多信息,请参阅有关所有权和权限的ntfs-3g 高级文档。
(请注意,这不适用于 FAT 文件系统。)
¹ 是的,它还可以存储在 linux/unix 中有效但在 Windows 下无效的文件名,支持符号链接和硬链接等。
hto*_*que 86
模式由分区的挂载选项决定(您不能通过 chmod 更改它)。
对于文件上的“755”和目录上的“777”,您可以使用类似的东西
sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever
Run Code Online (Sandbox Code Playgroud)
Pan*_*her 49
对于 NTFS 分区,请使用permissions
fstab 中的选项。
首先卸载ntfs分区。
使用以下命令标识您的分区 UUID blkid
sudo blkid
Run Code Online (Sandbox Code Playgroud)
然后编辑 /etc/fstab
# Graphical
gksu gedit /etc/fstab
# Command line
sudo -e /etc/fstab
Run Code Online (Sandbox Code Playgroud)
并为 ntfs 分区添加或编辑一行
# change the "UUID" to your partition UUID
UUID=12102C02102CEB83 /media/windows ntfs-3g auto,users,permissions 0 0
Run Code Online (Sandbox Code Playgroud)
创建一个挂载点(如果需要)
sudo mkdir /media/windows
Run Code Online (Sandbox Code Playgroud)
现在挂载分区
mount /media/windows
Run Code Online (Sandbox Code Playgroud)
我给你的选项auto
, 将在你启动时自动挂载分区,并users
允许用户挂载和 umount 。
然后您可以在 ntfs 分区上使用 chown 和 chmod。
小智 20
除了在上面 htorque 的回答中设置 fmask 和/或 dmask 之外,如果您想在驱动器上执行脚本,我还必须设置“exec”挂载选项。
所以这个例子是:
sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever
Run Code Online (Sandbox Code Playgroud)
loe*_*org 14
您始终可以显式调用脚本解释器,在这种情况下不需要执行权限。如果脚本使用bash,可以通过查看脚本的第一行来验证,只需运行
bash script.sh
Run Code Online (Sandbox Code Playgroud)
请注意,该脚本调用同一分区上的其他脚本或二进制文件,这将不起作用。另请注意,与用 Bash Script、Perl、Python 等编写的文本脚本文件相反,该策略不适用于二进制文件。
小智 10
根据NTFS-3G 文档的所有权和权限部分,我们可以使用挂载选项来控制文件访问和创建。组合非常复杂(参见那里的两个表格)。我也没有阅读并获得所有这些。例如,我不知道 NTFS-3G 二进制包在编译时是否选择了 POSIX ACL。但我得出的最好结果是使用用户映射文件和一些挂载选项来近似 Windows 和 Linux 之间文件所有权和权限的合理映射。
警告:这只是最适合我在双启动 Windows 8 和 Kubuntu 14.04 之间共享 NTFS数据分区(D:
Windows 上的驱动器)的方法。这些说明是经过仔细回顾而记录的,但没有经过彻底的测试。再次重复整个过程太累太乏味了。因此,请自行承担风险。但是,如果您这样做了,请分享您的经验。如果您决定按照说明进行操作,请在实际行动之前完整阅读以了解全貌。祝你好运!
好的,给你!详细说明由三部分组成。第 1 部分应在 Windows 上执行,而第 2 部分应在 Linux 上执行。第 3 部分用于测试。
NTFS-3G 文档的用户映射部分指定了两个版本来设置 Windows 和 Linux 之间的用户映射,一个是 Windows 版本,一个是 Linux 版本。我的经验是 Linux 版本最终出现了Miss。Linux 帐户未映射到我的 Windows 帐户,但某些未知帐户出现在SID 下。结果一团糟,因为这个未知帐户拥有我的 Windows 帐户的所有文件。在这种情况下,除非您拥有收回所有权的管理权限,否则您的 Windows 帐户下的文件将无法访问。但即使你长了疥疮,它仍然是错误的映射。这意味着,以后您在 Linux 上创建的任何文件都会分配给 Windows 上的未知帐户,而 Windows 上的文件会分配给 Linux 上的 root(如果我没记错的话)。因此,在 Windows 上,您需要再次收回所有权,而在 Linux 上则需要更改所有权。这不是我们所期望的。经过几次无望的尝试解决该问题后,我放弃并转向 Windows 版本。那个有效。从 NTFS-3G 文档的相关部分中提取的详细说明如下:
下载usermap工具,将其解压缩到某个地方(在我的情况下为 drive C:
),最好在 NTFS 分区(在我的情况下为 drive D:
)之外进行共享。
打开 Windows 命令行。切换到工具的解压目录tools
(默认)usermap
。然后运行以下命令:
C:\tools> mapuser > UserMapping
Run Code Online (Sandbox Code Playgroud)
这会生成一个模板并将其重定向到名为UserMapping
. 用文本编辑器打开文件,比如记事本,你应该看到以下几行:
# Generated by usermap for Windows, v 1.1.5
# For Windows account "Account" in domain "Domain"
# Replace "user" and "group" hereafter by matching Linux login
user::SID
:group:SID
Run Code Online (Sandbox Code Playgroud)
据推测,第一个SID
应该是您的用户 SID,而第二个应该是您的组 SID。您可以分别通过命令whoami /user
和来检查它们whoami /groups
。
你做后确定的SID是正确的,下面的评论,即指令,改变user
在user::SID
行到您的用户名,并group
在:group:SID
行Linux上的主组名称。在 Ubuntu 上,它们是相同的。此外,还在该user::SID
行的第一个冒号之后添加您的 Linux 组名。所以这条线应该看起来像user:group:SID
. 似乎如果不这样做,在 Windows 上创建的文件将被分配到user:root
Linux 上。
保存文件。将其移动.NTFS-3G
到要共享的 NTFS 分区(在我的情况下为 drive D:
)上名为(如果尚不存在则创建)的目录。
此步骤用于第 3 部分中的测试。在共享 NTFS 分区上,创建一个新目录和一个新文件。
现在启动到 Linux。 sudo
编辑文件/etc/fstab
。添加或修改共享 NTFS 分区的行,如下所示:
UUID=... /data ntfs defaults,umask=077,utf8 0 0
Run Code Online (Sandbox Code Playgroud)
最重要的是设置umask
(dmask
也fmask
可能工作但未测试)。选择一个umask
你喜欢的值,虽然我选择了077
。似乎没有这个设置,o
新创建的文件将被授予完全权限。
保存文件。现在sudo mount
或重新挂载(sudo umount
然后重新挂载sudo mount
)共享的 NTFS 分区(在我的情况下/data
):
$ sudo mount /data
Run Code Online (Sandbox Code Playgroud)
现在(仍然在 Linux 上)cd
到安装点(在我的情况下,/data
),ls -l
那里的文件。检查它们的所有权和权限是否分别匹配您在UserMapping
文件中指定的和umask
您设置的/etc/fstab
(权限之间的匹配umask
需要一些补码计算,请参阅man (1) umask以获取更多信息)。如果他们这样做了,那么恭喜,实现了一半的目标。否则,可怜你。询问 Ubuntu 或 Windows。
然后创建一个新目录和一个新文件。 ls -l
检查他们的所有权和权限。所有权应该像往常一样是您的用户名和主要组。权限应与umask
. 现在重新启动计算机并启动到 Windows。在共享 NTFS 分区上找到您刚刚在 Linux 上创建的目录和文件。检查它们的属性以查看它们是否已分配给您的 Windows 帐户。如果是,那么恭喜你,你已经完成了。否则,运气不好。询问 Windows 或 Ubuntu。
旧线程,我知道,但仍然相关并且缺少一个特定的用例提示,由各种其他论坛/线程上的不同建议组成,并在 Ubuntu GNOME 13.04 上进行了测试,我想要一个外部驱动器来保存 Steam 库......
例如,当 NTFS 分区在外部 USB 驱动器上时——这意味着该分区是在连接时即时挂载的——那么您可以使用以下方法使 udev 挂载具有执行权限的 ntfs 分区。
打开终端窗口并执行以下操作:
$ sudo nano /etc/udev/rules.d/90-usb-disks.rules
Run Code Online (Sandbox Code Playgroud)
然后将此行粘贴到应该是空白/新文件的内容中(如果不是,则退出 nano 并重新发出命令,但以更高的数字开头,例如 91-...):
ENV{ID_FS_TYPE}=="ntfs", ENV{ID_FS_TYPE}="ntfs-3g"
Run Code Online (Sandbox Code Playgroud)
然后保存并关闭。拔下驱动器,然后在终端中执行:
$ sudo service udev restart
Run Code Online (Sandbox Code Playgroud)
接下来,重新插入驱动器并享受:)
所有步骤:
安装ntfs-3g
:
sudo apt-get install -y ntfs-3g
Run Code Online (Sandbox Code Playgroud)卸载NTFS分区:
sudo umount /mnt/windows
Run Code Online (Sandbox Code Playgroud)使用ntfs-3g.usermap
生成的UserMapping
文件:
sudo ntfs-3g.usermap /dev/disk/by-label/MY-NTFS
Run Code Online (Sandbox Code Playgroud)
或者
sudo ntfs-3g.usermap /dev/sdb1
Run Code Online (Sandbox Code Playgroud)重新挂载NTFS分区以添加UserMapping
文件:
mount -a
sudo mkdir /mnt/windows/.NTFS-3G
sudo mv UserMapping /mnt/windows/.NTFS-3G/
Run Code Online (Sandbox Code Playgroud)更新您的fstab
文件:
sudo vim /etc/fstab
Run Code Online (Sandbox Code Playgroud)
更新挂载线:
#
在开头添加 a 对其进行注释。UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0
使用ntfs-3g
且唯一的default
选项)它应该是这样的:
#UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0
最后,使用您的重新安装fstab
:
sudo umount /mnt/windows
sudo mount -a
Run Code Online (Sandbox Code Playgroud)对您拥有的每个NTFS分区执行一次!
我用Windows 7+检查它,权限影响 Windows 操作系统!我在 Windows 分区上更改了我的主目录的权限,当我再次使用 Windows 时,我可以看到用户坏了!
在 Linux 中,NTFS(和 FAT32)的模式由分区的挂载选项决定。您不能通过 chmod 更改它。
假设:USB 驱动器被视为 sdb1
,修改以匹配您的情况下的驱动器号和分区号。一般语法是sdxn
,其中x
是驱动器号,n
是分区号,例如sudo lsblk -f
准备
卸载 NTFS 分区。
sudo umount /dev/sdxn # general syntax
sudo umount /dev/sdb1 # modify to match your case
Run Code Online (Sandbox Code Playgroud)创建一个自定义挂载点(仅当您想要一个新的挂载点时),例如
sudo mkdir -p /mnt/sd1
Run Code Online (Sandbox Code Playgroud)检查您的用户 IDuid
号码(通常是 1000,有时是 1001 或 1002 ...)
grep ^"$USER" /etc/group
Run Code Online (Sandbox Code Playgroud)
如果您想获得所有权,请使用该号码(默认为root
)。
挂载 NTFS 分区
示例 1(对文件没有执行权限,对“其他人”没有访问权限),
sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdxn /mnt/sd1 # general syntax
sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdb1 /mnt/sd1 # modify to match your case
Run Code Online (Sandbox Code Playgroud)
在这种情况下,你可以运行该脚本this-script
与
bash /mnt/sd1/this-script
Run Code Online (Sandbox Code Playgroud)示例 2(对文件具有执行权限,对“其他”没有访问权限),
sudo mount -o rw,user,uid=1000,umask=007,exec /dev/sdxn /mnt/sd1 # general syntax
sudo mount -o rw,user,uid=1000,umask=007,exec /dev/sdb1 /mnt/sd1 # modify to match your case
Run Code Online (Sandbox Code Playgroud)
在这种情况下,你可以运行该脚本this-script
与
/mnt/sd1/this-script
Run Code Online (Sandbox Code Playgroud)
并且您也可以从此位置运行可执行程序(不建议这样做)。
示例3(所有人都拥有完全权限,方便但不安全,当有多个用户时),
sudo mount -o rw,users,umask=000,exec /dev/sdxn /mnt/sd1 # general
sudo mount -o rw,users,umask=000,exec /dev/sdb1 /mnt/sd1 # modify to match your case
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
252797 次 |
最近记录: |