Chmod kann nicht auf eine Datei angewendet werden

18

Ich habe eine Datei auf meiner Festplatte.

cd /media/celebisait/5AC69788C6976355

Dort heißt meine Akte myFile.tar.gz. Ich mache ein ls -l,

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

Alles scheint in Ordnung zu sein. Wenn ich es jedoch tue,

$ sudo chmod 755 myFile.tar.gz

Ich habe keine Fehler , aber nichts passiert, das heißt, wenn ich ls -lwieder, ich die gleiche Leistung erhalten,

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

Chmod ändert sich nicht .. Warum?

PS: Ich benutze Ubuntu 13.04.

Bearbeiten:

$ 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

Bearbeiten 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)

Edit 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

Bearbeiten 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
Sait
quelle
Was ist das Dateisystem dieses externen Laufwerks? dfBefehlsergebnis wäre schön
Kiwy
Sie brauchen sudo nicht, wenn Sie die Datei und das Verzeichnis besitzen, je nachdem, wie sie gemountet wurden (schreibgeschützt? Rootsquash?) Oder ob es sich um eine CD oder einen schreibgeschützten USB-Stick handelt.
X Tian
@ Kiwy Ich habe die Ausgabe von hinzugefügt df.
Sait
@Braiam Wie geht das mount?
Sait
poste die Ausgabe von blkid.
Avinash Raj

Antworten:

15

TL; DR;

HINWEIS: Aufgrund der kontinuierlichen Aktualisierung der Frage durch das OP mit neuen Informationen wurde festgestellt, dass das Problem darin bestand, dass eine NTFS-Partition gemountet wurde. Also # 3 unten ist die eigentliche Antwort auf sein Problem. Ich lasse die anderen 2 Methoden hier für andere, die möglicherweise auf ähnliche Probleme stoßen, die keine NTFS-Partition verwenden.


Idee Nr. 1 - Nur für Medien (ISO / CD / DVD)?

Sehen Sie sich die Ausgabe des mountBefehls an, und zwar etwa so:

$ mount | grep '/media'

Das Gerät, unter dem gemountet wird, /media/celebisaitist wahrscheinlich entweder eine ISO-Datei oder ein CD / DVD-Medium. In diesem Fall erhalten Sie keinen Schreibzugriff, da diese normalerweise schreibgeschützt sind.

Sie können feststellen, was als read / write oder readonly gemountet ist, indem Sie erneut mountdie Ausgabe des Befehls aufrufen .

Beispiel

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

Beachten Sie die Ausgabe in der Klammer. Das erste Argument vor dem ersten Komma rwbezeichnet den Lese- / Schreibzugriff. Wenn es ein Readonly-Gerät wäre, hätte roes stattdessen ein.

Alternative Methode

Mit dem df -h .Befehl können Sie auch herausfinden, von welchem ​​Gerät ein bestimmter Speicherort auf Ihrer Festplatte stammt . Dies zeigt Ihnen das Quellgerät des aktuellen Verzeichnisses.

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

Hier können wir sehen, dass ich mich in einem Verzeichnis / Unterverzeichnis befinde, das Teil des Mount ist /home, das vom Gerät gesichert wird /dev/mapper/fedora_greeneggs-home.

Mit dem Gerätenamen könnte man das dann auch in der Ausgabe von suchen mount.

Beispiel

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

Idee Nr. 2 - Das Gerät ist jedoch mit Lese- / Schreibzugriff ausgestattet.

Wenn Sie feststellen, dass Ihr Gerät mit Lese- / Schreibzugriff aktiviert ist, sollten Sie PySDM installieren - einen Speichergeräte-Manager, der die vollständige Anpassung von Festplatten-Bereitstellungspunkten ohne manuellen Zugriff auf ermöglicht /etc/fstab. Außerdem können udevRegeln für die dynamische Konfiguration von Speichergeräten erstellt werden

Schritte zum Lesen / Schreiben

  1. Installieren Sie den Manager für physische Speichergeräte: sudo apt-get install pysdm
  2. Speichergerätemanager öffnen: sudo pysdm
  3. Wählen Sie die gewünschten Laufwerke
  4. Drücken Sie Assist
  5. Deaktivieren Sie "Nur Lesen"
  6. Überprüfe den Besitzer des Dateisystems und schreibe deinen Benutzernamen: celebisait
  7. drücke OK
  8. Drücken Sie auf Übernehmen
  9. umount Drive
  10. montiere es

Quelle: Wie kann ich Berechtigungen für externe Laufwerke ändern?

Idee # 3 - NTFS-Partitionen

Basierend auf der Ausgabe, die Sie für den Befehl gepostet haben:

$ sudo fdisk -l /dev/sdb

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

Sie haben NTFS-Partitionen, was erklärt, warum Sie nicht in der Lage waren, chmoddie Dateien auf den von NTFS bereitgestellten Partitionen zu speichern. Wenn Sie das ntfs-3gModul verwenden, um auf die NTFS-Partition zuzugreifen, sollten Sie in der Lage sein, die Festplatte zu lesen / schreiben, ohne ihre Berechtigungen mit der normalen Unix-Tool-Suite zu beeinträchtigen.

slm
quelle
2
Ich denke, celebisaitist sein Benutzername.
Avinash Raj
@AvinashRaj, ja es ist wahr. :)
Sait
Ich denke nicht, dass Idee Nr. 1 mit den ursprünglich angegebenen Informationen übereinstimmt - der Versuch, eine Datei in einem schreibgeschützten Dateisystem zu ändern, sollte zu einem Fehler (EROFS) führen. Und ich bin ein bisschen verwirrt, was Idee Nr. 2 tatsächlich leistet. Es sieht nach einer ausgefallenen Möglichkeit aus, das Dateisystem mit Lese- / Schreibzugriff neu zu laden - aber Sie sagen, dies gilt für den Fall, dass das Dateisystem bereits mit Lese- / Schreibzugriff ausgestattet ist.
Nate Eldredge
@NateEldredge - Es war sehr unklar, was genau am Anfang dieses Q los war, daher war mein erster Vorschlag, festzustellen, wie das Gerät montiert wurde. Meine zweite Methode, die ich persönlich verwendet habe, um Berechtigungen für meinen USB-MP3-Player zu korrigieren, wird in Nautilus gelegentlich als schreibgeschützt angezeigt. Dateien werden ähnlich wie im OP beschrieben angezeigt, und ich verwende PySDM, um das Problem zu beheben. Das Problem ist nicht nur, dass der FS als RO gemountet wird, die Partition auf dem MP3-Player wird in einen schreibgeschützten Modus versetzt, und dennoch wird RW gemountet.
SLM
7

Wie Sie eine Festplatte erwähnen.
Meine Antwort ist, dass es nicht möglich ist, chmodeine Datei auf einer NTFS- oder FAT32-Partition zu erstellen.
In der Tat , wie es nur Unix / Linux - Dateisystem ext3, ext4unterstützt diese Attribute.

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

Es zeigt deutlich, dass /dev/sdb1es sich um eine NTFS-Partition handelte.

Avinash Raj
quelle
1
Woher weißt du, dass es NTFS ist? Es ist wahrscheinlich, aber Sie können nicht davon ausgehen, dass von der Frage
Kiwy
@ Kiwy das ist tatsächlich eher der Fall als die andere Antwort, da das OP eine Festplatte erwähnt.
Joseph R.
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)

Der Typ fuseblkund die Ausgabe von fdisk zeigen an, dass Ihre Partition eine NTFS-Partition ist. Diese unterstützen das UNIX / LINUX-Dateiberechtigungsschema nicht wie andere native * NIX-Dateisysteme.

Die Lösung besteht lediglich darin, die Datei in ein Dateisystem zu verschieben, das diese Berechtigungen unterstützt, wie z. B. Ihr Root. Die Art und Weise, wie Sie es tun möchten, funktioniert einfach nicht.

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

Ich hatte kürzlich ein ähnliches Problem mit einer NTFS-Partition. Es wurde bereits angegeben, dass in NTFS keine Berechtigungen geändert werden können, diese Berechtigungen können jedoch beim Mounten des Dateisystems festgelegt werden. Wenn Sie die IDs der Gruppen oder Benutzer angeben, die auf die Dateien zugreifen sollen, können Sie Folgendes tun:

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

Manpage einbinden, damit Sie sie an Ihren Anwendungsfall anpassen können:

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

Frogee
quelle
0

Das Verzeichnis ist wahrscheinlich schreibgeschützt. Versuche dies:

ls -ld .
chmod 755 .
chmod 755 myFile.tar.gz
Chloe
quelle
Das ist nicht richtig. Auf einem normalen Unix-Dateisystem funktioniert es einwandfrei, eine Datei in einem schreibgeschützten Verzeichnis zu ändern. Sie benötigen keine Schreibrechte für ein Verzeichnis, um Metadaten einer Datei in diesem Verzeichnis zu lesen, zu schreiben oder zu ändern. Sie benötigen Schreibrechte, um neue Dateien zu erstellen oder vorhandene zu löschen.
Nate Eldredge