无法将 chmod 应用于文件

Sai*_*ait 20 ubuntu chmod

我的硬盘上有一个文件,

cd /media/celebisait/5AC69788C6976355
Run Code Online (Sandbox Code Playgroud)

我的文件叫做myFile.tar.gz. 我做一个ls -l

-rw------- 2 celebisait celebisait  1387745311 Jun  6  2013 myFile.tar.gz
Run Code Online (Sandbox Code Playgroud)

一切似乎都很好。然而,当我这样做时,

$ sudo chmod 755 myFile.tar.gz
Run Code Online (Sandbox Code Playgroud)

我没有任何错误但没有任何反应,即,当我ls -l再次这样做时,我得到相同的输出,

-rw------- 2 celebisait celebisait  1387745311 Jun  6  2013 myFile.tar.gz
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

编辑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)
Run Code Online (Sandbox Code Playgroud)

编辑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
Run Code Online (Sandbox Code Playgroud)

编辑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
Run Code Online (Sandbox Code Playgroud)

slm*_*slm 16

TL; 博士;

注意:根据 OP 使用新信息不断更新问题,确定问题在于他正在安装 NTFS 分区。所以下面的#3 是他问题的实际答案。我将其他 2 种方法留在这里供其他人使用,这些方法可能会遇到不使用 NTFS 分区的类似问题。


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

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

$ mount | grep '/media'
Run Code Online (Sandbox Code Playgroud)

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

您可以通过再次转到mount命令的输出来判断挂载的内容是读/写还是只读。

例子

/dev/mapper/fedora_greeneggs-root on / type ext4 (rw,relatime,seclabel,data=ordered)
Run Code Online (Sandbox Code Playgroud)

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

替代方法

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

$ df -h .
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/fedora_greeneggs-home  402G  156G  226G  41% /home
Run Code Online (Sandbox Code Playgroud)

在这里我们可以看到我在一个目录/子目录中/home,它是mount 的一部分,它由 device 支持/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)
Run Code Online (Sandbox Code Playgroud)

想法#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
Run Code Online (Sandbox Code Playgroud)

您有 NTFS 分区,这就解释了为什么您无法访问chmodNTFS 挂载分区上的文件。如果您使用该ntfs-3g模块访问 NTFS 分区,您应该能够读/写磁盘,只是不影响使用普通 Unix 工具套件的权限。

  • 我认为`celebisait`是他的用户名。 (2认同)

Avi*_*Raj 7

正如您提到的硬盘驱动器。
我的回答是无法chmod在 NTFS 或 FAT32 分区上创建文件。
实际上只有在Unix / Linux文件系统一样ext3ext4支持这些属性。

/dev/sdb1            2048  1536002047   768000000    7  HPFS/NTFS/exFAT
Run Code Online (Sandbox Code Playgroud)

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


Bra*_*iam 5

/dev/sdb1            2048  1536002047   768000000    7  HPFS/NTFS/exFAT
Run Code Online (Sandbox Code Playgroud)
/dev/sdb1 on /media/celebisait/5AC69788C6976355 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
Run Code Online (Sandbox Code Playgroud)

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

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

cp /media/celebisait/5AC69788C6976355/myFile.tar.gz ~/
chmod 755 ~/myFile.tar.gz
ls -l ~/myFile.tar.gz
Run Code Online (Sandbox Code Playgroud)