Nie można zastosować chmod do pliku

18

Mam plik na dysku twardym,

cd /media/celebisait/5AC69788C6976355

Jest mój plik o nazwie myFile.tar.gz. Robię ls -l,

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

Wszystko wydaje się w porządku. Jednak kiedy to robię,

$ sudo chmod 755 myFile.tar.gz

Nie mam żadnych błędów, ale nic się nie dzieje, tzn. Gdy ls -lznowu to robię , otrzymuję ten sam wynik,

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

Chmod się nie zmienia .. Dlaczego?

PS: Używam Ubuntu 13.04.

Edytować:

$ 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

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

Edycja 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

Edycja 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
źródło
jaki jest system plików tego dysku zewnętrznego? dfwynik polecenia byłby miły
Kiwy
Nie potrzebujesz sudo, jeśli posiadasz plik i katalog, w zależności od sposobu, w jaki został zamontowany (tylko do odczytu? Rootquash?), Być może jest to dysk USB lub pamięć USB chroniona przed zapisem?
X Tian
@ Kiwi dodałem wyjście df.
Sait
@Braiam Jak to zrobić mount?
Sait
opublikować wynik blkid.
Avinash Raj

Odpowiedzi:

15

TL; DR;

UWAGA: Na podstawie ciągłej aktualizacji pytania przez OP o nowe informacje ustalono, że problem polegał na tym, że montował partycję NTFS. Więc # 3 poniżej jest faktyczną odpowiedzią na jego problem. Pozostałe 2 metody pozostawiam tutaj innym, które mogą napotkać podobne problemy, które nie używają partycji NTFS.


Pomysł nr 1 - tylko do odczytu mediów (ISO / CD / DVD)?

Spójrz na wynik mountpolecenia, w szczególności coś takiego:

$ mount | grep '/media'

Podmontowane urządzenie /media/celebisaitto prawdopodobnie plik ISO lub nośnik CD / DVD. W takim przypadku nie będzie można uzyskać dostępu do zapisu, ponieważ są one zwykle tylko do odczytu.

Możesz powiedzieć, co jest zamontowane w trybie odczytu / zapisu, a tylko do odczytu, ponownie zwracając się do danych mountwyjściowych polecenia.

Przykład

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

Zwróć uwagę na wynik w nawiasie. Pierwszym argumentem przed pierwszym przecinkiem jest rwdostęp do odczytu / zapisu. Gdyby było to urządzenie tylko do odczytu, miałoby rotam miejsce.

Alternatywna metoda

Możesz także dowiedzieć się, z którego urządzenia pochodzi określona lokalizacja na dysku twardym, korzystając z df -h .polecenia. Spowoduje to wyświetlenie urządzenia źródłowego bieżącego katalogu.

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

Tutaj widzimy, że jestem w katalogu / podkatalogu, który jest częścią montowania /home, który jest wspierany przez urządzenie /dev/mapper/fedora_greeneggs-home.

Z nazwą urządzenia możesz tego również szukać w danych wyjściowych mount.

Przykład

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

Pomysł nr 2 - Ale urządzenie jest zamontowane w trybie odczytu / zapisu!

Jeśli okaże się, że urządzenie jest zamontowane w trybie odczytu / zapisu, możesz spróbować zainstalować PySDM - Menedżer urządzeń pamięci masowej, który umożliwia pełne dostosowanie punktów montowania dysku twardego bez ręcznego dostępu /etc/fstab. Umożliwia także tworzenie udevreguł dynamicznej konfiguracji urządzeń pamięci masowej

kroki do odczytu / zapisu

  1. zainstaluj menedżera fizycznych urządzeń pamięci masowej: sudo apt-get install pysdm
  2. menedżer otwartych urządzeń pamięci masowej: sudo pysdm
  3. wybierz wymagane dyski
  4. asystent prasowy
  5. odznacz otwarte jako tylko do odczytu
  6. sprawdź właściciela systemu plików i wpisz swoją nazwę użytkownika: celebisait
  7. wciśnij OK
  8. naciśnij Zastosuj
  9. Umount Drive
  10. zamontuj to

Źródło: Jak mogę zmienić uprawnienia na dyskach zewnętrznych?

Pomysł nr 3 - partycje NTFS

Na podstawie danych wyjściowych opublikowanych dla polecenia:

$ sudo fdisk -l /dev/sdb

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

Masz partycje NTFS, co tłumaczy, dlaczego nie mogłeś uzyskać chmodplików na zamontowanych partycjach NTFS. Jeśli używasz ntfs-3gmodułu do uzyskania dostępu do partycji NTFS, powinieneś być w stanie odczytać / zapisać dysk, po prostu nie wpływaj na jego uprawnienia za pomocą zwykłego pakietu narzędzi uniksowych.

slm
źródło
2
myślę, że celebisaitto jego nazwa użytkownika.
Avinash Raj
@AvinashRaj, tak, to prawda. :)
Sait
Nie sądzę, aby Pomysł nr 1 pasował do pierwotnie podanych informacji - próba chmod pliku w systemie plików tylko do odczytu powinna spowodować błąd (EROFS). Jestem trochę zdezorientowany co do tego, co faktycznie realizuje Idea nr 2. Wygląda to na fantazyjny sposób ponownego zamontowania systemu plików do odczytu / zapisu - ale mówisz, że dotyczy to przypadku, gdy system plików jest już do odczytu i zapisu.
Nate Eldredge
@NateEldredge - To było bardzo niejasne, co dokładnie działo się na początku tego Q, dlatego moją pierwszą sugestią było ustalenie sposobu montażu urządzenia. Moja druga metoda, której użyłem osobiście, aby naprawić uprawnienia w moim odtwarzaczu MP3 USB, który czasami pojawia się w Nautilusie jako tylko do odczytu. Pliki wyglądają podobnie do opisu OP, a do rozwiązania problemu używam PySDM. Problemem nie jest tylko FS montowany jako RO, partycja odtwarzacza MP3 przechodzi w tryb tylko do odczytu, a mimo to jest montowana RW.
slm
7

Jak wspominasz o dysku twardym.
Moja odpowiedź jest taka, że chmodplik na partycji NTFS lub FAT32 nie jest możliwy .
W rzeczywistości tylko system plików Unix / Linux jak ext3, ext4wspierać te atrybuty.

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

Wyraźnie pokazuje, że /dev/sdb1była to partycja NTFS.

Avinash Raj
źródło
1
skąd wiesz, że to NTFS? jest to prawdopodobnie, ale nie można zakładać, że z pytania
Kiwy
@Kiwy jest to bardziej prawdopodobne niż inna odpowiedź, ponieważ PO wspomina o 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)

Typ fuseblki dane wyjściowe programu fdisk wskazują, że twoja partycja jest partycją NTFS. Nie obsługują one systemu uprawnień do plików UNIX / LINUX, podobnie jak inne rodzime systemy plików * NIX.

Rozwiązaniem jest po prostu przeniesienie pliku do systemu plików, który obsługuje te uprawnienia, takie jak root. Sposób, w jaki chcesz to zrobić, po prostu nie zadziała.

cp /media/celebisait/5AC69788C6976355/myFile.tar.gz ~/
chmod 755 ~/myFile.tar.gz
ls -l ~/myFile.tar.gz
Braiam
źródło
1

Ostatnio miałem podobny problem z partycją NTFS. Stwierdzono już, że nie można zmienić uprawnień NTFS, ale uprawnienia te można ustawić podczas montowania systemu plików. Biorąc pod uwagę identyfikatory grup lub użytkowników, którzy mają mieć dostęp do plików, możesz zrobić coś takiego:

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

zamontuj stronę podręcznika, abyś mógł dostosować ją do swojego przypadku użycia:

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

Żaba
źródło
0

Katalog jest prawdopodobnie tylko do odczytu. Spróbuj tego:

ls -ld .
chmod 755 .
chmod 755 myFile.tar.gz
Chloe
źródło
To nie jest poprawne. W zwykłym systemie plików Unix dobrze działa chmod pliku w katalogu tylko do odczytu. Nie potrzebujesz uprawnień do zapisu w katalogu, aby odczytać, zapisać lub zmienić metadane pliku w tym katalogu. Potrzebujesz uprawnień do zapisu, aby tworzyć nowe pliki lub usuwać istniejące.
Nate Eldredge