Tại sao mount yêu cầu quyền root?


54

Tại sao Linux yêu cầu người dùng phải root / sử dụng sudo / được ủy quyền cụ thể cho mỗi lần gắn kết để gắn kết một cái gì đó? Có vẻ như quyết định về việc có cho phép người dùng gắn kết một cái gì đó hay không nên dựa trên quyền truy cập của họ đối với khối lượng / chia sẻ mạng và đến điểm gắn kết. Một vài cách sử dụng để gắn kết không root là gắn hình ảnh hệ thống tệp theo hướng người dùng sở hữu và gắn chia sẻ mạng vào thư mục do người dùng sở hữu. Có vẻ như nếu người dùng có quyền kiểm soát cả hai mặt của phương trình gắn kết thì mọi thứ sẽ rất tuyệt.

Làm rõ hạn chế truy cập:

Tôi cảm thấy tôi có thể gắn kết bất cứ thứ gì mà người dùng có quyền truy cập vào một điểm gắn kết mà người dùng là chủ sở hữu.

Chẳng hạn, trên máy tính của tôi / dev / sda1 được sở hữu bởi người dùng root và nhóm đĩa có quyền brw-rw----. Do đó, người dùng không root không thể gây rối với / dev / sda1 và rõ ràng việc gắn kết không nên cho phép họ gắn kết. Tuy nhiên, nếu người dùng sở hữu /home/my_user/my_imagefile.img và điểm gắn kết / home / my_user / my_image / tại sao họ không thể gắn tệp hình ảnh đó vào điểm gắn kết đó với:

mount /home/my_user/my_imagefile.img /home/my_user/my_image/ -o loop

Như kormac đã chỉ ra rằng có một vấn đề suid. Vì vậy, một số hạn chế sẽ phải được thêm vào để ngăn không cho vấn đề trở thành vấn đề cũng như tiềm ẩn một số vấn đề khác. Có lẽ một cách để làm điều này là làm cho HĐH coi tất cả các tệp thuộc về người dùng đã gắn kết. Tuy nhiên, để đọc / ghi / thực thi đơn giản, tôi không hiểu tại sao điều này lại là một vấn đề.

Trường hợp sử dụng:

Tôi có một tài khoản trong phòng thí nghiệm nơi không gian nhà của tôi bị giới hạn ở 8GB. Điều này là nhỏ và rất rất khó chịu. Tôi muốn gắn một khối lượng nfs từ máy chủ cá nhân của mình để tăng lượng phòng mà tôi có. Tuy nhiên, vì Linux không cho phép những thứ như vậy mà tôi bị mắc kẹt với các tập tin scp'ing qua lại ở dưới giới hạn 8GB.


4
Có vẻ như vấn đề không quá lớn đến nỗi "linux không cho phép những thứ như vậy" vì bạn không được phép làm những việc như vậy tại phòng thí nghiệm của mình, vì hệ thống có thể được cấu hình để cho phép bạn làm điều đó. Bạn có thể thảo luận vấn đề này với những người quản trị hệ thống; nếu họ không thân thiện, thì đó là về chính trị chứ không phải máy tính;)
goldilocks 17/213

Có thể gắn các điểm gắn tùy ý mà người ta có quyền truy cập bình thường không? Có vẻ như quản trị viên sẽ phải thêm một dòng rõ ràng vào fstab cho nfs mount của tôi để cho phép nó. Đổi lại, điều này có khả năng sẽ thiết lập một tiền lệ nơi họ cũng sẽ phải làm như vậy cho những người khác yêu cầu như vậy, điều mà tôi có thể hiểu sẽ không thể thực hiện được. Do đó, truy vấn về lý do tại sao Linux không cho phép bạn gắn kết những thứ tùy ý sẽ an toàn (theo một số cách hạn chế).
CrazyCasta

10
Bạn đã thử sshfschưa Nó sẽ gắn kết một thư mục từ xa, thông qua sshchính bạn mà không cần quyền truy cập root. Nó chỉ cần FUSE (Hệ thống tập tin trong UserSpacE) để được cài đặt.
Arcege

1
Bạn đã nghe nói về các vấn đề ổ cứng xấu, vv Vì vậy, tôi biết tôi đã nói điều này một loạt các lần, nhưng triết lý là "gắn mọi thứ tùy ý" không thể thực hiện an toàn , và đó là lý do tại sao nó được đặt cách nó là (ngoại lệ cụ thể phải được sắp xếp). BTW, nếu bạn không có FUSE, sftpsẽ dễ sử dụng hơn một chút scp.
goldilocks

1
Có vẻ như (một biến thể của) điều này đã được hỏi ở đây trước đây: Gắn tệp vòng lặp mà không có quyền root?
Daniel Pryden

Câu trả lời:


37

Đó là cả một hạn chế về lịch sử và an ninh.

Trong lịch sử, hầu hết các ổ đĩa không thể tháo rời. Vì vậy, thật hợp lý khi hạn chế gắn kết với những người có quyền truy cập vật lý hợp pháp và họ có thể sẽ có quyền truy cập vào tài khoản root. Các mục fstab cho phép quản trị viên ủy quyền gắn kết cho người dùng khác cho các ổ đĩa di động.

Từ quan điểm bảo mật, có ba vấn đề chính với việc cho phép người dùng tùy ý gắn các thiết bị khối tùy ý hoặc hình ảnh hệ thống tệp tại các vị trí tùy ý.

  • Gắn kết vào một vị trí không thuộc sở hữu làm mờ các tệp tại vị trí đó. Ví dụ: gắn hệ thống tệp bạn chọn /etc, với /etc/shadowmật khẩu gốc có chứa mật khẩu mà bạn biết. Điều này được khắc phục bằng cách cho phép người dùng gắn hệ thống tệp chỉ trên một thư mục mà anh ta sở hữu.
  • Trình điều khiển hệ thống tập tin thường không được kiểm tra kỹ lưỡng với hệ thống tập tin không đúng định dạng. Trình điều khiển hệ thống tập tin lỗi có thể cho phép người dùng cung cấp hệ thống tập tin không đúng định dạng để tiêm mã vào kernel.
  • Việc gắn một hệ thống tập tin có thể cho phép công cụ tìm kiếm khiến một số tệp xuất hiện mà anh ta không có quyền tạo. Setuid thực thi và thiết bị file là những ví dụ rõ ràng nhất, và chúng được cố định bởi nosuidnodevtùy chọn được ngụ ý bởi có usertrong /etc/fstab.
    Cho đến nay thi hành userkhimountkhông được gọi bằng root là đủ. Nhưng nhìn chung việc có thể tạo một tệp thuộc sở hữu của một người dùng khác là có vấn đề: nội dung của tệp đó có nguy cơ được quy cho bởi chủ sở hữu có mục đích thay vì người bắt gặp. Một bản sao lưu giữ thuộc tính thông thường bằng root đến một hệ thống tệp khác sẽ tạo ra một tệp thuộc sở hữu của chủ sở hữu được khai báo nhưng chưa được giải quyết. Một số chương trình kiểm tra xem yêu cầu sử dụng tệp có hợp pháp không bằng cách kiểm tra xem tệp đó thuộc sở hữu của một người dùng cụ thể và điều này sẽ không còn an toàn (chương trình cũng phải kiểm tra xem các thư mục trên đường dẫn truy cập có thuộc sở hữu của người dùng đó không; nếu việc gắn tùy ý được cho phép, họ cũng sẽ phải kiểm tra xem không có thư mục nào trong số này là điểm gắn kết mà việc gắn kết được tạo không phải bởi root hay bởi người dùng mong muốn).

Đối với các mục đích thực tế, ngày nay có thể gắn kết một hệ thống tập tin mà không cần root, thông qua FUSE . Trình điều khiển FUSE chạy như người dùng gắn kết, do đó không có nguy cơ leo thang đặc quyền bằng cách khai thác một lỗi trong mã hạt nhân. Hệ thống tập tin FUSE chỉ có thể hiển thị các tập tin mà người dùng có quyền tạo, giải quyết vấn đề cuối cùng ở trên.


24

Nếu người dùng có quyền truy cập ghi trực tiếp vào thiết bị khối có thể gắn thiết bị khối đó, thì họ có thể viết một thiết bị thực thi cho thiết bị khối, gắn kết, và thực thi tệp đó, và do đó, có quyền truy cập root vào hệ thống. Đây là lý do tại sao việc gắn kết thường bị hạn chế vào root.

Bây giờ root có thể cho phép người dùng bình thường gắn kết với các hạn chế cụ thể, nhưng anh ta cần đảm bảo rằng nếu người dùng có quyền truy cập ghi vào thiết bị chặn, thì mount không cho phép suid, và cả devnodes, có vấn đề tương tự (người dùng có thể tạo ra một devnode cung cấp cho họ quyền truy cập ghi vào một thiết bị quan trọng mà họ không nên có quyền truy cập ghi).


8

Nó không luôn luôn đòi hỏi siêu tư nhân. Từman mount

   The non-superuser mounts.
          Normally,  only  the  superuser can mount filesystems.  However,
          when fstab contains the user option on a line, anybody can mount
          the corresponding system.

          Thus, given a line

                 /dev/cdrom  /cd  iso9660  ro,user,noauto,unhide

          any  user  can  mount  the iso9660 filesystem found on his CDROM
          using the command

                 mount /dev/cdrom

          or

                 mount /cd

          For more details, see fstab(5).  Only the user  that  mounted  a
          filesystem  can unmount it again.  If any user should be able to
          unmount, then use users instead of user in the fstab line.   The
          owner option is similar to the user option, with the restriction
          that the user must be the owner of the special file. This may be
          useful e.g. for /dev/fd if a login script makes the console user
          owner of this device.  The group option  is  similar,  with  the
          restriction  that  the  user  must be member of the group of the
          special file.

Vâng, bạn là chính xác, tôi là một chút thiếu chính xác trong câu hỏi của tôi. Tôi biết rằng người ta có thể được ủy quyền cụ thể trên cơ sở gắn kết. Nhưng dường như nếu cả điểm gắn kết và âm lượng đều thuộc sở hữu của người dùng thì người dùng sẽ có thể gắn kết mà không có ủy quyền cụ thể.

3
@CrazyCasta: điểm gắn kết có thể được sở hữu bởi người dùng, nhưng nút thiết bị thì không. Quyền sở hữu, v.v., trên dữ liệu trong phân vùng là a) không thể biết được, b) không liên quan.
goldilocks

Nhưng nếu nút thiết bị thuộc sở hữu của người dùng.
CrazyCasta

Sau đó, nên có một ngoại lệ song song được thực hiện trong fstab, vì một nút thiết bị do người dùng sở hữu sẽ là ngoại lệ để bắt đầu (thử và tạo một). Một lần nữa, nguyên tắc là một hệ thống an toàn bị hạn chế và mọi người được cấp đặc quyền ... nếu bạn không được cấp đặc quyền, thật không may, bạn không gặp may. Xem, * nix không bán tạp chí dung lượng cao qua quầy - bạn cần có giấy phép.
goldilocks

Để rõ ràng, mount()cuộc gọi hệ thống luôn yêu cầu root. tiện ích suid có thể trở thành root và cho phép người dùng không root, và nếu mountlệnh được cài đặt suid, thì nó sẽ thực hiện điều này dựa trên cờ người dùng trong fstab. Các thực thi suid khác đã được viết để cho phép người dùng gắn kết, chẳng hạn như pmount, cho phép người dùng gắn phương tiện bên ngoài và thực thi các hạn chế thích hợp, chẳng hạn như nosuid, gật đầu.
psusi

5

Kormac và những người khác đã chỉ ra rằng đây không phải là vấn đề nan giải mà bạn trình bày nó như; đối với tôi, điều này xuất phát từ triết lý cấp các đặc quyền của người dùng một cách rõ ràng so với một hệ thống mà theo đó tất cả người dùng sẽ có quyền bất biến để gắn kết một hệ thống tập tin.

Gilles giải quyết một số vấn đề bảo mật liên quan đến việc gắn hệ thống tập tin. Tôi sẽ tránh một cuộc thảo luận sơ bộ và tiếp tuyến về các vấn đề kỹ thuật tiềm ẩn liên quan đến vấn đề này (xem bình luận) nhưng tôi nghĩ thật công bằng khi người dùng không tin cậy không có quyền bất biến để gắn ổ cứng.

Vấn đề liên quan đến hệ thống tệp ảo và từ xa (hoặc hệ thống tệp từ xa thông qua hệ thống tệp ảo, la FUSE) ít quan trọng hơn, nhưng điều này không giải quyết được câu hỏi bảo mật (mặc dù FUSE có thể và chắc chắn sẽ giải quyết được vấn đề của bạn). Điều quan trọng nữa là phải xem xét rằng dữ liệu trong các hệ thống tệp đó hầu như luôn có thể được truy cập mà không cần gắn thiết bị, thông qua truyền tệp hoặc các công cụ trích xuất từ ​​hình ảnh mà không cần gắn, vì vậy một hệ thống không cho phép bạn gắn kết một cái gì đó không đại diện cho một vấn đề không thể vượt qua liên quan đến việc truy cập dữ liệu mà bạn đã đặt một cách kỳ lạ vào một tệp hình ảnh, hoặc (dễ hiểu hơn) muốn nhận được từ một hệ thống từ xa. Nếu bạn có một tình huống không phải là trường hợp này, nó có thể có giá trị trong khi hỏi:

  1. Chính xác thì tôi đang cố gắng làm gì?

  2. Tôi đang cố gắng làm ở đâu?

Nếu quản trị hệ thống là công bằng, thì # 2 giải thích tại sao # 1 là không thể đối với bạn. Nếu chính quyền của hệ thống không công bằng, đó là chính trị . Giải pháp cho vấn đề, "Quản trị viên hệ thống của tôi không công bằng" là không thiết kế lại HĐH để quản trị viên hệ thống ở mọi nơi không thể hạn chế người dùng.

Hệ thống cho phép siêu người dùng hạn chế các hoạt động của bạn, một cách rõ ràng hoặc bằng cách bỏ qua ("Chúng tôi không cung cấp FUSE", v.v.). Đặc quyền là một cơ chế theo cách này được thực hiện. Có thể không hay khi nói: "Bạn không cần phải làm điều này", nhưng nếu đó là sự thật ... que sera ... bạn không cần phải làm điều này. Sử dụng ftp, vv Nếu nó không đúng, bạn nên bỏ qua những người có trách nhiệm.


Câu trả lời của bạn rất khó hiểu, không phải chính các tập (ví dụ / dev / sda1, / dev / sda2, v.v.) được bảo vệ khỏi người dùng đọc / ghi chúng? Tôi đang tự hỏi tại sao người dùng không thể gắn kết một cái gì đó mà họ có quyền truy cập. Để làm rõ, nếu tôi có một tệp hình ảnh có nghĩa là ext2, tôi có thể viết một ứng dụng cho phép tôi đọc / ghi từ / đến hình ảnh đã nói (tất nhiên không phải là một phần của hệ thống tệp của HĐH). Ứng dụng đã nói sẽ không thể đọc / ghi từ các phân vùng trong / dev (trừ khi các phân vùng đó được thay đổi để cho phép người dùng truy cập vào chúng, điều này thường không có ý nghĩa).
CrazyCasta

PS Tôi không đồng ý rằng người dùng sẽ có thể gắn kết một hệ thống tệp mà họ không có quyền truy cập mà không có sự cho phép cụ thể vì chỉ hành động gắn nó có thể có khả năng gây ra một số hành động (như kiểm tra hệ thống tệp) mà root không muốn.
CrazyCasta

Gắn hình ảnh vẫn liên quan đến các nút thiết bị (ví dụ: / dev / loop). Bạn đúng rằng điều này tạo ra một rắc rối, nhưng "sắp xếp" cho điều đó sẽ thay đổi từ hệ thống này sang hệ thống khác (có một nguồn cung cấp hữu hạn cho các thiết bị vòng lặp, vì vậy một lần nữa, đó là lý do tại sao mặc định nó bị hạn chế. Nhưng mặc định đó vẫn có thể bị ghi đè, bởi siêu người dùng, thay mặt cho bất kỳ ai khác.
goldilocks

Đó là một điểm tốt về giới hạn của các nút thiết bị lặp lại. Tôi không thực sự rõ ràng tại sao cần phải có một thiết bị lặp lại, có vẻ hơi dư thừa. Tôi biết điều đó bởi vì việc gắn kết đòi hỏi một tập tin chặn thay vì một tập tin bình thường. Tôi không hiểu tại sao điều này là mặc dù. Bạn có thể cung cấp bất kỳ cái nhìn sâu sắc nào, như kernel xử lý các thiết bị khối và các tệp thông thường khác nhau đáng kể không?
CrazyCasta

1
@goldilocks: Lý do câu trả lời này là bollocks là vì lý thuyết của bạn đằng sau sự hạn chế này rất thuyết phục, nhưng nó hoàn toàn sai, vấn đề bạn đề cập không tồn tại. Cho phép tạo một hệ thống tệp ảo (như FUSE) không cho phép bạn làm bất cứ điều gì chưa thể thực hiện được bằng cách sử dụng IPC. Lưu ý của bạn về việc ngắt trên các thiết bị là hoàn toàn không liên quan; sự gián đoạn đáng kể duy nhất xảy ra đối với hệ thống tập tin từ xa đến từ card mạng, được xử lý hoàn toàn bởi kernel.
Lie Ryan

5

FYI: Các hạt nhân mới nhất có hỗ trợ "không gian tên". Người dùng thông thường có thể tạo một không gian tên và trong không gian tên đó, trở thành root và làm những thứ thú vị như hệ thống tập tin gắn kết.

Mặc dù vậy, nó không cung cấp cho bạn quyền siêu người dùng "thực" - bạn chỉ có thể làm những gì bạn đã được phép làm (nghĩa là bạn chỉ có thể gắn thiết bị mà bạn đã có thể đọc).

http://lwn.net/Articles/531114/ Xem phần 4.


Không gian tên hạn chế hơn thế. Bạn có thể xuất hiện rootbên trong một không gian tên người dùng, nhưng nó không cho phép bạn gắn các loại hệ thống tập tin bình thường ngay cả khi bạn có thể đọc và ghi thiết bị khối. Xem thử nghiệm 2 tại đây: unix.stackexchange.com/questions/517317/ trên
sourcejedi

0

Bởi vì dữ liệu trên hệ thống tập tin mà họ dự định gắn kết có thể ảnh hưởng đến bảo mật của máy chủ hoặc thậm chí làm sập nó (nếu nó được xây dựng theo cách đó một cách có chủ ý).


Bạn có thể giải thích? Tôi không chắc chắn "dữ liệu trên hệ thống tập tin họ dự định gắn kết" sẽ ảnh hưởng đến bảo mật như thế nào. Nếu bạn có thể đọc / ghi tệp bình thường thì bạn sẽ có thể gắn kết nó (là đối số của tôi). Nếu tôi có thể đọc / ghi một điểm gắn kết thì tôi sẽ có thể mọi thứ gắn kết ngoại trừ việc thực sự gắn nó vào một thư mục. Nếu bạn không thể đọc / ghi nó hoặc không thể xem thư mục để xem nó có tồn tại hay không thì mount sẽ thất bại theo cách tương tự như lệnh ls hoặc cat type.

Đối số của bạn là hợp lệ nếu 'bạn' là người dùng duy nhất; hãy nhớ rằng Linux (và Unix) là các hệ thống nhiều người dùng, nơi người dùng không nhất thiết phải tin cậy.
sendmoreinfo 17/2/13

nhị phân suid có thể được thêm vào một thiết bị, được gắn trên hộp của bạn và được sử dụng để root một hộp, đó là lý do tại sao theo mặc định owneruser(s)được đặt nosuid. Bạn sẽ không muốn ai đó có thể vượt qua điều đó một cách dễ dàng bằng cách cho phép họ xóa thủ côngnosuid
RS

@sendmoreinfo Tôi biết rõ rằng Linux là một hệ thống nhiều người dùng, không cần phải bảo trợ. Tôi tự hỏi tại sao tôi bị hạn chế gắn chia sẻ mạng và tệp hình ảnh mà nếu không tôi có nhiều quyền truy cập. Câu trả lời của kormoc đang chiếu sáng, mặc dù tôi tò mò tại sao một số cờ nhất định không thể bị ép buộc đối với người dùng không phải root (như nosuid) để khắc phục điều này. Có vẻ như tôi có thể gắn kết với mục đích đọc / ghi đơn giản một tệp hình ảnh / chia sẻ mạng mà tôi có quyền truy cập vào một điểm gắn kết mà tôi sở hữu.
CrazyCasta

1
@CrazyCasta WRT "làm cho hệ thống gặp sự cố", chắc chắn có thể gắn phần cứng bị lỗi khai thác lỗ hổng trong giao diện phần cứng. Bất cứ ai có ổ cứng với đủ khối xấu đều có thể cho bạn biết nó có thể ảnh hưởng đến kernel như thế nào (và do đó là toàn bộ hệ thống) - nó đi vào một vòng lặp bận rộn và làm tê liệt toàn bộ kit và kaboodle. Có lẽ có một số logic ở gốc mà không thể giải quyết được, vì đây là một vấn đề nổi tiếng đã tồn tại trong một thời gian dài mà không có giải pháp.
goldilocks

0

Trong Gnome, gvfs không yêu cầu root để gắn hệ thống tập tin từ xa (ftp hoặc ssh) và gnome-mount cũng không cần root để gắn bộ nhớ ngoài (ổ USB, CD / DVD, v.v.).

Hầu hết các hệ thống có thể không muốn có toàn bộ Gnome chỉ cho một số cài đặt từ xa, sau đó bạn có thể sử dụng lufs , sshfs hoặc ftpfs .

gvfs, lufs, sshfs và ftpfs sử dụng FUSE để cho phép người dùng không root để gắn hệ thống tệp ảo; và không giống như mount -o user, FUSE không yêu cầu sysadmin sắp xếp các mount cụ thể. Miễn là bạn có đặc quyền cho thư mục mount và với bất kỳ tài nguyên nào cần thiết để xây dựng hệ thống tập tin, bạn có thể tạo mount FUSE.

Tại sao mount yêu cầu quyền root?

Bởi vì mountchủ yếu / ban đầu được dành cho hệ thống tập tin cục bộ, hầu như luôn liên quan đến một phần cứng.

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.