ไม่สามารถใช้ chmod กับไฟล์ได้


18

ฉันมีไฟล์บน HDD ของฉัน

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

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

แก้ไข 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 ถ้าคุณเป็นเจ้าของไฟล์และไดเร็กตอรี่ขึ้นอยู่กับว่ามันถูกเมาท์ (อ่านอย่างเดียว?
X Tian

@Kiwy dfฉันจะเพิ่มการส่งออกของ
Sait

@Braiam วิธีการmount?
Sait

blkidโพสต์การส่งออกของ
Avinash Raj

คำตอบ:


15

TL; DR;

หมายเหตุ:จากการปรับปรุงอย่างต่อเนื่องของคำถามโดย OP ด้วยข้อมูลใหม่มันถูกกำหนดว่าปัญหาคือเขากำลังเมาท์พาร์ติชัน NTFS ดังนั้น # 3 ด้านล่างคือคำตอบที่แท้จริงสำหรับปัญหาของเขา ฉันปล่อยให้วิธีอื่น 2 ที่นี่สำหรับคนอื่น ๆ ที่อาจพบปัญหาที่คล้ายกันที่ไม่ได้ใช้พาร์ติชัน NTFS


แนวคิด # 1 - สื่ออ่านอย่างเดียว (ISO / CD / DVD)?

ดูผลลัพธ์ของmountคำสั่งโดยเฉพาะสิ่งนี้:

$ mount | grep '/media'

อุปกรณ์ที่ติดตั้งภายใต้/media/celebisaitอาจเป็นไฟล์ ISO หรือสื่อซีดี / ดีวีดี ในกรณีนี้คุณจะไม่สามารถเข้าถึงการเขียนได้เนื่องจากโดยทั่วไปจะเป็นแบบอ่านอย่างเดียว

คุณสามารถบอกได้ว่าสิ่งใดที่เมาท์อ่าน / เขียนเทียบกับอ่านได้อย่างเดียวโดยหันไปที่mountเอาต์พุตของคำสั่งอีกครั้ง

ตัวอย่าง

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

สังเกตเห็นผลลัพธ์ในวงเล็บ อาร์กิวเมนต์แรกก่อนเครื่องหมายจุลภาคแรกคือrwซึ่งหมายถึงการเข้าถึงแบบอ่าน / เขียน ถ้ามันเป็นอุปกรณ์แบบอ่านอย่างเดียวมันน่าจะมีที่roนั่นแทน

วิธีการทางเลือก

นอกจากนี้คุณยังสามารถค้นหาตำแหน่งของอุปกรณ์ใน HDD ของคุณได้โดยใช้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ซึ่งเป็น Device Device Manager ที่ช่วยให้การปรับแต่งเต็มรูปแบบของจุดเมานท์ของฮาร์ดดิสก์โดยไม่ต้องเข้าถึง/etc/fstabด้วยตนเอง นอกจากนี้ยังอนุญาตให้สร้างudevกฎสำหรับการกำหนดค่าแบบไดนามิกของอุปกรณ์จัดเก็บข้อมูล

ขั้นตอนในการอ่าน / เขียน

  1. ติดตั้งตัวจัดการอุปกรณ์เก็บข้อมูลจริง: sudo apt-get install pysdm
  2. เปิดอุปกรณ์เก็บข้อมูลเปิด: sudo pysdm
  3. เลือกไดรฟ์ที่คุณต้องการ
  4. กดช่วยเหลือ
  5. ยกเลิกการเลือกเปิดเป็นแบบอ่านอย่างเดียว
  6. ตรวจสอบผู้ใช้เจ้าของระบบไฟล์และเขียนชื่อผู้ใช้ของคุณ: celebisait
  7. กดตกลง
  8. กดใช้
  9. umount Drive
  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เป็นชื่อผู้ใช้ของเขา
Avinash Raj

@AvinashRaj ใช่มันเป็นความจริง :)
Sait

ฉันไม่คิดว่า Idea # 1 จะตรงกับข้อมูลที่ได้รับมาตั้งแต่แรก - การพยายาม chmod ไฟล์ในระบบไฟล์แบบอ่านอย่างเดียวควรทำให้เกิดข้อผิดพลาด (EROFS) และฉันก็สับสนเหมือนที่ Idea # 2 ทำสำเร็จ ดูเหมือนจะเป็นวิธีที่แปลกใหม่ในการติดตั้งระบบอ่าน / เขียนใหม่ - แต่คุณบอกว่ากรณีนี้ใช้กับกรณีที่ระบบไฟล์อ่านแล้วเขียน
Nate Eldredge

@NateEldredge - มันชัดเจนมากว่าเกิดอะไรขึ้นในช่วงต้นของคำถามนี้ดังนั้นคำแนะนำแรกของฉันคือการกำหนดวิธีการติดตั้งอุปกรณ์ วิธีที่สองของฉันฉันใช้เป็นการส่วนตัวเพื่อแก้ไขการอนุญาตบนเครื่องเล่น MP3 USB ของฉันที่แสดงเป็นครั้งคราวใน Nautilus เป็นแบบอ่านอย่างเดียว ไฟล์ปรากฏขึ้นคล้ายกับที่ OP อธิบายและฉันใช้ PySDM เพื่อแก้ไขปัญหา ปัญหาไม่ได้เป็นเพียงแค่การติดตั้ง FS ในฐานะ RO พาร์ติชันบนเครื่องเล่น MP3 นั้นจะถูกใส่เข้าสู่โหมดอ่านอย่างเดียว
slm

7

ในขณะที่คุณกำลังพูดถึง HDD
คำตอบของฉันคือchmodไฟล์ในพาร์ติชัน NTFS หรือ FAT32 ไม่สามารถทำได้
อันที่จริงมีเพียงระบบไฟล์ unix / linux ext3เท่านั้นที่ext4รองรับคุณสมบัติเหล่านั้น

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

มันแสดงให้เห็นอย่างชัดเจนว่า/dev/sdb1เป็นพาร์ติชัน NTFS


1
คุณรู้ได้อย่างไรว่าเป็น NTFS อาจเป็นไปได้ แต่คุณไม่สามารถคาดเดาได้จากคำถาม
Kiwy

@ กีวีนี่น่าจะเป็นกรณีที่มากกว่าคำตอบอื่น ๆ เนื่องจาก OP กล่าวถึง HDD
โจเซฟอาร์

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

mount man page เพื่อให้คุณสามารถปรับแต่งตามความต้องการของคุณ:

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


0

ไดเรกทอรีอาจเป็นแบบอ่านอย่างเดียว ลองสิ่งนี้:

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

สิ่งนี้ไม่ถูกต้อง บนระบบไฟล์ Unix ธรรมดามันทำงานได้ดีในการ chmod ไฟล์ในไดเรกทอรีอ่านอย่างเดียว คุณไม่จำเป็นต้องมีสิทธิ์ในการเขียนในไดเรกทอรีเพื่ออ่านเขียนหรือเปลี่ยนข้อมูลเมตาของไฟล์ในไดเรกทอรีนั้น คุณต้องมีสิทธิ์เขียนเพื่อสร้างไฟล์ใหม่หรือลบไฟล์ที่มีอยู่
Nate Eldredge
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.