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/sh
hay /bin/bash
hay /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 foo
phả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/passwd
trong 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 /home
và 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 passwd
mục trong /etc/nsswitch.conf
chỉ đị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/passwd
và 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ụ, adduser
vs adduser --system
hoặc useradd
vs useradd -r
trên Linux.