chown命令返回“Operation not permitted”

19

我正在使用树莓派工作,但在给已挂载的外部硬盘授予权限方面遇到了困难,我使用了以下教程:http://www.howtogeek.com/139433/how-to-turn-a-raspberry-pi-into-a-low-power-network-storage-device/

现在我在那个外置硬盘上创建了文件夹,当我执行 ls -l 命令时,我得到了以下返回:

drwxr-xr-x 2 root root 512 Aug 28 23:24 test

这是位于:/media/USBHDD1/shares

现在我正在尝试给它所有的读写和执行权限,甚至将所有者和组更改为pi:pi

然而,chmod 777 没有起作用——它没有返回错误,但似乎没有生效

而当我使用

sudo chown -R pi:pi test/

我遇到了错误

chown: changing ownership of `test/': Operation not permitted

这是一个关于Linux的问题,但我认为有使用树莓派背景和知识的人可以帮助我。

根据要求提供额外信息:

当我运行 pi@raspberrypi /media $ grep USBHDD1 /etc/mtab 时,它返回:

/dev/sda1 /media/USBHDD1 vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro 0 0

2
看起来/media/USBHDD1是一个NTFS或VFAT分区,其用户/组所有权在挂载时进行了配置。 - mstrthealias
要么是这样,要么它被挂载为只读。针对OP的问题:挂载点是什么?(/media/USBHDD1/shares/ 还是 /media/USBHDD1/?)并且在发出chmod命令时,pwd是什么? - wildplasser
请在您的问题中包含命令 grep USBHDD1 /etc/mtab 的输出结果。 - mstrthealias
@wildplasser 我相信挂载点是 /media/USBHDD1/shares,而且在使用 chmod 时我没有被提示输入密码。无论我使用什么带有 'sudo' 的命令,我都不需要输入密码。 - l00kitsjake
3
VFAT是一种文件系统。@myninjaname是正确的。VFAT不支持所有权。 - wildplasser
@wildplasser,我该如何更改它以避免VFAT呢?这是一个可能的解决方案吗? - l00kitsjake
1个回答

22

原因在于vfat文件系统的所有权和权限是在挂载时定义的。

mount(8) 手册页面:

fat 的挂载选项...

   uid=value and gid=value

          Set the owner and group of all files.  (Default: the uid and gid
          of the current process.)

   umask=value

          Set the umask (the bitmask  of  the  permissions  that  are  not
          present).  The default is the umask of the current process.  The
          value is given in octal.
至少有三种方法可供选择:
(1)将pi: pi授予整个/media/USBHDD1挂载的访问权限: mount -o remount, gid = <pi的gid>, uid = <pi的uid> /media/USBHDD1 要确定pi的uid: cat /etc/passwd | grep pi 要确定pi的gid: cat /etc/group | grep pi (2)通过更改umaskdmask,使每个人都可以访问/media/USBHDD1(不建议): mount -o remount,umask=000,dmask=000 /media/USBHDD1 (3)将分区更改为其他文件系统。只有在您不从Windows计算机访问外部硬盘时才执行此操作:
您将无法将文件系统从VFAT转换为Unix兼容的FS,因此必须备份驱动器的内容,格式化为EXT3+或reiserfs,然后将内容复制回来。您可以在网上找到执行此操作的教程。

让我们在聊天中继续这个讨论 - mstrthealias
这可能有一点不安全,但是在我用Samba提供的挂载驱动器的/etc/fstab文件中添加"umask=000,dmask=000"解决了chown错误。根据我的情况,这个错误是由使用docker-compose的GitLab安装程序生成的。 - marcor92

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接