Lý do đằng sau các nhóm và người dùng mặc định trên Linux


14

Nhìn vào quản lý nhóm và người dùng mặc định trên một số bản phân phối Linux thông thường (tương ứng ArchLinux và Debian), tôi tự hỏi hai điều về nó và về hậu quả của việc sửa đổi thiết lập và cấu hình mặc định.

Giá trị mặc định cho USERGROUPS_ENABtrong /etc/login.defscó vẻ là "có", được phản ánh bởi các "Theo mặc định, một nhóm cũng sẽ được tạo cho người dùng mới" có thể được tìm thấy trong useraddngười đàn ông, vì vậy mỗi khi người dùng mới được tạo ra, một nhóm được tạo với cùng tên và chỉ người dùng mới này mới tham gia. Có phải đây chỉ là một trình giữ chỗ?

Tôi cảm thấy như chúng ta đang mất một phần quản lý quyền với tư cách là người dùng / nhóm / người khác khi làm điều này. Sẽ thật tệ nếu có một nhóm "người dùng" hoặc "người điều chỉnh" hoặc bất cứ điều gì bạn muốn gọi đó là nhóm mặc định cho mọi người dùng thay vì có nhóm của họ?

Phần thứ hai của câu hỏi của tôi, vẫn dựa trên những gì tôi đã thấy trên Arch và Debian: có rất nhiều người dùng được tạo theo mặc định (FTP, HTTP, v.v.). Có bất kỳ sử dụng cho họ hoặc họ chỉ tồn tại vì lý do lịch sử?

Tôi đang suy nghĩ về việc loại bỏ chúng nhưng không muốn phá vỡ bất cứ thứ gì có thể sử dụng nó, nhưng tôi chưa bao giờ thấy bất cứ điều gì làm như vậy, và không biết những gì có thể. Tương tự với các nhóm mặc định (tty, mem, v.v.) mà tôi chưa từng thấy bất kỳ người dùng nào thuộc về.


Nếu bạn cho tôi một chút thời gian, tôi sẽ cho bạn một câu trả lời hay. Tôi chỉ là một ông trùm chậm chạp. Nó có thể là 30 phút trở lên.
Eyoung100

Điểm chính của tất cả các nhóm này là dành cho các chương trình id nhóm-id.
Barmar

2
Câu hỏi đầu tiên rất gần với câu hỏi này .
Leiaz

@ECarterYoung: Tất nhiên bạn có thể mất thời gian, cảm ơn vì điều này!
Horgix

@Leiaz: Tôi nhận ra điều đó nhưng vẫn muốn hỏi "Sẽ có tệ khi có một nhóm" người dùng "hoặc" người quản lý "hoặc bất cứ điều gì bạn muốn gọi đó là nhóm mặc định cho mọi người dùng thay vì có nhóm của họ?" một phần, và giữ những gì trước đây như là một giới thiệu. Tôi chủ yếu đăng trên StackOverflow nhưng được hướng dẫn ở đây.
Horgix

Câu trả lời:


13

Nhóm người dùng

Tôi cũng không thấy nhiều tiện ích trong các nhóm trên mỗi người dùng. Trường hợp sử dụng chính là nếu người dùng muốn cho phép "bạn bè" truy cập vào tệp của họ, họ có thể thêm người dùng bạn bè vào nhóm của họ. Vài hệ thống tôi đã gặp thực sự sử dụng nó theo cách này.

Khi USERGROUPS_ENABin /etc/login.defsđược đặt thành "không", useraddthêm tất cả người dùng đã tạo vào nhóm được xác định /etc/default/useraddbởi GROUPtrường. Trên hầu hết các bản phân phối, phần này được đặt thành GID 100thường tương ứng với usersnhóm. Điều này không cho phép bạn có một quản lý người dùng chung chung hơn. Sau đó, nếu bạn cần kiểm soát tốt hơn, bạn có thể thêm các nhóm này theo cách thủ công và thêm người dùng vào chúng có ý nghĩa.

Các nhóm được tạo mặc định

Hầu hết trong số chúng đến từ những lý do lịch sử, nhưng nhiều người vẫn còn sử dụng hợp lệ ngày nay:

  • đĩa là nhóm sở hữu hầu hết các thiết bị ổ đĩa
  • lp sở hữu cổng song song (và đôi khi được cấu hình cho quyền quản trị trên cốc)
  • uucp thường sở hữu các cổng nối tiếp (bao gồm cả cổng nối tiếp USB)
  • cdrom là cần thiết để gắn đặc quyền trên ổ đĩa cd
  • Một số hệ thống sử dụng bánh xe cho quyền sudo; một số thì không
  • Vân vân.

Các nhóm khác được sử dụng bởi các kịch bản nền. Ví dụ: mantạo các tệp tạm thời và như vậy khi nó chạy; quá trình của nó sử dụng nhóm người đàn ông cho một số các tệp đó và thường tự dọn sạch.


Theo Thông số kỹ thuật lõi cơ sở tiêu chuẩn của Linux , chỉ có 3 người dùng là root, bin và daemon là hoàn toàn bắt buộc . Các lý do đằng sau các nhóm khác là:

Mục đích của việc chỉ định người dùng và nhóm tùy chọn là để giảm nguy cơ xung đột tên giữa các ứng dụng và phân phối.

Vì vậy, có vẻ như tốt hơn là giữ các nhóm này tại chỗ. Về mặt lý thuyết có thể loại bỏ chúng mà không bị vỡ, mặc dù đối với một số thứ "bí ẩn" có thể bắt đầu không hoạt động đúng (ví dụ: một số trang người đàn ông không hiển thị nếu bạn giết nhóm đó, v.v.). Sẽ không có hại gì khi để chúng ở đó và thường cho rằng tất cả các hệ thống Linux sẽ có chúng.


Tôi có thể tìm thêm ở đâu về người đàn ông tạo tệp tạm thời? Với trang người đàn ông đã mở, ps aux | grep mankhông hiển thị cho tôi bất kỳ quy trình nào chạy trong nhóm người đàn ông và find -group man /cũng không hiển thị cho tôi bất cứ điều gì. Đã thử với man 2.6.7.1 trên bản cài đặt Archlinux tiêu chuẩn.
Horgix

4

Câu hỏi 1: Lý do cho cùng một người dùng và nhóm

Xin chào, tôi là ecyoung và bạn là horgix. Chúng tôi đi làm hàng ngày và đăng nhập vào cùng một Máy chủ Linux như các lập trình viên. Một ngày trước, cách đây không lâu, quản trị viên hệ thống của chúng tôi đã quyết định giúp bản thân người dùng tạo và bảo trì dễ dàng hơn, vì vậy anh ta đã tắt USERGROUPS_ENABtùy chọn và đưa tất cả người dùng hiện tại vào usersnhóm mới .


Điều này đã giúp việc tạo người dùng dễ dàng hơn nhưng không bảo trì mà bạn thấy vì tất cả người dùng có thể truy cập tất cả các tệp người dùng khác. Trong môi trường doanh nghiệp, điều này là không lớn không phải do những thứ như Sarbanes OxleyPhân chia nhiệm vụ . Nếu tôi tạo Tệp A, Bit nhóm được đặt thành Nhóm người dùng, điều đó có nghĩa là Tất cả người dùng ít nhất có thể đọc Tệp A. Nếu quản trị viên hệ thống lười biếng, thì trong một số trường hợp, tất cả người dùng có thể tệp RW A. Điều này đánh bại Sarbanes Oxley và SoD vì các bộ phận riêng biệt sẽ không thể đọc được nhiều tài liệu của người khác.


Với Người dùng / Nhóm được bật nếu tôi tạo tài liệu dưới dạng ecyoung thì chỉ tôi mới có quyền rwx đối với tài liệu đó. Vì không có ai khác trong nhóm của tôi, khi họ mở tài liệu của tôi, họ thấy một trang trống có cảnh báo. Điều này thi hành Sarbanes-Oxley và SoD. Nếu tôi mời những người dùng khác, những người dùng đó được phép truy cập rw và bằng cách đó tôi biết rằng những gì họ thấy sẽ không quay lại cắn tôi hoặc họ. Như những người khác đã nói, nếu ở nhà, sự tách biệt đó có thể không quan trọng đối với bạn. Nếu bạn xác định điều đó, thì bạn có thể tắt tùy chọn một cách an toàn và tất cả người dùng sẽ được thêm vào một usersnhóm có GID là 100. Xem Câu hỏi 2 bên dưới.

Giả thuyết :
Bạn làm việc trong CNTT và Louis làm việc trong Bảng lương. Louis giữ bảng Thuế và bảng lương trong thư mục nhà của cô ấy, nhưng bạn đều thuộc nhóm người dùng, vì vậy bạn mở thư mục nhà của cô ấy vì nó được đánh dấu + r cho người dùng và tìm bảng tính của cô ấy. Bạn tìm thấy mức lương của mình được liệt kê, cùng với Joe's và Fred's. Bạn có nghĩ Joe và Fred muốn bạn biết mức lương của họ không ??


Câu hỏi 2: ID nhóm từ 0 đến 500

ID nhóm và ngược lại 0 - 500 của ID người dùng được dành riêng cho tài khoản hệ thống và quyền truy cập thiết bị. Xem bảng nhóm hệ thống được cấu hình trước để biết danh sách Tài khoản chuẩn. Vui lòng không xóa các tài khoản này bằng tay. Ví dụ: nếu bạn muốn xóa ftp người dùng, hãy xóa daemon ftp bằng hệ thống quản lý gói của bạn. Làm như vậy cũng sẽ xóa tài khoản hệ thống. Dịch vụ hệ thống bao gồm nhưng không giới hạn ở:

  • Dịch vụ in CUPS
  • Máy chủ MySQL
  • Máy chủ FTP
  • Máy chủ web Apace
  • Ổ cắm máy chủ X cho kết nối từ xa
  • Hệ thống âm thanh ALSA Daemon
  • Dịch vụ DBUS

Có những người khác, vì vậy nếu những người đọc khác muốn thêm hoặc xóa khỏi danh sách Dịch vụ ở trên, vui lòng làm như vậy.


5
Đẹp giả thuyết, nhưng một thất bại. 1. Quyền mặc định thường được che dấu 022, có nghĩa là những người khác vẫn có quyền truy cập đọc. 2. Sysad không chỉ lười biếng, mà còn bất tài, vì anh ta nên tạo các nhóm theo bộ phận và chỉ định nhóm chính xác trong quá trình tạo tài khoản, thay vì gán tất cả cho một số nhóm. Các USERGROUPS_ENABnên vẫn tắt sau đó. Vô hiệu hóa USERGROUPS_ENAB! = Đặt tất cả người dùng trong cùng một nhóm.
muru

@ECarterYound cho phần đầu tiên: Tôi hiểu ý của bạn về bảo vệ truy cập và sửa lỗi cho tôi nếu tôi sai nhưng việc tất cả người dùng trong một usersnhóm không phải là vấn đề với quản lý quyền thích hợp đối với các nhóm, điều đó không hoàn toàn giống nhau quyền đối với nhóm hơn chủ sở hữu. Vì vậy, điểm tốt duy nhất của việc USERGROUPS_ENABbật là có bảo trì dễ dàng hơn vì nó cho phép bạn giữ quyền mặc định khi tạo tệp và thư mục trong khi vẫn bị hạn chế quyền truy cập cho người dùng khác?
Horgix

Điều đó sẽ đúng, nhưng nhiều người không quản lý Nhóm chính xác nếu họ là người dùng gia đình. Tôi không thể xác minh điều này cho chắc chắn, nhưng tôi tin rằng các nhà bảo trì đã tạo tùy chọn để tăng cường quản lý quyền.
Eyoung100

3

Nếu tất cả chúng ta đều chia sẻ một nhóm mặc định, như ngày xưa, thì chúng ta cần đặt ô của mình thành 077 để chặn nhóm. Nếu mặc định là tôi, thì tôi có thể đặt umask thành 027, bây giờ nếu tôi đặt một thư mục tệp thành một nhóm chia sẻ, nhóm này có thể đọc. Tôi cũng không phải loay hoay với các chế độ.

Đây chỉ là một ví dụ, nhưng nói chung nó là một cách để vô hiệu hóa các nhóm, cho đến khi bạn cần chúng, theo cách giúp chúng dễ dàng bật và quản lý hơn.


1

Các nhóm theo người dùng cho phép bạn có cả "quyền riêng tư trong thư mục nhà" cũng như "cộng tác dễ dàng trong các thư mục dùng chung". Không có nhóm trên mỗi người dùng, bạn có thể có hoặc không có cả hai. Chi tiết theo:

Unix là một hệ thống nhiều người dùng, cho dù đó là máy chủ tệp công ty hay máy tính có 2 người dùng. "Quyền riêng tư trong thư mục nhà của bạn" có thể được nhận ra bằng nhiều cách:

Đặt "umask 077" để các tệp được tạo bằng rw cho bạn và không có quyền cho người khác. Ngoài ra, 027 hoặc 022 để một số hoặc tất cả có thể đọc nhưng không ghi tệp của bạn. Nhược điểm rõ ràng là bạn không thể cộng tác trong một thư mục dùng chung vì những người khác không thể làm việc trên các tệp bạn tạo ở đó do các quyền nghiêm ngặt. Bạn có thể thay đổi quyền trên các tệp như vậy, nhưng đó là "quá nhiều công việc" và thường bị lãng quên.

Để cộng tác, bạn muốn một cái gì đó như "umask 7" để cả bạn và nhóm sở hữu có thể đọc và ghi các tệp bạn tạo. Điều này rất tốt cho các thư mục và nhóm được chia sẻ bao gồm tất cả những người cần truy cập chung. Nhưng bạn mất sự riêng tư trong thư mục nhà của bạn!

Nhóm trên mỗi người dùng là giải pháp! Bạn sử dụng umask 7, vì vậy tất cả các tệp bạn tạo sẽ được "rw cho bạn và rw cho nhóm". Các tệp trong thư mục chính của bạn được tạo với nhóm cá nhân của bạn dưới dạng "nhóm sở hữu", vì vậy không ai khác có thể truy cập các tệp đó mặc dù có quyền "nhóm rw". Bởi vì không ai ngoài bạn thuộc nhóm cụ thể đó.

Bạn vẫn có thể cộng tác trong các thư mục được chia sẻ. Các tệp trong thư mục dùng chung được "rw" cho nhóm sở hữu và sysadmin thiết lập thư mục dùng chung để nhóm chia sẻ (được gọi là cộng tác viên) sẽ là chủ sở hữu nhóm cho các tệp ở đó. Điều này được thực hiện bằng cách tạo nhóm cộng tác viên này, với tất cả người dùng cộng tác là thành viên. Sau đó, quản trị viên đặt quyền sở hữu nhóm của thư mục dùng chung thành "cộng tác viên" và đặt quyền SETGID cho thư mục dùng chung. Với SETGID trên, mọi thứ được tạo trong thư mục dùng chung sẽ có cùng chủ sở hữu nhóm với thư mục dùng chung - tức là nhóm "cộng tác viên". Và với umask 7 (hoặc thay thế 2), mọi người trong nhóm này sẽ có quyền truy cập đọc + ghi và do đó có thể cộng tác.


0

Ban đầu, các quy trình Unix có thể thuộc về một nhóm tại một thời điểm (trước đây từng có một chgrp(1)lệnh, yêu cầu mật khẩu nhóm được lưu trữ trong trường mật khẩu tiền đình trong /etc/groups). Các hệ thống Plus được sử dụng bởi một nhóm người dùng chặt chẽ. Thật hợp lý khi có tất cả mọi người trong usersnhóm và chia sẻ nội dung trên toàn hệ thống bằng quyền của nhóm. Không có sự quan tâm bảo mật thực sự, ít nghi ngờ của hàng tá người dùng. Tất cả mọi thứ là địa phương, trên cùng một máy. Không có mạng để chia sẻ công cụ, ví dụ như thông qua một blog hoặc như vậy.

Các hệ thống Unix ngày nay có hàng trăm người dùng, yêu cầu bảo mật chặt chẽ hơn và người dùng (và quy trình) có thể thuộc về một số nhóm. Cung cấp cho mỗi người dùng (nhiều người không biết gì) một nhóm nhà và cho phép đi lạc từ đó để chia sẻ. Hoặc sử dụng ACL.

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.