Sự khác biệt giữa tài khoản người dùng và dịch vụ là gì?


15

Tôi muốn biết sự khác biệt giữa tài khoản người dùng và dịch vụ.

Tôi biết rằng ví dụ như Jenkinsđược cài đặt vào Ubuntu không phải là người dùng, mà là tài khoản dịch vụ .

  1. Sử dụng tài khoản dịch vụ là gì?
  2. Khi chúng ta cần chúng?
  3. Làm cách nào để tạo tài khoản dịch vụ?

Câu trả lời:


17

Tài khoản người dùng được sử dụng bởi người dùng thực, tài khoản dịch vụ được sử dụng bởi các dịch vụ hệ thống như máy chủ web, đại lý vận chuyển thư, cơ sở dữ liệu, v.v ... Theo quy ước và chỉ theo quy ước, tài khoản dịch vụ có ID người dùng trong phạm vi thấp, ví dụ <1000 hoặc hơn . Ngoại trừ UID 0, tài khoản dịch vụ không có bất kỳ đặc quyền đặc biệt nào. Tài khoản dịch vụ có thể - và thường làm - sở hữu các tài nguyên cụ thể, thậm chí các tệp đặc biệt của thiết bị, nhưng chúng không có các đặc quyền giống như siêu người dùng.

Tài khoản dịch vụ có thể được tạo như tài khoản người dùng thông thường (ví dụ: sử dụng useradd). Tuy nhiên, tài khoản dịch vụ thường được người quản lý gói tạo và cấu hình khi cài đặt phần mềm dịch vụ. Vì vậy, ngay cả khi là quản trị viên, bạn hiếm khi quan tâm trực tiếp đến việc tạo tài khoản dịch vụ.

Vì lý do chính đáng: Trái ngược với tài khoản người dùng, tài khoản dịch vụ thường không có vỏ đăng nhập "phù hợp", tức là chúng có /usr/sbin/nologinvỏ đăng nhập (hoặc, trở lại vào thời xưa, /bin/false). Hơn nữa, tài khoản dịch vụ thường bị khóa, tức là không thể đăng nhập (đối với truyền thống /etc/passwd/etc/shadowđiều này có thể đạt được bằng cách đặt hàm băm mật khẩu thành các giá trị tùy ý như *hoặc x). Điều này là để làm cứng các tài khoản dịch vụ chống lại lạm dụng ( phòng thủ theo chiều sâu ).

Có tài khoản dịch vụ riêng cho mỗi dịch vụ phục vụ hai mục đích chính: Đây là biện pháp bảo mật để giảm tác động trong trường hợp xảy ra sự cố với một dịch vụ ( ngăn cách ) và đơn giản hóa việc quản trị vì việc theo dõi tài nguyên thuộc về dịch vụ nào trở nên dễ dàng hơn . Xem này hay này câu trả lời về các vấn đề có liên quan để biết thêm chi tiết.


4

Ban đầu, người dùng được dự định tương ứng với một người sử dụng hệ thống, do đó có tên. Mỗi quy trình chạy như một người dùng cụ thể và mỗi tệp được sở hữu bởi một người dùng cụ thể. Một người dùng đặc biệt, được gọi là root, được sử dụng cho những thứ không thuộc về bất kỳ người dùng cụ thể nào của con người, tức là chính hệ điều hành. Vì root tương ứng với chính hệ điều hành, nó có tất cả các đặc quyền.

Mọi người sớm nhận thấy rằng thật thuận tiện khi tạo nhiều người dùng hệ thống, không có đặc quyền rộng rãi. Điều này cho phép cách ly các dịch vụ khác nhau chạy trên máy, để chúng không giẫm lên ngón chân của nhau. Tài khoản dịch vụ (hoặc tài khoản hệ thống của người dùng, hai thuật ngữ này là từ đồng nghĩa) là một thuật ngữ tương ứng với một dịch vụ chạy trên hệ thống, thay vì một người sử dụng hệ thống. Bạn thường có một tài khoản dịch vụ cho mỗi tác vụ đang chạy trên hệ thống có tập đặc quyền riêng (ví dụ: tệp riêng, cổng mạng riêng, v.v.).

Không có định nghĩa chính thức về tài khoản hệ thống / dịch vụ của con người. Hạt nhân không quan tâm (ngoài việc cấp nhiều đặc quyền cho người dùng với UID 0). Hầu hết các lệnh quản trị cũng không quan tâm. Một số khác biệt điển hình là:

  • Một người dùng con người có tên thật như là John John Doe, trong khi một người dùng hệ thống có một cái tên mô tả như da Nasal daemon hay không có gì cả.
  • Một người sử dụng con người có một vỏ đăng nhập thực tế (ví dụ /bin/shhay /bin/bashhay /bin/csh. Một số người dùng hệ thống có một vỏ (hầu như luôn luôn /bin/sh), những người khác không, tùy thuộc vào cách họ có nghĩa là để được sử dụng (ví dụ như su foođòi hỏi foophải có một vỏ).
  • Một người dùng thường có mật khẩu - nhưng không phải lúc nào cũng vậy, ví dụ người dùng chỉ ở xa có thể chỉ có khóa SSH. Lưu ý rằng trên các thông báo hiện đại, mật khẩu không có /etc/passwdtrong một số tệp khác như /etc/shadow.
  • Thư mục nhà của người dùng thường ở dưới /home(hoặc một số vị trí cụ thể theo trang web), trong khi thư mục nhà của người dùng hệ thống thường không ở dưới /homevà có thể không tồn tại (nhưng vẫn có ngoại lệ).
  • Hầu hết các trang web chỉ định một phạm vi ID người dùng cho người dùng hệ thống và phạm vi phân biệt đối với người dùng. Bảo lưu 100 Voi65533 hoặc 500 Mạnh65533 hoặc 1000 Khăn65533 là điển hình và hầu hết các bản phân phối được thiết lập để bắt đầu phân bổ ID người dùng thực từ 500 hoặc 1000.

Trên các trang web có tài khoản được chia sẻ trên nhiều máy, thường có một máy chủ trung tâm chứa danh sách người dùng, có thể truy cập qua NIS hoặc LDAP . Các passwdmục trong /etc/nsswitch.confchỉ định nơi để tìm thông tin người dùng. Thông thường có người dùng hệ thống trong người dùng cục bộ /etc/passwdvà người dùng thực từ cơ sở dữ liệu toàn mạng, nhưng đôi khi có người dùng hệ thống trong cơ sở dữ liệu toàn mạng (để thực thi UID nhất quán, tạo điều kiện sao chép dữ liệu và máy chủ), và đôi khi có người dùng trong tệp cục bộ (để cho phép họ đăng nhập ngay cả khi mạng bị hos).

Tài khoản người truy cập được ngụy trang dưới dạng người dùng hệ thống thường không có tên thật, nhưng có vỏ đăng nhập và mật khẩu được đặt hoặc khóa SSH, trong khi có ID người dùng trong phạm vi hệ thống. Trên thực tế, sẽ tốt hơn nếu sử dụng tài khoản hệ thống thực tế mà việc xóa sẽ khiến một số dịch vụ ngừng hoạt động. Nhưng bạn không thể có bất kỳ quy tắc khó và nhanh nào để phát hiện các cuộc tấn công tiềm năng: theo định nghĩa, kẻ tấn công không tuân theo quy tắc.

Tài khoản dịch vụ và tài khoản con người được quản lý bởi cùng một lệnh và được ghi lại trong cùng một tệp. Các lệnh tạo tài khoản có thể có các tùy chọn để đặt mặc định hợp lý cho người dùng so với người dùng dịch vụ, ví dụ: chọn ID người dùng trong phạm vi phù hợp và nhắc nhập mật khẩu cho người và vô hiệu hóa xác thực mật khẩu cho dịch vụ. Ví dụ, adduservs adduser --systemhoặc useraddvs useradd -rtrên Linux.


3
    1. một tài khoản dịch vụ, còn gọi là tài khoản kỹ thuật là một tài khoản được thiết kế để chỉ được sử dụng bởi một dịch vụ / ứng dụng, không phải bởi người dùng thông thường.
    1. Các nhà phát triển ứng dụng và dịch vụ muốn các tài khoản này hạn chế các quyền và đặc quyền của quy trình liên quan thay vì chạy các quy trình của họ dưới quyền root. Dịch vụ như bắt đầu bởi init, systemdhoặc tương tự, mà chạy như là người chủ, nhanh chóng hạ xuống tài khoản dịch vụ để hạn chế rủi ro. Tùy thuộc vào HĐH được sử dụng, các tài khoản ứng dụng có thể được cấp nhiều đặc quyền hơn tài khoản thông thường, ví dụ: quyền liên kết với cổng TCP đặc quyền hoặc ngược lại, các đặc quyền của chúng bị giảm so với người dùng thông thường, ví dụ như từ chối các quy trình dịch vụ gọi fork/ exec. Trong trường hợp như vậy, không cần thiết phải hạ cấp các dịch vụ xuống tài khoản dịch vụ, chúng có thể được bắt đầu với nó.
    1. Bạn không cần nhưng chỉ cần tạo một tài khoản mà không cần mật khẩu có thể sử dụng được và với vỏ không hoạt động (ví dụ /bin/false) và người dùng thông thường sẽ không thể sử dụng được, tức là sẽ không có cách nào để đăng nhập cục bộ hoặc từ xa (ví dụ: thông qua ssh) sử dụng tên tài khoản. Giống như hầu hết các hạn chế, sử dụng tài khoản root hoặc sudocho phép khắc phục nó.

1

Một tài khoản dịch vụ có thể không có khả năng sử dụng shell chẳng hạn. Nó được sử dụng để thực thi các dịch vụ (daemon) với phạm vi và đặc quyền bị hạn chế. Ý kiến ​​của tôi là bạn có thể tạo nó như một người dùng thông thường, chỉ cần cẩn thận với các quyền và thành viên nhóm. Tuy nhiên, hầu hết thời gian bạn không làm vì các chương trình tự động tạo chúng trong khi cài đặt. Hãy nhìn vào/etc/passwd root:x:0:0:root:/root:/bin/bash

0 là UID, nó đặc trưng cho hệ thống phân cấp của tài khoản trong không gian người dùng, root nằm trên tất cả mọi người, sau đó bạn có thành viên nhóm :rootthư mục chính /rootcuối cùng là vỏ được tài khoản sử dụng /bin/bashđể 'đăng nhập' hệ thống.

Bạn có thể sử dụng /usr/sbin/nologincho tài khoản mà bạn không muốn đặc quyền đăng nhập.

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.