Người dùng hệ thống và người dùng dịch vụ riêng biệt


8

Chúng ta đều biết rằng chúng ta có người dùng hệ thống và người dùng dịch vụ. Tôi đang tìm cách tách họ thành người dùng hệ thống và danh sách người dùng dịch vụ.

Không có cách nào khác ư ?

Câu trả lời:


7

Dựa trên gid, người dùng hệ thống và người dùng dịch vụ có thể được tách rời như sau,

/etc/passwdchứa danh sách cho tất cả người dùng cùng với một số thông tin khác. Người dùng dịch vụ hoặc người dùng thực có gidlớn hơn hoặc bằng 1000. Vì vậy, một danh sách người dùng thực có thể được lấy là,

awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd

Ngoài ra, một danh sách người dùng hệ thống ( gid<1000) có thể được trích xuất dưới dạng,

awk -F: '($3<1000){print $1}' /etc/passwd

Làm thế nào nó hoạt động

Nội dung của /etc/passwdlà như thế nào,

    root:x:0:0:root:/root:/bin/bash
    ...
    souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash

Khi sử dụng awkvới -F:nó, phân chia nội dung của một dòng thành nhiều trường được coi :là dấu tách trường. Trường đầu tiên chứa tên người dùng và trường thứ ba cógid .

Do đó để trích xuất người dùng thực, awkchỉ cần kiểm tra giá trị của trường thứ ba lớn hơn bằng 1000 và không phải là không có người dùng và in trường đầu tiên, tức là tên người dùng.

Để liệt kê tất cả người dùng hệ thống, chỉ cần kiểm tra gidít hơn 1000 và in tên người dùng.

Biên tập

Như bạn muốn liệt kê root(gid = 0) trong danh sách người dùng thực. Nhận người dùng thực sự như,

awk -F: '($3==0)||($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd

Nhận người dùng hệ thống như,

awk -F: '($3<1000)&&($1!="root"){print $1}' /etc/passwd

Lưu ý tôi luôn bỏ qua nobodyngười dùng.


Làm thế nào nó có thể chăm sóc người dùng root?
rdʒɑ

không hiểu quan điểm của bạn? bạn sẽ nhận được root như người dùng hệ thống. Bạn có muốn bao gồm root trong danh sách người dùng thực sự?
souravc

vâng vì anh cũng là người dùng.
rɑːdʒɑ

@rajagenupula bây giờ có ổn không?
souravc

Tôi muốn có người dùng root trong danh sách người dùng thực @S
rɑːdʒɑ

2

Để liệt kê cục bộ (người dùng hệ thống) hơn có thể đăng nhập và có homedir và GID dưới 1000

 cat /etc/passwd | cut -d: -f 1,3,6 | grep "[1-9][0-9][0-9][0-9]" | grep "/home" | cut -d: -f1

Để liệt kê tất cả người dùng khác: (chủ yếu là người dùng hệ thống và có GID dưới 1000):

cat /etc/passwd | cut -d: -f 1,3,6 | grep -v "[1-9][0-9][0-9][0-9]"  | cut -d: -f1

1
ID nhóm người dùng gốc và ID người dùng chưa đến 1000 đúng. Cảm ơn bạn đã trả lời
rdʒɑ

@rajagenupula có chắc chắn. chỉ root là ngoại lệ. và trong ubfox nói chung, root không thể đăng nhập theo mặc định.
kamil
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.