Làm cách nào để gắn chính xác phân vùng NTFS trong / etc / fstab?


72

Sau một tập khó chịu (lần thứ hai của tôi, bạn nghĩ rằng mình đã học được) do tải xuống podcast tự động không được giám sát, lấp đầy toàn bộ phân vùng của tôi, cuối cùng tôi đã chuyển ~/Musicsang phân vùng riêng. Phân vùng tôi đang sử dụng đã được định dạng NTFS (đây là phần thiên tài: khi tôi có máy tính này ba năm trước, tôi thực sự đã thiết lập nó với phân vùng nhạc 20G chính xác bởi vì tôi đã gặp vấn đề này trước đây, nhưng tôi chưa bao giờ thực sự gặp vấn đề này tự tổ chức để lưu trữ nhạc trên đó. Vì vậy, đó là nền tảng của tôi. Đây là những gì tôi cần bây giờ:

Tôi có hai phân vùng mà tôi muốn bắt đầu cài đặt khi khởi động:

/dev/sda3   /mnt/devel  ext4    defaults    0   2
/dev/sda2   /mnt/excess ntfs    defaults    0   2

Phần mở rộng ext4 gắn kết tốt (thuộc sở hữu của tôi, chỉ có thể ghi bởi tôi), nhưng các phần gắn kết ntfs thuộc sở hữu gốc với quyền đọc và viết cho tất cả. Tôi không chắc làm thế nào để khắc phục điều này. Có điều gì đó kỳ quặc về ntfs hoặc tôi đã làm điều gì đó ở nơi khác gây ra vấn đề này?

drwxr-xr-x  7 amanda amanda 4096 2012-03-14 19:07 devel
drwxrwxrwx  1 root   root   4096 2012-03-14 22:38 excess

Các tùy chọn "noatime" hoặc "relatime" có sẵn và được đề xuất cho việc gắn ntfs vĩnh viễn (xem man mount.ntfs). Tôi đã có một số vấn đề hdd bận rộn với ext3 / 4 và ntfs nữa!

Câu trả lời:


89

Permissions for ntfs và hệ thống tập tin vfat phải được thiết lập với dmask, fmaskumaskcác tùy chọn. dmaskkiểm soát quyền đối với thư mục, fmaskkiểm soát quyền đối với tệp và umaskkiểm soát cả hai. Vì các tùy chọn này đặt mặt nạ , chúng phải là phần bổ sung của các quyền bạn muốn. Ví dụ: rwx cho chủ sở hữu và rx cho người khác là 022 thay vì 755.

Để đặt chủ sở hữu, sử dụng uidgidcác tùy chọn cho người dùng và nhóm, tương ứng. Bạn có thể tìm thấy UID của bạn bằng lệnh id -u. Để tìm GID của bạn, sử dụng id -g. Các giá trị này thường là 1000.

Một tập hợp phổ biến các tùy chọn gắn kết cho ntfs là uid=1000,gid=1000,dmask=027,fmask=137. Điều này đặt bạn là chủ sở hữu của ổ đĩa và đặt quyền cho drwxr-x---.

Đây là hai dòng từ / etc / fstab của tôi hoạt động

UUID=EEA2B69CA2B668AB        /WIN_C     ntfs-3g   defaults,nls=utf8,umask=000,dmask=027,fmask=137,uid=1000,gid=1000,windows_names 0 0 
UUID=65AEC0E830EA0497        /WIN_D     ntfs-3g   rw 0 0

Nếu bạn không nhận được lỗi hiển thị sau khi khởi động lại và các phân vùng ở chế độ chỉ đọc hoặc bạn gặp lỗi tương tự như:

Error mounting /dev/sda6 at /media/WindowsDrive: 
Command-line `mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,dmask=0077,fmask=0177" "/dev/sda6" "/media/rolindroy/Media Center"' exited with non-zero exit status 14: The disk contains an unclean file system (0, 0). 
Metadata kept in Windows cache, refused to mount. 
Failed to mount '/dev/sda6': Operation not permitted The NTFS partition is in an unsafe state. 
Please resume and shutdown Windows fully (no hibernation or fast restarting), or mount the volume read-only with the 'ro' mount option

Điều này là do Windows 8 và 10 cung cấp tùy chọn "Khởi động nhanh" phụ thuộc vào tắt máy "không hoàn thành". Bạn có thể tắt khởi động nhanh bằng cách thực hiện theo các bước sau trong "Tùy chọn nguồn".



Đó thực sự là nguồn gốc của phần lớn những điều trên. Tôi cũng bao gồm một số giải thích chi tiết hơn về cách các tùy chọn * mặt nạ hoạt động.
bessman

3
Bạn có thể cung cấp một ví dụ đầy đủ hơn cho thấy các tùy chọn được sử dụng trong một dòng từ/etc/fstab
puk

3
@puk, tôi có UUID=3030BD846F74E514 /media/iam/ntfspartition ntfs-3g uid=1000,gid=1000,dmask=022,fmask=133 0 0, như tôi đã bao gồm tại Askubfox.com/a/507326/221448 (nơi tôi cũng đề cập đến bind).
Brady Trainor

1
@ScottFuid=0,gid=0
wjandrea

34

Nếu bạn gắn kết phân vùng ntfs với tùy chọn quyền, thì chmod / chown sẽ hoạt động

/dev/sda2   /mnt/excess ntfs-3g    permissions,locale=en_US.utf8    0   2

Bạn có thể

sudo chown your_user:your_user /mnt/excess

Dễ dàng hơn sau đó uid, dmask, fmask.


Bất kỳ nhược điểm / tác dụng phụ cho sudo chownlệnh đó ? Chính xác thì nó làm gì?
ReneSac

5
Lệnh chown thay đổi chủ sở hữu của điểm gắn kết (/ mnt / thừa) thành người dùng mong muốn. Bước này sẽ phải được lặp lại mỗi lần phân vùng được gắn kết, theo kinh nghiệm của tôi (ít nhất là sau mỗi lần khởi động lại) ... vì vậy, hãy làm điều đúng đắn, đặt uid / gid / umask ... Tôi luôn nghĩ fmask và dmask là tùy chọn - như khi bạn muốn các quyền khác nhau cho các tệp và thư mục.
thecarpy

7

Tôi gặp một số rắc rối với điều này bởi vì khi tôi khởi động lại, tên đĩa thay đổi ... ( sda0 thành sdb2 )

Tôi đã khắc phục sự cố bằng cách gắn chúng bằng UUID trong fstab, bạn có thể xem UUID cho ổ cứng của mình bằng cách nhập: sudo blkid

Tạo một bản sao lưu của tập tin fstab của bạn:

sudo cp /etc/fstab /etc/fstab.orig

Hãy chắc chắn rằng bạn gấp ba lần kiểm tra >>, nếu bạn đặt một> bạn ghi đè lên fstab của bạn!

sudo blkid >> /etc/fstab

Nếu bạn vẫn làm hỏng, bạn có thể thay thế fstab của mình bằng bản gốc:

sudo cp /etc/fstab.orig /etc/fstab

Tiếp theo tạo một thư mục:

sudo mkdir /media/mydrivename

Cấu hình fstab:

sudo vim /etc/fstab

Đừng quên nhận xét đầu ra từ blkid bằng '#' ở đầu dòng!

Thêm phần này vào tệp fstab, bạn có thể tìm thấy UUID trong khối ở phía dưới mà bạn đã chèn bằng lệnh ở trên. media / mydrivename là nơi phân vùng nên được gắn kết.

UUID=xxxxxxxxxxxxxxxxx   /media/mydrivename ntfs    permissions,locale=en_US.utf8    0   2

Đây là tập tin fstab của tôi:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda2 during installation
UUID=5d4940cf-5cf5-443a-be11-1f7e551962d1 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda1 during installation
UUID=84b7e5e9-08c3-4641-b28b-99e0255e604d none            swap    sw              0       0

# 500 GB Webserver harddisk from lr-serv-01
UUID=BA9A48D39A488E37 /media/hdd1 ntfs permissions,locale=en_US.utf8 0 2

# 2 TB Movie share harddisk from lr-serv-01
UUID=7EB09666B09624A5 /media/hdd2 ntfs permissions,locale-en_US.utf8 0 2

#/dev/sda1: UUID="10EC004DEC003010" TYPE="ntfs" 
#/dev/sda2: LABEL="system" UUID="88A4FE47A4FE3772" TYPE="ntfs" 
#/dev/sda3: LABEL="storage_01" UUID="BA9A48D39A488E37" TYPE="ntfs" 
#/dev/sdb1: LABEL="storage_02" UUID="7EB09666B09624A5" TYPE="ntfs" 
#/dev/sdc1: UUID="84b7e5e9-08c3-4641-b28b-99e0255e604d" TYPE="swap" 
#/dev/sdc2: UUID="5d4940cf-5cf5-443a-be11-1f7e551962d1" TYPE="ext4" 
#/dev/sdd1: LABEL="storage_spotnet" UUID="EC6E8F416E8F0394" TYPE="ntfs" 
#/dev/sdd2: LABEL="storage_backup_pcs" UUID="6C2699D026999BA0" TYPE="ntfs" 
#/dev/sdd5: LABEL="storage_series" UUID="7670ABF770ABBC6D" TYPE="ntfs" 
#/dev/sdd6: LABEL="storage_winmx" UUID="564AB81B4AB7F5B9" TYPE="ntfs" 

Khởi động lại hệ thống bằng cách gõ:

sudo reboot

Để kiểm tra xem phân vùng được gắn kết, bạn có thể gõ df -k.

Trao quyền sở hữu cho chính mình:

sudo chown -R USERNAME:USERNAME /media/mydrivename

Đã làm điều này trên Ubuntu Server 14.04.01 !

Hy vọng câu trả lời này sẽ giúp được ai đó ;-)


2
Mặc dù điều này nghe có vẻ như là lời khuyên chắc chắn, tôi sẽ thấy thanh lịch hơn khi chỉ cần sao chép UUID từ đầu ra sudo blkidthay vì vứt bỏ toàn bộ thứ đó /etc/fstabvà tạm thời làm hỏng nó. Một cách khác là lấy UUID từ đối thoại thuộc tính của phân vùng trong GParted.
David Foerster

Cũng như tôi đang làm điều này trên máy chủ của mình, tôi thực sự không thấy cách nào để sao chép nó ... Tất cả những gì tôi có là một bàn phím và bash.
rotgers

Hầu hết các trình giả lập thiết bị đầu cuối cho phép bạn sao chép mọi thứ (giả sử bạn đang sử dụng truy cập từ xa hoặc trình giả lập thiết bị đầu cuối như screenhoặc tmuxthay vì thiết bị đầu cuối ảo thô).
David Foerster

Giả định tồi haha, tôi đã không sử dụng trình giả lập thiết bị đầu cuối. Tuy nhiên, tôi đã thêm một số nội dung vào câu trả lời của mình để tạo một bản sao của tệp fstab trong trường hợp ai đó bắt vít. :)
cụ quay vòng

Tôi đã chuyển từ sử dụng UUID sang LABEL vì một số lý do, UUID đã thay đổi khi tôi điều chỉnh phân vùng nhưng tên nhãn thì không. Ngoài ra, tôi thấy dễ dàng hơn để xem những gì đang diễn ra trong fstab với LABEL = "some-name" so với UUID = "chuỗi ngẫu nhiên dài".
Chế độ xem hình elip

6

Bạn có thể sử dụng tiện ích GUI ntfs-config để gắn các phân vùng NTFS trong fstab. Và có thể dễ dàng kích hoạt / vô hiệu hóa khả năng đọc-ghi.

Gắn kết phân vùng Windows NTFS FSTAB

Hướng dẫn chi tiết hơn: Gắn phân vùng Windows trong Ubuntu khi khởi động


Cảm ơn! Làm thế nào bạn tạo ra gif hoạt hình đẹp?
Hans-Peter Störr

1
@hstoerr từ byzanz-record . bây giờ có những lựa chọn tốt hơn mặc dù.
Gayan Weerakutti

4

Có thể không phải là một giải pháp tốt, nhưng bạn luôn có thể ánh xạ id người dùng thành id của riêng bạn hoặc id nhóm:

Chỉ là một ví dụ ở đây, id người dùng của tôi là 1000

/dev/sda5 /mnt/excess ntfs defaults,uid=1000,rw 0 0

Trong trường hợp đó, tất cả các tệp được gắn kết thuộc sở hữu của người dùng ided 1000


1
Điều đó hoạt động, nhưng với hoặc không có tùy chọn "rw", nó vẫn gắn kết với các quyềndrwxrwxrwx
Amanda

Điều này làm việc cho tôi. Để có quyền, tôi đã thêm vào fstab file_mode = 0770, dir_mode = 0770
Rui F Ribeiro

2

Lưu ý rằng nếu bạn gắn ổ đĩa ntfs của mình bằng nhãn và muốn có thể thay đổi quyền của thư mục hoặc tệp trên ổ đĩa này thì các thao tác sau sẽ hoạt động tốt (chỉnh sửa / etc / fstab, ví dụ: sudo nano / etc / fstab, sau đó thêm) :

LABEL=Portable_HD_2TB      /media/mintbox2/Portable_HD_2TB ntfs    permissions,defaults        0       2

Trong khi đó, bên dưới KHÔNG cho phép bạn thay đổi quyền của thư mục hoặc tệp:

LABEL=Portable_HD_2TB      /media/mintbox2/Portable_HD_2TB ntfs    defaults        0       2

1

Tôi sử dụng chính xác những điều sau đây mà tôi thấy cung cấp cho tôi quyền khi gắn kết (ổ đĩa NTFS từ thiết lập hệ thống khởi động kép):

Chỉnh sửa /etc/fstab:

UUID có thể được tìm thấy trong /dev/disk/by-uuid/(thường là ánh xạ tới /dev/sd*)

Thay thế <your uuid>bằng UUID của bạn

UUID=<your uuid> /mnt/e ntfs auto,users,uid=1000,gid=1000,dmask=027,fmask=137 0 0

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.