Gắn hệ thống tập tin với bộ id người dùng đặc biệt


19

Tôi muốn gắn thiết bị /dev/sda3vào thư mục /foo/bar/baz. Sau khi gắn thư mục nên có uid của người dùng johndoe. Tôi cũng vậy:

sudo -u johndoe mkdir /foo/bar/baz
stat -c %U /foo/bar/baz
johndoe

và thêm dòng sau vào /etc/fstab:

/dev/sda3 /foo/bar/baz ext4 noexec,noatime,auto,owner,nodev,nosuid,user 0 1

Khi tôi làm bây giờ sudo -u johndoe mount /dev/sda3lệnh stat -c %U /foo/bar/bazkết quả rootthay vì johndoe. Cách tốt nhất để gắn hệ thống tập tin ext4 này với tập hợp uid là johndoegì?

Câu trả lời:


20

Không thể buộc chủ sở hữu trên đĩa có hệ thống tệp ext4. Chỉ các hệ thống tệp không hỗ trợ các quyền Linux như fat mới có thuộc tính cho quyền sở hữu / nhóm: uid=valuegid=value. Xem trang hướng dẫn trên núi .

Bạn nên thay đổi chủ sở hữu trên hệ thống tập tin được gắn kết như trong:

sudo chown johndoe /foo/bar/baz

Nếu bạn cần thay đổi các quyền đệ quy:

sudo chown -R johndoe /foo/bar/baz

... và nếu nhóm cũng cần được thay đổi thành johndoe:

sudo chown -R johndoe: /foo/bar/baz

2
Thay đổi quyền sở hữu đệ quy nói chung là một ý tưởng tồi nếu bạn có thể giúp đỡ nó. Khi bạn đã xóa quyền sở hữu "chính xác", hầu như không có cách nào dễ dàng để lấy lại quyền sở hữu. IMO bindfs là cách chính xác để xử lý việc này (xem câu trả lời của tôi).
Catskul

3
bindfs nghe như một lớp phức tạp khác. Câu trả lời của tôi là phù hợp nhất cho một đĩa cứng ngoài (để sao lưu) được sử dụng trong cài đặt trước đó với ID người dùng khác. Không nên sử dụng nó trong các tình huống cần giữ nhiều id người dùng (hệ thống tập tin gốc), nhưng trong trường hợp đó, -ukhông nên sử dụng bindfs với vì nó tránh được các hạn chế truy cập từ các id người dùng khác nhau. --mapnên được sử dụng nếu bạn muốn duy trì các hạn chế truy cập.
Lekensteyn

1
+1 cho "chỉ có thể có trên các FS không có giấy phép" - Tôi đã cố gắng sử dụng uidgid, nó sẽ không hoạt động.
mgarciaisaia

19

bindfslà câu trả lời. Nó sẽ có một hệ thống tập tin đã được gắn kết và cung cấp một cái nhìn về nó với bất cứ điều gì bạn muốn:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo

1
bindfs có các chế độ hoạt động khác, xem: bindfs.org/docs/bindfs.1.html
Lekensteyn

2
Ugh, nó sử dụng FUSE.
Navin

Tôi muốn gắn kết một hệ thống tệp ảo 9p với các quyền người dùng khác với hệ điều hành máy chủ .. Đã đập đầu vào tường cố gắng làm cho nó hoạt động. Bindfs thực sự đã đưa tôi ra khỏi một ràng buộc. Công cụ nhỏ tuyệt vời!
Boann

6

Giả sử nhóm được đặt cho các tệp có quyền thích hợp, bạn sẽ có thể chỉ cần tìm ID nhóm (GID) và thêm chính mình vào đó.


Để tìm ra id nhóm của một tập tin, sử dụng ls -n. Ví dụ đầu ra:

drwxr-xr-x 1 1000 1000  550 Jul  9 11:08 Desktop/

Bạn muốn trường thứ tư cho GID, trong trường hợp của tôi là trường thứ hai 1000.

sudo addgroup --gid GID foobar; sudo usermod `whoami` -aG foobar

Khi bạn chạy, bạn sẽ có toàn quyền trong trường hợp các thuộc tính tệp cho nhóm cho phép.

Như đã lưu ý trong câu trả lời khác liên quan đến quyền của người dùng, nếu bạn cần sửa nhóm trên một số tệp, hãy chạy một trong các tệp sau:

sudo chown -R :foobar ./
sudo chgrp -R  foobar ./

1
Lưu ý nếu bạn muốn chuyển người dùng hoặc nhóm từ A sang B mà không thay đổi quyền sở hữu các tệp không phải là A; bạn có thể sử dụng sudo chown --from A B -R ./cho người dùng và sudo chown --from :A :B ./cho các nhóm
LateralFractal
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.