Linux cp ntfs 文件系统上的权限被拒绝

Linux cp ntfs 文件系统上的权限被拒绝

有人能解释一下我为什么会收到这个权限被拒绝错误吗?我个人是用户g,并且正如 ls 所示,我对源和目标都有读写权限。我的系统是slackware 14,并且写入的设备是我的电子阅读器,一个ntfs-3g file system

我有其他 ntfs 文件系统、拇指驱动器、外部硬盘等,我可以以用户身份写入。它们的权限设置没有明显差异。作为 ntfs,它们都归 root 组 root 所有。只有这款电子阅读器才有这个问题(尽管我可以以 root 身份写入)。所以我相信问题出在这台设备上,但我不知道可能是什么问题。

~ $ cp /home/g/MyBooks/Wyndham-TheMidwichCuckoos.txt /500gb/database/media/  
cp: cannot create regular file '/500gb/database/media/Wyndham-TheMidwichCuckoos.txt': Permission denied  
~ $ ls -l /home/g/MyBooks/Wyndham-TheMidwichCuckoos.txt                         
-rw-r--r-- 1 g users 380183 Aug 10 11:04 /home/g/MyBooks/Wyndham-TheMidwichCuckoos.txt  
~ $ ls -l /500gb/database/  
total 32  
drwxr-xr-x 2 root root 8192 Aug 10 11:23 cache/  
drwxr-xr-x 3 root root 8192 Aug  5 13:26 layout/  
drwxr-xr-x 2 root root 8192 Aug  9 14:07 media/  
drwxr-xr-x 2 root root 8192 Aug  5 17:28 sync/  
~ $

电子阅读器是 fat32,我假设它是 ntfs,
~ $ mount
/dev/sda3 on / 类型 ext2 (rw)
proc on /proc 类型 proc (rw)
sysfs on /sys 类型 sysfs (rw)
/dev/sda4 on /home 类型 ext2 (rw)
tmpfs on /dev/shm 类型 tmpfs (rw)
/dev/sda1 on /winxp 类型 fuseblk (rw,allow_other,blksize=4096,default_permissions)
/dev/sdb on /500gb 类型 vfat (rw)
/dev/sdd1 on /3tb 类型 fuseblk (rw,allow_other,blksize=4096)
~ $ cp /home/g/MyBooks/Wyndham-TheMidwichCuckoos.txt /3tb
~ $ cp /home/g/MyBooks/Wyndham-TheMidwichCuckoos.txt /500gb
cp:无法创建常规文件“/500gb/Wyndham-TheMidwichCuckoos.txt”:权限被拒绝
~ $

我无法更改此电子阅读器的权限,无论是作为 root 还是作为用户。
作为 root,它似乎可以工作,但没有任何变化
/home/g # chmod 777 -R /500gb/database
/home/g # ls -l /500gb/database
total 32
drwxr-xr-x 2 root root 8192 Aug 10 11:23 cache
drwxr-xr-x 3 root root 8192 Aug 5 13:26 layout
drwxr-xr-x 2 root root 8192 Aug 9 14:07 media
drwxr-xr-x 2 root root 8192 Aug 5 17:28 sync

作为用户,chmod 被拒绝,因此
〜$ chmod 777 -R /500gb/database
chmod:更改'/500gb/database'的权限:操作不允许
chmod:更改'/500gb/database/cache'的权限:操作不允许
chmod:更改'/500gb/database/cache/cacheExt.xml'的权限:操作不允许
chmod:更改'/500gb/database/cache/media.xml'的权限:操作不允许 chmod:更改'/500gb/database/cache/cacheExtSchema_1.1.xsb'的权限:操作不允许
chmod:更改'/500gb/database/media'的权限:操作不允许
chmod:更改'/500gb/database/media'的权限:操作不允许
chmod:更改'/500gb/database/media/Stevenson-TreasureIsland.txt'的权限:操作不允许
chmod:更改'/500gb/database/media/Rendell-WolftotheSlaughter.txt':操作不允许

这个过程对我来说很有帮助,感谢 Miroslav Koskar
/home/g # mount | grep sdb
/home/g # mount /dev/sdb -o uid=1000,gid=100 /500gb
/home/g # mount | grep sdb
/dev/sdb on /500gb type vfat (rw,uid=1000,gid=100)
/home/g # ls -l /500gb/database
total 32
drwxr-xr-x 2 g users 8192 Aug 10 11:23 cache
drwxr-xr-x 3 g users 8192 Aug 5 13:26 layout
drwxr-xr-x 2 g users 8192 Aug 10 12:51 media
drwxr-xr-x 2 g users 8192 Aug 5 17:28 sync
/home/g #
~ $ cp /home/g/MyBooks/Wyndham-TheMidwichCuckoos.txt /500gb/database/media
~ $

答案1

在我看来权限设置不正确。

  1. 您是用户g并可以读取文件=确定

  2. 但您无法在目标中创建文件,因为media您无权写入该目录,因此只能root执行此操作

因此,请复制root或更改目标的权限,以便您对media目录拥有写权限。


正如所指出的,无法更改已安装的 NTFS 文件系统的权限或所有权。在这种情况下,可以使用适当的安装选项。以下摘录自man mount

uid=值、gid=值和 umask=值

设置文件系统上的文件权限。umask 值以八进制给出。默认情况下,文件由 root 拥有,其他人无法读取。


例如:(适用/dev/sdc1于 FAT32 文件系统)

检查设备是否未安装(以下内容应返回而无输出)

$ mount | grep sdc1

使用选项设置uid安装设备gid

$ sudo mount /dev/sdc1 -o uid=1000,gid=1000 /mnt

验证挂载点

$ mount | grep sdc1

/dev/sdc1 on /mnt type vfat (rw,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

答案2

media目录的所有者为root(其组为root),模式为 755,因此只有其所有者 ( root) 可对其进行写入。您正尝试在该目录中创建一个文件 (您不会覆盖现有文件,对吧?),该文件将被视为对该目录的修改。而且您不是以 的身份运行的root。这可能是您没有权限的原因。

chown目录media保存到您自己的目录中(或者chmod您可以对其进行写入),或者在或cp下运行。susudo

相关内容