Не могу применить 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

Чмод не меняется .. почему?

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

Вам не нужен sudo, если вы владеете файлом и каталогом, в зависимости от способа его монтирования (только для чтения? Rootsquash?) Или, может быть, это USB-накопитель с защитой от записи или cd?
X Тянь

@Kiwy Я добавил вывод df.
Саит

@Braiam Как mount?
Саит

опубликовать вывод blkid.
Авинаш Радж

Ответы:


15

TL; DR;

ПРИМЕЧАНИЕ. На основании постоянного обновления этого вопроса ОП новой информацией было установлено, что проблема заключалась в том, что он монтировал раздел 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, что объясняет, почему вы не смогли найти chmodфайлы на смонтированных разделах NTFS. Если вы используете ntfs-3gмодуль для доступа к разделу NTFS, вы должны иметь возможность читать / записывать диск, просто не влияя на его разрешения, используя обычный набор инструментов Unix.


2
Я думаю, celebisaitэто его имя пользователя.
Авинаш Радж

@AvinashRaj, да, это правда. :)
Саит

Я не думаю, что идея № 1 соответствует изначально предоставленной информации - попытка chmod файла в файловой системе только для чтения должна привести к ошибке (EROFS). И я отчасти смущен тем, что на самом деле достигает идея № 2. Это выглядит как причудливый способ перемонтирования файловой системы для чтения / записи - но вы говорите, что это относится к случаю, когда файловая система уже находится в режиме чтения-записи.
Нейт Элдредж

@NateEldredge - Было очень непонятно, что именно происходило в начале этого Q, поэтому мое первое предложение было установить, как было смонтировано устройство. Мой второй метод, который я использовал лично, чтобы исправить разрешения на моем USB MP3-плеере, который иногда отображается в Nautilus как только для чтения. Файлы отображаются аналогично описанию OP, и я использую PySDM для решения проблемы. Проблема заключается не только в том, что FS монтируется как RO, раздел MP3-плеера переводится в режим «только чтение», и, тем не менее, он монтируется как RW.
SLM

7

Как вы упоминаете HDD.
Мой ответ таков: невозможно chmodсоздать файл в разделе NTFS или FAT32.
Фактически ext3, ext4такие атрибуты поддерживаются только файловой системой Unix / Linux .

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

Это ясно показывает, что это /dev/sdb1был раздел NTFS.


1
откуда ты знаешь, что это NTFS? это, вероятно, но вы не можете предположить, что из вопроса
Kiwy

@ Киви, на самом деле это более вероятно, чем другой ответ, так как ОП упоминает жесткий диск.
Джозеф Р.

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)

Тип fuseblkи вывод fdisk указывает, что ваш раздел является разделом NTFS. Они не поддерживают схему разрешений файлов UNIX / LINUX, как и другие собственные файловые системы * NIX.

Решение состоит в том, чтобы просто переместить файл в файловую систему, которая поддерживает эти разрешения, например, в корневой каталог. То, как вы хотите это сделать , просто не будет работать.

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

1

У меня недавно была похожая проблема с разделом NTFS. Уже было сказано, что NTFS не может изменять разрешения, но эти разрешения можно установить при монтировании файловой системы. Учитывая идентификаторы групп или пользователей, которым вы хотите иметь доступ к файлам, вы можете сделать что-то вроде:

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

смонтировать man-страницу, чтобы вы могли адаптировать ее к своему варианту использования:

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


0

Каталог, вероятно, только для чтения. Попробуй это:

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

Это не правильно. На обычной файловой системе Unix он прекрасно работает для chmod файла в каталоге только для чтения. Вам не нужны разрешения на запись в каталог для чтения, записи или изменения метаданных файла в этом каталоге. Вам нужно разрешение на запись, чтобы создавать новые файлы или удалять существующие.
Нейт Элдредж,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.