可能重复:
Ubuntu 删除了我的数据分区的权限
我用 ext4 重新格式化了系统上的 NTFS 分区,因为我想在当前的 Ubuntu 安装上使用它,而不是在 Windows 上。我添加了一个条目以/etc/fstab
在启动时挂载它。挂载点是。我将及其所有子目录的/home/username/bin
所有者更改为我的常规帐户及其用户组。最后,我将所有权限设置为 755。/home/username/bin
我的/etc/fstab
样子如下:
proc /proc proc nodev,noexec,nosuid 0 0
UUID=[uuid] / ext4 errors=remount-ro 0 1
UUID=[uuid] /data vfat utf8,umask=007,gid=46 0 1
UUID=[uuid] /home ext4 defaults 0 2
UUID=[uuid] /home/username/bin ext4 rw,suid,dev,exec,auto,user,async 0 2
UUID=[uuid] none swap sw 0 0
我现在的问题是,虽然我能够读取和写入此新分区上的文件,但我无法运行位于此处的应用程序/程序。作为普通用户,我总是收到“权限被拒绝”错误。作为 root(使用sudo
),什么也没有发生,这意味着它会立即将我带回 shell 提示符。应用程序应该产生文本输出或打开窗口。其中一些应用程序是二进制文件,一些是脚本。我尝试使用启动它们./program
。如果我将它们复制回我的主文件夹,我可以毫无问题地运行它们。
实际上,我将这些应用程序保存在主文件夹的另一个子目录中数月/home/username/apps
,并从那里运行它们,没有任何问题。
我该如何修复这个问题?我做错了什么?:)
答案1
您可以访问新创建的 ext4 分区上的文件,但无法运行程序。当您这样做时,您会收到“权限被拒绝”错误。这表明有两种可能性,verendj1有建议:
文件可能没有执行权限要从命令行授予文件执行权限,请运行:
chmod +x filename
如果您只想授予文件所有者执行权限:
chmod u+x filename
要在 Nautilus(文件浏览器)中授予文件执行权限,请右键单击该文件,然后单击特性。 点击权限标签。选中允许将文件作为程序执行,然后点击关闭。
该分区可能已安装
noexec
。要检查这一点,请运行mount
并查看noexec
相关条目旁边是否列出了。由于您是从安装的/etc/fstab
,因此您可以noexec
在那里删除。
此外,请注意:
通常,尽管并非总是如此,可执行文件应存储在正常位置:
/bin
,,,,,,,。您确定要在该驱动器上存储可执行文件/sbin
吗?您可能需要/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
/opt/bin
~/bin
编辑你的问题提供更多关于您想要实现的目标的信息。要通过指定相对路径从位于当前目录中的命令行运行程序,必须在其前面加上
./
:./program
如果您启动的是
.desktop
文件而不是应用程序,那么:- 它不需要设置可执行位。
你不应该尝试将它当作一个脚本或程序来运行,而是像这样:
xdg-open application.desktop
如果这些是使用 Wine 运行的 Windows 可执行文件,则它们实际上不必设置可执行位。如果没有,您可以右键单击它们,然后单击打开它们Wine Windows 程序加载器或者从命令行启动它们,如下所示:
wine program.exe
(我发现这个建议和之前的答案非常相似,所以我决定这样做社区维基。
答案2
我解决了。问题出在 中的挂载选项上/etc/fstab
。将其更改为defaults
(相当于更改user
为nouser
)解决了问题,现在一切都按预期运行。
答案3
忽略这个-原始帖子暗示 NTFS,但事实并非如此。
当您挂载 NTFS 分区时,与 ext3 或 ext4 不同,它仅使用为用户设置的权限进行挂载,而组和其他用户则根本没有权限 (rwx------)。使用 chmod 设置权限或使用 chown 设置所有者只会更改目录的权限,而不会更改目录中的任何内容。
解决方案是在 中指定正确的参数/etc/fstab/
。我成功使用的使自己成为所有者的参数是这个(将 00000000000000000 更改为正确的 UUID,并将 LOGIN_NAME 更改为您的登录名):
UUID=0000000000000000 /home/LOGIN_NAME/bin ntfs-3g auto,users,uid=LOGIN_NAME,gid=LOGIN_NAME,utf8,dmask=002,fmask=113 0 0
这些都应该在 fstab 中的一行上。
原因在于 NTFS 权限与本机 Linux 权限不同,因此必须指定某些转换才能供 Linux 使用。
忽略此内容结束-------------
编辑:
抱歉误导了您。
我相信你可以通过更改 ~/bin 目录的所有者来解决这个问题后首次安装时。在 bash shell 中,输入命令sudo chown LOGIN_NAME:LOGIN_NAME /home/LOGIN_NAME/bin
,当然,将 LOGIN_NAME 更改为您的姓名。
我使用 USB 驱动器对此进行了测试,它在我的 bin 目录中安装正常。唯一的区别是我在 fstab 中仅使用了选项“auto”。
答案4
我遇到了类似的问题,无法执行存储在 NTFS 上的 shell 脚本,即使使用 sudo,即使按照上面所述编辑 fstab 之后也是如此。
事实证明我从未创建过挂载点目录。我卸载了分区,并为该分区创建了挂载点目录:
mkdir /media/Windoze7
然后再次安装。
sudo mount -a