Cấp quyền cho người dùng cho tất cả các tệp và thư mục


9

Tôi muốn có một người dùng có quyền truy cập vào tất cả các tệp và thư mục trên hệ thống. Điều này nhằm mục đích sử dụng RSYNC trên máy cục bộ để sao lưu máy từ xa.

Hiện tại chúng tôi đang sử dụng người dùng backupsvà mặc dù chúng tôi đã thêm người dùng này vào các nhóm sudoadminrsync vẫn trả về các thông báo như:

rsync: opendir "/ location / to / thư mục" không thành công: Quyền bị từ chối (13)

rsync: send_files không thể mở "/ location / to / file": Quyền bị từ chối (13)

Mọi ý tưởng về cách chúng tôi cấp cho người dùng backupsquyền truy cập mọi thứ (thiếu người dùng thêm vào tất cả các nhóm - máy chủ từ xa mà chúng tôi đang cố gắng sao lưu là một máy chủ lưu trữ chuyên dụng trong đó mọi tài khoản đều có người dùng riêng trên hệ thống).

Cảm ơn vì bất kì sự giúp đỡ.


1
Bạn có thể cho ví dụ về các con đường? Nếu đó là một trong /proc, /devvv thì lỗi sẽ được dự kiến.
Phil

thêm người dùng backupsvào sudoadminkhông thay đổi bất cứ điều gì.
favadi

@Phil Tôi đang cố gắng sao lưu toàn bộ thư mục / home. Các tệp / thư mục bị lỗi là những tệp như /home/a/c/account/users/mail:usernamecó quyền drwx------và được sở hữu mail:4096. Tôi cho rằng vì người dùng backupsở trong nhóm sudohoặc adminkhông có quyền truy cập vì không có quyền truy cập cho nhóm? Tôi không biết, nhưng nó bị lỗi trên các thư mục / tập tin như thế.
Thomas Clayson

@favadi Tôi đã làm điều đó ... vẫn không hoạt động.
Thomas Clayson

Bạn sẽ phải chạy rsynclệnh với sudo.
Phil

Câu trả lời:


6

Chỉ cần thêm người dùng backupsvào nhóm người dùng sudosẽ không tự động cấp quyền truy cập tài khoản vào tất cả các tệp trên hệ thống. Nó cung cấp cho người dùng quyền để chạy sudolệnh.

Vì bạn đang sử dụng xác thực khóa công khai (có lẽ không có cụm mật khẩu), tôi sẽ tiếp cận vấn đề này với tính bảo mật và dễ thực hiện trong tâm trí. Sử dụng sshcho phép bạn hạn chế người dùng chỉ thực hiện các lệnh rất cụ thể. Trong trường hợp này, bạn có thể cho phép người dùng backupsthực thi rsyncvới quyền siêu người dùng.

Bạn đã thực hiện trao đổi khóa và xác thực được xác minh là thành công. Trong authorized_keystệp trên máy chủ từ xa mà bạn đang sao lưu /homethư mục từ đó, bạn có thể thêm một command=lệnh vào khóa được người dùng sử dụng backups. Lệnh này sẽ chỉ cho phép lệnh đó được chạy khi khóa đó được sử dụng để xác thực. Vì vậy, trường đầu tiên của khóa sẽ trông giống như thế này:

command="/path/to/sudo /path/to/rsync -az /home /local/folder" ssh-rsa AAAAB3NzaC1yblahblahblah

Bạn có thể đi xa hơn và thêm nhiều tùy chọn hơn vào khóa, chẳng hạn như from=myhost,no-pty,no-X11-forwarding.

Điều này sẽ cung cấp cho bạn bảo mật tốt và không yêu cầu bạn sửa đổi các quyền hệ thống tệp cơ bản. Bạn có thể sẽ cần chơi với lệnh mà bạn đặt trong authorized_keystệp cho đến khi nó hoạt động như bạn mong đợi; nó có thể mất một chút để bọc bộ não của bạn xung quanh nó. Lệnh được chỉ định trong authorized_keyscơ bản sẽ ghi đè các rsynctùy chọn bạn sẽ chuyển từ máy chủ kết nối.

Rất nhiều thông tin tốt trong man sshd. Bạn muốn đọc cụ thể phần AUTHORIZED_KEYS FORMAT.


Ok, tôi đang theo dõi tôi nghĩ. Thêm chỉ thị đó vào tệp ủy quyền sẽ cho phép bạn chạy một lệnh từ xa với quyền siêu người dùng phải không? Làm cách nào để thay đổi lệnh rsync -e ssh -az [email protected]:/home /location/of/local/folderđể hướng dẫn nó chạy như siêu người dùng trên máy từ xa? Hay nó sẽ tự động làm điều đó? Xin cám ơn về thời gian và sự giúp đỡ của bạn. :)
Thomas Clayson

1
Lệnh không tự động cho phép bạn chạy lệnh dưới dạng siêu người dùng. Khi khóa cụ thể đó được sử dụng để xác thực, nó sẽ hạn chế người dùng CHỈ lệnh được chỉ định. Các quyền superuser đến từ "sudo". Về mặt kỹ thuật, bạn có thể đặt toàn bộ lệnh "rsync" của mình trong tệp ủy quyền và chỉ cần khởi tạo kết nối ssh từ máy chủ dự phòng. Toàn bộ quá trình sau đó sẽ bắt đầu tự động sau khi xác thực hoàn tất. Tôi sẽ bắt đầu kết nối với một cái gì đó như "sao lưu ssh @ remotehost sudo rsync"
George M

Sẽ mất một chút thời gian để bọc bộ não của bạn, nhưng thật tuyệt khi cuối cùng nó cũng nhấp và bạn nhận ra mình có thể làm gì.
George M

2

Một tùy chọn là chạy máy chủ rsync trên hệ thống từ xa.

Về cơ bản, tạo một rsync.confvới uid=rootsau đó sử dụng rsync -az rsync://domain.com.

Xem http://pastebin.com/5hQx1mRV để biết ví dụ người khác đã viết và Định cấu hình trình nền rsync để biết một số điều cơ bản về việc bật máy chủ trong Ubuntu.

Lưu ý rằng bạn phải xem xét tính bảo mật của điều này. Một cách tiếp cận tốt hơn có lẽ là làm cho hệ thống từ xa đẩy đến hệ thống cục bộ của bạn.


Điều đó có vẻ khá tốt cảm ơn. Điều đó sẽ rsync mọi thứ từ /backup/lcthư mục trên máy chủ từ xa? Tôi có thay đổi pathbit /homeđể làm việc đó không?
Thomas Clayson

Cảm ơn các anh chàng chỉnh sửa. Vấn đề duy nhất là chúng tôi không thể đảm bảo một địa chỉ IP tĩnh nơi chúng tôi đang ở và chúng tôi muốn thực hiện điều này thông qua cron để nó luôn luôn xảy ra. Nếu chúng tôi "đẩy" nó có thể ngừng hoạt động nếu địa chỉ IP của chúng tôi thay đổi. : /
Thomas Clayson

@ThomasClayson: Đó là những gì DNS động dành cho. :)
Warren Young

1

Bạn có thể có thể sử dụng ACL nếu hệ thống tập tin cơ bản hỗ trợ nó.

Bạn nên thêm bản sao lưu nhóm trong ACL của mỗi tệp và thư mục. Nhưng để được thêm tự động cho tệp và thư mục mới được tạo, trước tiên bạn nên đặt ACL mặc định cho tất cả các thư mục hiện có. Vì vậy, trên máy chủ từ xa:

sudo find /home -type d -print0 | xargs -0 setfacl -d -m group:backup:r-x

Sau đó, bạn nên có quyền rx cho tất cả các thư mục hiện có và đọc cho các tập tin. Bạn có thể làm điều này với 2 lệnh (không có -d lần này)

sudo setfacl -R -m group:backup:r-- /home
sudo find /home -type d -print0 | xargs -0 setfacl -m group:backup:r-x

Điều này sẽ cung cấp cho bạn thêm quyền để đọc các tệp vào bản sao lưu nhóm mà không thay đổi người dùng và nhóm hiện có sở hữu từng tệp.

Lưu ý: để tăng tốc tìm kiếm | Lệnh xargs bạn có thể thêm tùy chọn sau vào lệnh xargs: -P nvới n số lượng quá trình song song. Bạn có thể đặt nó thành số cpu bạn có trên máy + 1.


Các xarg song song sẽ không tăng tốc mọi thứ trong trường hợp này, vì nút cổ chai là I / O, không phải CPU.
Mikel

Linux sử dụng bộ nhớ cache trong bộ nhớ trước khi thực hiện các thay đổi đối với đĩa, do đó, nó cảm thấy nhanh hơn từ quan điểm của người dùng. Và thậm chí một hdd notebook nhỏ có thể xử lý tải của việc đặt nhiều ACL song song. Nó không quá nhiều I / O. Hãy dùng thử :)
Huygens

Tôi vừa đọc ở đây superuser.com/a/422954/53206 mà bạn có thể chỉ cần sử dụng: sudo setfacl -Rm d:group:backup:r-X,group:backup:r-X /home:) đơn giản hơn nhiều!
Huygens
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.