Không thể áp dụng chmod cho một tập tin


18

Tôi có một tập tin trên ổ cứng,

cd /media/celebisait/5AC69788C6976355

Có tập tin của tôi được gọi myFile.tar.gz. Tôi làm một ls -l,

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

Mọi thứ có vẻ ổn. Tuy nhiên, khi tôi làm,

$ sudo chmod 755 myFile.tar.gz

Tôi không có bất kỳ lỗi nào nhưng không có gì xảy ra, tức là khi tôi làm ls -llại, tôi nhận được cùng một đầu ra,

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

Chmod không thay đổi .. Tại sao?

PS: Tôi sử dụng Ubuntu 13.04.

Chỉnh sửa:

$ 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

Chỉnh sửa 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)

Chỉnh sửa 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

Chỉnh sửa 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

hệ thống tập tin của ổ đĩa ngoài đó là gì? dfkết quả lệnh sẽ tốt đẹp
Kiwy

Bạn không cần sudo nếu bạn sở hữu tập tin và thư mục, tùy thuộc vào cách nó được gắn (chỉ đọc? Rootquash?) Có thể đó là một thanh usb được bảo vệ bằng đĩa cd hoặc ghi?
X Tian

@Kiwy Tôi đã thêm đầu ra của df.
Sait

@Braiam Làm thế nào mount?
Sait

gửi đầu ra của blkid.
Avinash Raj

Câu trả lời:


15

TL; DR;

LƯU Ý: Dựa trên việc OP cập nhật liên tục câu hỏi với thông tin mới, người ta xác định rằng vấn đề là anh ta đang gắn phân vùng NTFS. Vì vậy, # 3 dưới đây là câu trả lời thực tế cho vấn đề của mình. Tôi để lại 2 phương thức khác ở đây cho các phương pháp khác có thể gặp phải các vấn đề tương tự không sử dụng phân vùng NTFS.


Ý tưởng số 1 - phương tiện chỉ đọc (ISO / CD / DVD)?

Hãy xem đầu ra của mountlệnh, cụ thể là như thế này:

$ mount | grep '/media'

Thiết bị được gắn bên dưới /media/celebisaitcó thể là tệp ISO hoặc phương tiện CD / DVD. Trong trường hợp đó, bạn sẽ không thể có quyền truy cập ghi, vì những thứ này thường chỉ được đọc.

Bạn có thể cho biết những gì được gắn đọc / ghi so với chỉ đọc bằng cách chuyển sang mountđầu ra của lệnh.

Thí dụ

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

Lưu ý đầu ra trong ngoặc đơn. Đối số đầu tiên trước dấu phẩy đầu tiên là rwbiểu thị quyền truy cập đọc / ghi. Nếu nó là một thiết bị chỉ đọc thì nó sẽ có roở đó.

Phương pháp thay thế

Bạn cũng có thể tìm ra thiết bị nào một vị trí cụ thể trên ổ cứng của bạn có nguồn gốc từ bằng cách sử dụng df -h .lệnh. Điều này sẽ cho bạn thấy thiết bị nguồn của thư mục hiện tại.

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

Ở đây chúng ta có thể thấy rằng tôi đang ở trong một thư mục / thư mục con là một phần của giá đỡ /home, được hỗ trợ bởi thiết bị /dev/mapper/fedora_greeneggs-home.

Với tên của thiết bị, sau đó bạn cũng có thể tìm kiếm nó trong đầu ra của mount.

Thí dụ

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

Ý tưởng số 2 - Nhưng thiết bị được gắn đọc / ghi!

Nếu bạn thấy rằng thiết bị của mình được gắn đọc / ghi, bạn có thể muốn thử cài đặt PySDM - Trình quản lý thiết bị lưu trữ cho phép tùy chỉnh đầy đủ các điểm gắn đĩa cứng mà không cần truy cập thủ công /etc/fstab. Nó cũng cho phép tạo ra các udevquy tắc cho cấu hình động của các thiết bị lưu trữ

các bước để đọc / viết

  1. cài đặt trình quản lý thiết bị lưu trữ vật lý: sudo apt-get install pysdm
  2. mở máng thiết bị lưu trữ: sudo pysdm
  3. chọn ổ đĩa yêu cầu của bạn
  4. hỗ trợ báo chí
  5. bỏ chọn mở chỉ đọc
  6. kiểm tra chủ sở hữu của hệ thống tập tin và viết tên người dùng của bạn: celebisait
  7. nhấn OK
  8. nhấn áp dụng
  9. ổ đĩa
  10. gắn kết nó

Nguồn: Làm thế nào tôi có thể thay đổi quyền trên các ổ đĩa ngoài?

Ý tưởng số 3 - phân vùng NTFS

Dựa trên đầu ra bạn đã đăng cho lệnh:

$ sudo fdisk -l /dev/sdb

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

Bạn có các phân vùng NTFS, điều này giải thích lý do tại sao bạn không thể truy cập chmodcác tệp trên (các) phân vùng được gắn kết NTFS. Nếu bạn đang sử dụng ntfs-3gmô-đun để truy cập phân vùng NTFS, bạn sẽ có thể đọc / ghi đĩa, chỉ cần không ảnh hưởng đến quyền của nó bằng bộ công cụ Unix thông thường.


2
Tôi nghĩ celebisaitlà tên người dùng của anh ấy.
Avinash Raj

@AvinashRaj, đúng vậy. :)
Sait

Tôi không nghĩ Ý tưởng số 1 khớp với thông tin ban đầu - cố gắng chỉnh sửa một tệp trên hệ thống tệp chỉ đọc sẽ dẫn đến lỗi (EROFS). Và tôi hơi bối rối không biết ý tưởng # 2 thực sự đạt được điều gì. Nó trông giống như một cách thú vị để kể lại việc đọc / ghi hệ thống tập tin - nhưng bạn nói điều này áp dụng cho trường hợp hệ thống tập tin đã đọc-ghi.
Nate Eldredge

@NateEldredge - Không rõ chính xác những gì đang diễn ra vào đầu Q này, do đó đề xuất đầu tiên của tôi là thiết lập cách thức thiết bị được gắn. Phương pháp thứ 2 của tôi Tôi đã sử dụng cá nhân để sửa các quyền trên trình phát USB MP3 của mình đôi khi xuất hiện trong Nautilus dưới dạng chỉ đọc. Các tệp hiển thị tương tự như cách OP mô tả và tôi sử dụng PySDM để giải quyết vấn đề. Vấn đề không chỉ đơn thuần là FS được gắn dưới dạng RO, phân vùng trên máy nghe nhạc MP3 được đưa vào chế độ chỉ đọc và được gắn RW.
slm

7

Như bạn đang đề cập đến một ổ cứng.
Câu trả lời của tôi là không thể có chmodtệp trên phân vùng NTFS hoặc FAT32.
Trong thực tế chỉ có hệ thống tập tin unix / linux như ext3, ext4hỗ trợ các thuộc tính đó.

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

Nó rõ ràng cho thấy đó /dev/sdb1là một phân vùng NTFS.


1
Làm thế nào để bạn biết đó là NTFS? có lẽ nhưng bạn không cho rằng từ câu hỏi
Kiwy

@Kiwy điều này thực sự có nhiều khả năng là trường hợp hơn câu trả lời khác vì OP đề cập đến một ổ cứng.
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)

Loại fuseblkvà đầu ra của fdisk chỉ ra rằng phân vùng của bạn là phân vùng NTFS. Chúng không hỗ trợ lược đồ cấp phép tệp UNIX / LINUX như các hệ thống tệp gốc * NIX khác.

Giải pháp chỉ là di chuyển tệp đến một hệ thống tệp hỗ trợ các quyền này như root của bạn. Cách bạn muốn làm nó sẽ không hoạt động.

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

1

Tôi đã có một vấn đề tương tự với một phân vùng NTFS gần đây. Nó đã được tuyên bố rằng NTFS không thể thay đổi quyền, nhưng những quyền này có thể được thiết lập khi gắn hệ thống tệp. Đưa ra id của các nhóm hoặc người dùng mà bạn muốn có thể truy cập các tệp, bạn có thể làm một cái gì đó như:

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

gắn kết trang man để bạn có thể điều chỉnh nó phù hợp với trường hợp sử dụng của bạn:

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


0

Thư mục có thể chỉ đọc. Thử đi:

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

Điều này LAF không đúng. Trên một hệ thống tệp Unix thông thường, nó hoạt động tốt để xử lý một tệp trong thư mục chỉ đọc. Bạn không cần quyền ghi trên một thư mục để đọc, ghi hoặc thay đổi siêu dữ liệu của một tệp trong thư mục đó. Bạn cần có quyền ghi để tạo các tệp mới hoặc xóa các tệp hiện có.
Nate Eldredge
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.