Impossibile applicare chmod a un file


18

Ho un file sul mio HDD,

cd /media/celebisait/5AC69788C6976355

C'è il mio file chiamato myFile.tar.gz. Faccio un ls -l,

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

Sembra tutto a posto. Tuttavia, quando lo faccio,

$ sudo chmod 755 myFile.tar.gz

Non ho errori ma non succede nulla, ad es. Quando lo faccio di ls -lnuovo ottengo lo stesso output,

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

Chmod non cambia .. Perché?

PS: utilizzo Ubuntu 13.04.

Modificare:

$ 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

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

Modifica 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

Modifica 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

qual è il file system di quell'unità esterna? dfil risultato del comando sarebbe bello
Kiwy

Non hai bisogno di sudo se possiedi il file e la directory, a seconda del modo in cui è stato montato (sola lettura? Rootsquash?) Di forse è un cd o una chiavetta USB protetta da scrittura?
X Tian,

@Kiwy ho aggiunto l'output di df.
Ha detto il

@Braiam Come mount?
Ha detto il

pubblica l'output di blkid.
Avinash Raj,

Risposte:


15

TL; DR;

NOTA: in base al continuo aggiornamento della domanda da parte dell'OP con nuove informazioni, è stato stabilito che il problema era che stava montando una partizione NTFS. Quindi il n. 3 di seguito è la risposta effettiva al suo problema. Lascio qui gli altri 2 metodi per altri che potrebbero riscontrare problemi simili che non utilizzano una partizione NTFS.


Idea n. 1 - supporti di sola lettura (ISO / CD / DVD)?

Dai un'occhiata all'output del mountcomando, in particolare qualcosa del genere:

$ mount | grep '/media'

Il dispositivo montato /media/celebisaitè probabilmente un file ISO o un supporto CD / DVD. Nel qual caso non sarai in grado di ottenere l'accesso in scrittura, poiché questi sono in genere di sola lettura.

Puoi dire cosa è montato read / write vs. readonly passando di nuovo mountall'output del comando.

Esempio

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

Notare l'output tra parentesi. Il primo argomento prima della prima virgola è rwche indica l'accesso in lettura / scrittura. Se fosse un dispositivo di sola lettura avrebbe invece un rolì.

Metodo alternativo

Puoi anche scoprire da quale dispositivo proviene una particolare posizione sul tuo HDD usando il df -h .comando. Questo ti mostrerà il dispositivo sorgente della directory corrente.

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

Qui possiamo vedere che sono in una directory / sottodirectory che fa parte del mount /home, che è supportato dal dispositivo /dev/mapper/fedora_greeneggs-home.

Con il nome del dispositivo è possibile cercarlo anche nell'output di mount.

Esempio

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

Idea n. 2 - Ma il dispositivo è montato in lettura / scrittura!

Se scopri che il tuo dispositivo è montato in lettura / scrittura, potresti provare a installare PySDM - un gestore di dispositivi di archiviazione che consente la completa personalizzazione dei punti di montaggio del disco rigido senza accesso manuale a /etc/fstab. Consente inoltre la creazione di udevregole per la configurazione dinamica dei dispositivi di archiviazione

passaggi per leggere / scrivere

  1. installa Gestione dispositivi di archiviazione fisica: sudo apt-get install pysdm
  2. apri gestore dispositivo di archiviazione: sudo pysdm
  3. scegli le unità richieste
  4. press assist
  5. deseleziona Apri in sola lettura
  6. controlla l'utente proprietario del file system e scrivi il tuo nome utente: celebisait
  7. premere OK
  8. premere applica
  9. umount Drive
  10. montalo

Fonte: come posso modificare le autorizzazioni su unità esterne?

Idea n. 3 - Partizioni NTFS

In base all'output pubblicato per il comando:

$ sudo fdisk -l /dev/sdb

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

Hai partizioni NTFS, il che spiega perché non sei stato in grado di chmodfile sulle partizioni montate NTFS. Se stai usando il ntfs-3gmodulo per accedere alla partizione NTFS dovresti essere in grado di leggere / scrivere il disco, ma non influenzare le sue autorizzazioni usando la normale suite di strumenti Unix.


2
penso celebisaitsia il suo nome utente.
Avinash Raj,

@AvinashRaj, sì, è vero. :)
Ha detto il

Non credo che l'Idea n. 1 corrisponda alle informazioni originariamente fornite: tentare di modificare un file su un filesystem di sola lettura dovrebbe provocare un errore (EROFS). E sono un po 'confuso su ciò che l'Idea n. 2 effettivamente realizza. Sembra un modo stravagante di rimontare il filesystem in lettura / scrittura - ma dici che questo vale nel caso in cui il filesystem sia già in lettura / scrittura.
Nate Eldredge,

@NateEldredge - Non era molto chiaro cosa stesse succedendo esattamente all'inizio di questa Q, quindi il mio primo suggerimento era di stabilire come era montato il dispositivo. Il mio secondo metodo che ho usato personalmente per correggere i permessi sul mio lettore MP3 USB che di tanto in tanto appare in Nautilus come sola lettura. I file vengono visualizzati in modo simile a come viene descritto l'OP e utilizzo PySDM per risolvere il problema. Il problema non è semplicemente il montaggio di FS come RO, la partizione sul lettore MP3 viene messa in sola lettura, eppure è montata RW.
slm

7

Come stai menzionando un HDD.
La mia risposta è che non è possibile chmodun file su una partizione NTFS o FAT32.
In realtà solo il file system unix / linux come ext3, ext4sostenere tali attributi.

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

Mostra chiaramente che /dev/sdb1era una partizione NTFS.


1
come fai a sapere che è NTFS? è probabilmente ma non puoi supporre che dalla domanda
Kiwy

@Kiwy, in realtà è più probabile che sia il caso dell'altra risposta poiché l'OP menziona un HDD.
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)

Il tipo fuseblke l'output di fdisk indicano che la partizione è una partizione NTFS. Questi non supportano lo schema delle autorizzazioni dei file UNIX / LINUX come altri file system nativi * NIX.

La soluzione sta semplicemente spostando il file in un filesystem che supporta queste autorizzazioni come il tuo root. Il modo in cui vuoi farlo semplicemente non funzionerà.

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

1

Di recente ho avuto un problema simile con una partizione NTFS. È già stato affermato che NTFS non può modificare le autorizzazioni, ma queste autorizzazioni possono essere impostate durante il montaggio del file system. Dati gli ID dei gruppi o degli utenti a cui vuoi poter accedere ai file, potresti fare qualcosa del tipo:

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

monta la pagina man in modo che tu possa adattarla al tuo caso d'uso:

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


0

La directory è probabilmente di sola lettura. Prova questo:

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

Questo non è corretto Su un normale filesystem Unix, funziona bene per chmod un file in una directory di sola lettura. Non è necessario disporre delle autorizzazioni di scrittura su una directory per leggere, scrivere o modificare i metadati di un file in quella directory. È necessaria l'autorizzazione di scrittura per creare nuovi file o eliminare quelli esistenti.
Nate Eldredge,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.