不能将chmod应用于文件


18

我的硬盘上有一个文件,

cd /media/celebisait/5AC69788C6976355

我的档案叫做myFile.tar.gz。我做了ls -l

-rw------- 2 celebisait celebisait  1387745311 Jun  6  2013 myFile.tar.gz

一切似乎都很好。但是,当我这样做时

$ sudo chmod 755 myFile.tar.gz

我没有任何错误,但是什么也没发生,即当我ls -l再次执行此操作时,得到的输出是相同的,

-rw------- 2 celebisait celebisait  1387745311 Jun  6  2013 myFile.tar.gz

Chmod不会更改。为什么?

PS:我使用Ubuntu 13.04。

编辑:

$ cd /media/celebisait/5AC69788C6976355
$ df

Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda2       89873576  42976028  42325544  51% /
none                   4         0         4   0% /sys/fs/cgroup
udev            16436736         4  16436732   1% /dev
tmpfs            3289260       920   3288340   1% /run
none                5120         0      5120   0% /run/lock
none            16446280       764  16445516   1% /run/shm
none              102400        52    102348   1% /run/user
/dev/sda1          94759      2208     92551   3% /boot/efi
/dev/sdb1      767999996 541212516 226787480  71% /media/celebisait/5AC69788C6976355
/dev/sdb2      767999996   1466472 766533524   1% /media/celebisait/54D09DBDD09DA5B0

编辑2:

$ cd /media/celebisait/5AC69788C6976355
$ mount

/dev/sda2 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /sys/firmware/efi/efivars type efivarfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
/dev/sda1 on /boot/efi type vfat (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfsd-fuse on /run/user/celebisait/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=celebisait)
/dev/sdb1 on /media/celebisait/5AC69788C6976355 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sdb2 on /media/celebisait/54D09DBDD09DA5B0 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)

编辑3:

$ sudo fdisk -l /dev/sdb1

Disk /dev/sdb1: 786.4 GB, 786432000000 bytes
255 heads, 63 sectors/track, 95611 cylinders, total 1536000000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x6e697373

This doesn't look like a partition table
Probably you selected the wrong device.

     Device Boot      Start         End      Blocks   Id  System
/dev/sdb1p1   ?  1936269394  3772285809   918008208   4f  QNX4.x 3rd part
Partition 1 does not start on physical sector boundary.
/dev/sdb1p2   ?  1917848077  2462285169   272218546+  73  Unknown
Partition 2 does not start on physical sector boundary.
/dev/sdb1p3   ?  1818575915  2362751050   272087568   2b  Unknown
Partition 3 does not start on physical sector boundary.
/dev/sdb1p4   ?  2844524554  2844579527       27487   61  SpeedStor
Partition 4 does not start on physical sector boundary.

Partition table entries are not in disk order

编辑4:

$ sudo fdisk -l /dev/sdb

Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x9c73d093

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048  1536002047   768000000    7  HPFS/NTFS/exFAT
/dev/sdb2      1536002048  3072002047   768000000    7  HPFS/NTFS/exFAT
/dev/sdb3      3072002048  3907026943   417512448    7  HPFS/NTFS/exFAT

该外部驱动器的文件系统是什么?df命令的结果会很好
Kiwy 2014年

如果您拥有文件和目录,则不需要sudo,这取决于它的安装方式(只读?rootsquash?),也许是CD或写保护的USB记忆棒?
X天

@Kiwy我添加了的输出df
2014年

@Braiam怎么样mount
2014年

发布的输出blkid
Avinash Raj 2014年

Answers:


15

TL; DR;

注意:根据OP用新信息对问题的持续更新,可以确定问题出在,他正在安装NTFS分区。因此,下面的#3是他问题的实际答案。在这里,我将其他2种方法留给其他可能遇到不使用NTFS分区的类似问题的方法。


想法1-媒体的只读(ISO / CD / DVD)?

看一下mount命令的输出,特别是这样的:

$ mount | grep '/media'

安装在其下的设备/media/celebisait可能是ISO文件或CD / DVD介质。在这种情况下,您将无法获得写访问权限,因为它们通常是只读的。

您可以通过再次转到mount命令的输出来分辨什么是读/写与只读。

/dev/mapper/fedora_greeneggs-root on / type ext4 (rw,relatime,seclabel,data=ordered)

注意括号中的输出。第一个逗号之前的第一个参数rw表示读/写访问。如果它是一个只读设备,它将有一个ro

替代方法

您还可以使用以下df -h .命令找出硬盘上特定位置的来源设备。这将显示当前目录的源设备。

$ df -h .
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/fedora_greeneggs-home  402G  156G  226G  41% /home

在这里,我们可以看到我位于安装的一部分(/home由设备支持)的目录/子目录中/dev/mapper/fedora_greeneggs-home

使用设备的名称,您还可以在输出中查找该名称mount

$ mount | grep '/dev/mapper/fedora_greeneggs-home'
/dev/mapper/fedora_greeneggs-home on /home type ext4 (rw,relatime,seclabel,data=ordered)

想法2-但设备已安装为可读写!

如果您发现设备以读/写方式挂载,则可能需要尝试安装PySDM-一种存储设备管理器,它允许完全自定义硬盘挂载点而无需手动访问/etc/fstab。它还允许创建udev用于动态配置存储设备的规则

读/写步骤

  1. 安装物理存储设备管理器: sudo apt-get install pysdm
  2. 开放式存储设备管理器: sudo pysdm
  3. 选择所需的驱动器
  4. 新闻协助
  5. 取消选中以只读方式打开
  6. 检查文件系统的所有者用户并输入您的用户名: celebisait
  7. 按确定
  8. 按申请
  9. 卸载驱动器
  10. 安装它

来源:如何更改对外部驱动器的权限?

想法#3-NTFS分区

根据您为命令发布的输出:

$ sudo fdisk -l /dev/sdb

...
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048  1536002047   768000000    7  HPFS/NTFS/exFAT

您有NTFS分区,这说明了为什么无法访问chmodNTFS挂载的分区上的文件。如果您正在使用该ntfs-3g模块访问NTFS分区,则应该能够读取/写入磁盘,而不会影响使用常规Unix工具套件的磁盘权限。


2
我认为celebisait是他的用户名。
Avinash Raj 2014年

@AvinashRaj,是的,这是真的。:)
2014年

我不认为Idea#1与最初提供的信息相匹配-尝试在只读文件系统上对文件进行chmod操作会导致错误(EROFS)。我对想法2实际完成的工作感到困惑。看来这是重新读取/写入文件系统的一种不错的方式-但是您说这适用于文件系统被读写的情况。
Nate Eldredge 2014年

@NateEldredge-尚不清楚此Q开头到底发生了什么,因此,我的第一个建议是确定设备的安装方式。我个人使用的第二种方法是修复USB MP3播放器上的权限,该权限有时在Nautilus中显示为只读。文件的显示类似于OP的描述,我使用PySDM解决了该问题。问题不仅仅在于将FS作为RO挂载,还将MP3播放器上的分区置于只读模式,而对RW挂载。
slm

7

正如您所提到的HDD。
我的回答是,不可能将chmod文件放在NTFS或FAT32分区上。
实际上只有unix / linux文件系统(如ext3ext4支持这些属性。

/dev/sdb1            2048  1536002047   768000000    7  HPFS/NTFS/exFAT

它清楚地表明这/dev/sdb1是一个NTFS分区。


1
您怎么知道它是NTFS?可能是这样,但您不能从问题中
得出结论

@Kiwy实际上比其他答案更有可能是这种情况,因为OP提到了HDD。
约瑟夫R.14年

5
/dev/sdb1            2048  1536002047   768000000    7  HPFS/NTFS/exFAT

/dev/sdb1 on /media/celebisait/5AC69788C6976355 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)

fuseblkfdisk 的类型和输出表明您的分区是NTFS分区。这些不像其他* NIX本机文件系统那样支持UNIX / LINUX文件权限方案。

解决方案只是将文件移动到支持这些权限的文件系统,例如root。您想要的方式根本行不通。

cp /media/celebisait/5AC69788C6976355/myFile.tar.gz ~/
chmod 755 ~/myFile.tar.gz
ls -l ~/myFile.tar.gz

1

我最近在NTFS分区上遇到了类似的问题。已经声明NTFS不能更改权限,但是可以在装入文件系统时设置这些权限。给定您希望能够访问文件的组或用户的ID,您可以执行以下操作:

sudo mount -t ntfs -o gid=46,fmask=0003,dmask=0002 /dev/sdb1 /media/DATAPART1

挂载手册页,以便您可以针对您的用例进行定制:

http://linux.die.net/man/8/mount


0

该目录可能是只读的。尝试这个:

ls -ld .
chmod 755 .
chmod 755 myFile.tar.gz

这是不正确的。在普通的Unix文件系统上,将文件chmod到只读目录中可以很好地工作。您不需要目录的写权限即可读取,写入或更改该目录中文件的元数据。您确实需要写许可权才能创建新文件或删除现有文件。
Nate Eldredge 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.