Linux - Gắn thiết bị với quyền người dùng cụ thể


86

Làm cách nào tôi có thể gắn thiết bị với quyền người dùng cụ thể khi khởi động? Tôi vẫn có một số vấn đề tìm ra nó. Tôi muốn gắn kết phân chia với uid=1000gid=1000. Mục nhập hiện tại của tôi vào /etc/fstab/tập tin trông như thế này:

dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000

Đừng quên gui = 1000. Ngoài ra, quyền sở hữu / quyền đối với / var / www là gì. Nó nên được sở hữu bởi root.
skub

1
@skub: Chủ sở hữu /var/www/là root. dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000 gui=1000không hoạt động tốt như vậy (Ubuntu đã xóa mục nhập sau khi khởi động lại không thành công).
wowpatrick

2
Nguồn gắn kết của bạn là "dev" ??
James T Snell

@wowpatrick - thiết bị gắn kết của bạn phải là một cái gì đó như / dev / sda1, nó không nên là 'dev'.
skub

1
@skub: Đó là thư mục chia sẻ VirtualBox, vì vậy / dev là đúng. Tôi đã tìm ra nó bây giờ, sudo mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/wwwhoạt động tốt.
wowpatrick

Câu trả lời:


119

Để gắn thiết bị với một số quyền nhất định, bạn có thể sử dụng lệnh -o Optiontrong khi gắn thiết bị. Để gắn thiết bị bạn mô tả, hãy chạy:

 mount -t deviceFileFormat -o umask=filePermissions,gid=ownerGroupID,uid=ownerID /device /mountpoint

Ví dụ: gắn thư mục chia sẻ VirtualBox /var/wwwvới www-datachủ sở hữu sẽ trông như thế này:

mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/www

Nếu bạn muốn gắn thiết bị khi khởi động, bạn có thể thêm mục nhập sau vào /etc/fstabtệp của mình :

 /device /mountpoint deviceFileFormat umask=filePermissions,gid=ownerGroupID,uid=ownerUserID

Một lần nữa, với cùng ví dụ, mục nhập vào /etc/fstabtệp sẽ như thế này:

dev /var/www vboxsf umask=0022,gid=33,uid=33

Đối với các hệ thống tệp không hỗ trợ cài đặt như một người dùng cụ thể (như ext4), ở trên sẽ báo lỗi

Unrecognized mount option "uid=33" or missing value

để thay đổi chủ sở hữu của mount ext4 chỉ cần chạy

chown username /mountpoint

sau khi nó đã được gắn kết.


Tôi đã có thể sử dụng tùy chọn uid / gid trên ext4.
CMCDragonkai

Điều này dường như không hoạt động với mount --bind, tôi đang sử dụng hệ thống tệp
btrfs

Không nên umask=0077thay vì umask=0022chỉ cho phép chủ sở hữu đọc hoặc viết? Có vẻ như nó umask=0022sẽ cấp quyền đọc cho người khác nếu tôi đọc đúng. Tôi muốn rằng chỉ người dùng gắn đĩa nên có quyền đọc hoặc ghi.
Mian Asbat Ahmad

3

Đối với một hệ thống tệp như ext3 hoặc ext4, sau khi thực hiện

    chown -R username:group /mountpoint

để thay đổi chủ sở hữu của các tệp hiện có, bạn có thể đặt bit id nhóm thành các tệp mới được tạo với nhóm cụ thể (không hoạt động đối với id người dùng trong Linux):

    find /mountpoint -type d -exec chmod g+ws {} \;

Mục nhập Wikipedia trên setuid và setgid khá nhiều thông tin, xem phần trên các thư mục .


18
Thay đổi quyền sở hữu của tất cả các tệp trên thiết bị là rất xâm lấn. Vì có một -otùy chọn để gắn kết, đó là cách tốt hơn.
Chuộc tội giới hạn

6
-oThật không may, không hoạt động cho ext4, như được giải thích trong câu trả lời của @wowpatrick.
js.

14
chowning nội dung của ổ đĩa gắn kết với một số người dùng khác là vô lý. Bạn không biết bạn có thể phá vỡ những ứng dụng nào trên ổ đĩa đó. Có thể sẽ ổn nếu tất cả các nội dung thuộc về người dùng của bạn, nhưng đây là một thứ rất lớn không-không ...
carlspring

Thiết bị được đề cập là / dev / www, thật dễ dàng để kiểm soát ứng dụng nào có quyền truy cập vào thiết bị (có thể chỉ là máy chủ WWW mà bạn có thể tắt trong khi vận hành). Ngay cả khi ứng dụng sử dụng nó vẫn đang chạy, nó sẽ tiếp tục chạy, vì đó là điểm hoạt động.
js.
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.