Làm cách nào để ghi tập tin vào USB mà không cần root?


10

Tôi có một thanh USB 4GB mà tôi đã phân vùng bằng sudo cfdisk /dev/sdbvà định dạng bằng cách sử dụng sudo mkfs /dev/sdb1. Hiện tại nó được đặt thành ID 83với Hệ thống Linuxkhi tôi chạy sudo fdisk -ltrên Debian Squeeze.

Tôi sử dụng pmountđể gắn các ổ USB ngoài. Vì vậy, làm một pmount /dev/sdb1gắn kết nó /media/usb0bởi vì tôi có ff. dòng trong /etc/fstab:

/dev/sdb1    /media/usb0    auto    rw,user,noauto    0    0

Sau khi ban hành pmountlệnh, USB được gắn vào /media/usb0- thực hiện ls -l /media/usb0cho tôi:

drwx------ 2 root root 16384 Mar   2 20:08 lost+found

Vì vậy, tôi đi về doanh nghiệp của mình và cố gắng sao chép một tập tin vào /media/usb0nhưng tôi gặp lỗi dưới đây:

$ cp ~/foo.bar /media/usb0
cp: cannot create regular file `/media/usb0/foo.bar': Permission denied

Nhưng khi tôi phát hành cùng một cplệnh sudo, tôi có thể sao chép tệp.

Lý do tại sao điều này xảy ra? Tôi đã thử các ổ USB khác mà tôi có và tôi có thể ghi vào chúng mà không gặp lỗi này. Có điều gì đó không đúng với cách tôi định dạng hoặc phân vùng lại thanh USB?

Câu trả lời:


7

Bạn đã định dạng phân vùng sdb1 bằngext* hệ thống tệp ( ext2 , ext3 hoặc ext4 ; Tôi không thể gọi lại mặc định). Đây là hệ thống tệp mặc định trên các hệ thống Linux và sử dụng quyền truy cập tệp Unix để xác định ai có thể sửa đổi tệp hoặc thư mục. Các hệ thống tệp mới luôn bắt đầu với quyền root ( /media/usb0trong trường hợp này) được sở hữu root:rootvà thường chỉ có quyền cho phép sửa đổi bởi chủ sở hữu.

Để thấy điều này cho bản thân, hãy gắn hệ thống tập tin, sau đó chạy ls -ld /media/usb0để xem quyền sở hữu / perms hiện tại. Tôi đoán là:

drwx------ 2 root root 16384 Mar   2 20:08 /media/usb0

Một sửa chữa đơn giản sẽ là a) chownhệ thống tệp được gắn vào tài khoản Linux của riêng bạn hoặc b) để cho phép mọi người viết quyền chmod.

Tuy nhiên, cuối cùng, đây sẽ không phải là một giải pháp tốt, vì các tệp được tạo sẽ trở thành sở hữu bởi UID của bạn chứ không phải tên người dùng; điều này sẽ nhanh chóng dẫn đến sự không phù hợp với tài khoản khi ổ USB được kết nối với một hệ thống khác. Giả sử bạn hoàn toàn có thể kết nối nó, đó là - Windows không hỗ trợ ext3 mà không cần thêm thủ thuật, vì vậy NTFS ( mkfs.ntfs) hoặc FAT32 ( mkfs.vfat) sẽ là lựa chọn tốt hơn cho hệ thống tệp.


Tôi đã cố gắng làm sudo mkfs.ntfs /dev/sdb1sudo mkfs.vfat /dev/sdb1nhưng tôi nhận được lỗi sudo: mkfs.xxxx: command not foundở đâu xxxxlà một trong hai ntfsvfat. Làm cách nào để tôi làm việc đó với Debian Squeeze?
Eric

@Eric: Cài đặt ntfs-3g + ntfspross + dosfstools .
dùng1686

Ok, tôi đã cài đặt nó. Bây giờ khi tôi cố gắng gắn kết, tôi gặp lỗi này : ntfs-3g-mount: failed to open /dev/fuse: Permission denied. Tôi phải làm gì về điều này?
Eric

4

Điều này xảy ra trên các hệ thống Debian sau này (ví dụ jessie) cũng như với các ổ flash USB được định dạng fat32 hoặc ext3,4. Bạn cần xóa (hoặc nhận xét) dòng sau khỏi / etc / fstab của bạn :

/dev/sdb1    /media/usb0    auto    rw,user,noauto    0    0

Sau này, ổ USB của bạn sẽ tự động được gắn dưới sự cho phép của tài khoản người dùng thông thường và không phải root. Xem thông tin chi tiết trên các diễn đàn Debian trên liên kết này .

Sau đó, ổ USB của bạn sẽ hoạt động trơn tru với quyền ghi của người dùng :)


2

Sử dụng sudovà thay đổi quyền với chmodlệnh.

Xem câu trả lời của tôi trong câu hỏi đó để xem cách sử dụng chmod:

Tôi đề nghị bạn sử dụng chmod 777để cho phép tất cả (sử dụng ls -lnó sẽ hiển thị drwxrwxrwx).



0

Đi đến phương tiện hệ thống tập tin thông qua GUI. Nhấp chuột phải vào ổ USB bạn muốn sao chép và chọn - Mở dưới dạng Root. Nhập mật khẩu. Sau đó, bạn có thể sao chép xóa, kéo và thả. Tất cả đều tốt


Như @Sven đã nói ở trên, root: root trong quyền sở hữu là lý do mở dưới dạng root tại terminal hoặc gui HOẶC sử dụng chown để thay đổi chủ sở hữu hoặc nhóm để cho phép bạn sử dụng usb đó như mong đợi.
linuxdev2013
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.