有人能解释一下我为什么会收到这个权限被拒绝错误吗?我个人是用户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
在我看来权限设置不正确。
您是用户
g
并可以读取文件=确定但您无法在目标中创建文件,因为
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
下运行。su
sudo