我的硬盘上有一个文件,
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)
$ 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)
$ 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)
$ 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
注意:根据 OP 使用新信息不断更新问题,确定问题在于他正在安装 NTFS 分区。所以下面的#3 是他问题的实际答案。我将其他 2 种方法留在这里供其他人使用,这些方法可能会遇到不使用 NTFS 分区的类似问题。
看看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)
如果您发现您的设备以读/写方式挂载,您可能想尝试安装PySDM - 一种存储设备管理器,它允许完全自定义硬盘挂载点,而无需手动访问/etc/fstab. 它还允许udev为存储设备的动态配置创建规则
读/写步骤
sudo apt-get install pysdmsudo pysdmcelebisait根据您为命令发布的输出:
$ 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 工具套件的权限。
正如您提到的硬盘驱动器。
我的回答是无法chmod在 NTFS 或 FAT32 分区上创建文件。
实际上只有在Unix / Linux文件系统一样ext3,ext4支持这些属性。
/dev/sdb1 2048 1536002047 768000000 7 HPFS/NTFS/exFAT
Run Code Online (Sandbox Code Playgroud)
它清楚地表明这/dev/sdb1是一个 NTFS 分区。
/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)