Sẽ luôn có một cặp UID và GID giống nhau chứ?


11

Tôi phải thay đổi quyền sở hữu tệp / thư mục bằng cách sử dụng. chmodTôi chỉ biết tên người dùng của chủ sở hữu nhưng muốn thay đổi tên nhóm mặc định simultaneosly. Ở giai đoạn này, tên nhóm không được quyết định nên tôi đặt tên người dùng

chown -R username:username path_to_dir

Lệnh có thể chạy cho nhiều sytems / người dùng khác nhau.

Mặc dù tôi đã bắt đầu tìm thấy GID từ người dùng

id username | tr '(=)' ':' | awk -F: '{print $3}

Nhưng đối với kiến ​​thức tôi muốn biết. Cho đến bây giờ các nhà phân tích /etc/passwd /etc/groupsngoại trừ một vài người dùng như "tắt máy, tạm dừng, đồng bộ hóa, opeartor", tất cả người dùng cũng được liệt kê trong các nhóm.

EDIT 1: id -gn tên người dùng cũng là lựa chọn tốt


3
Trong ví dụ thứ hai, bạn đang tìm kiếm id -g username?
dùng1686

1
Hoặc id -gn usernamein tên thay vì ID.
Cristian Ciupitu

Trong Linux, cũng có rất nhiều "nhóm thiết bị" - vd. đĩa, mem, kmem, âm thanh, video, v.v. - không có người dùng tương ứng.
Baard Kopperud

Câu trả lời:


20

Không có gì đảm bảo rằng tên nhóm = usernamesẽ tồn tại.

Kịch bản phổ biến nhất là các quản trị viên hệ thống sử dụng trên Linux đang tạo một người dùng mới cục bộ trên hệ thống mà không có thông số rõ ràng cho nhóm, điều đó có nghĩa là nhóm sẽ được tạo theo mặc định giống như tên người dùng và gán cho người dùng phải có GID mặc định là của nhóm mới được tạo.

Điều này không có nghĩa là một quản trị viên hệ thống khác sẽ làm theo quy trình này và nếu bạn ném các dịch vụ đặt tên khác vào hỗn hợp như NIS hoặc LDAP, nhóm được gán mặc định sẽ có thể không giống với GID mới có tên nhóm giống như tên người dùng.

Vì vậy, bạn không nên dựa vào thực tế là tên người dùng = tên nhóm


Nó cũng có thể không chỉ phụ thuộc vào chính sách quản trị cục bộ mà còn phụ thuộc vào các công cụ đi kèm với các bản phân phối khác nhau. Nhiều trang web sẽ chỉ chấp nhận mặc định được sử dụng bởi các công cụ được cung cấp. Mặc dù hầu hết các bản phân phối mà tôi đã sử dụng trong nhiều năm qua với một useraddtập lệnh mặc định sẽ tạo một nhóm có cùng tên, nhưng không phải tất cả đều có. Lần trước tôi đã sử dụng nó (nhiều, nhiều năm trước), tập lệnh tạo người dùng của slackware mặc định có một nhóm duy nhất usersmà tất cả người dùng được tạo thành thành viên thay thế. docs.slackware.com/slackbook:users cho thấy điều này vẫn có thể xảy ra.
Jules

11

Mặc dù thành ngữ nhóm riêng của người dùng thường được sử dụng trong các hệ thống Linux hiện đại, * nix thực sự không yêu cầu một nhóm chính duy nhất cho mỗi người dùng và một số tài khoản người dùng có thể chia sẻ một nhóm chính chung chung như usershoặc staff.

Ngay cả trong trường hợp thành ngữ UPG được thi hành, không có lý do cụ thể nào mà GID số của một UPG cụ thể phải bằng UID của chủ sở hữu, mặc dù hầu hết các công cụ tạo tài khoản sẽ cố gắng gán UID và GID theo thứ tự, nếu chúng là có sẵn. ID có thể dễ dàng thoát khỏi bước nếu người dùng và / hoặc nhóm cần phải được thống nhất trên nhiều hệ thống (ví dụ: để phù hợp với cổ phiếu NFS có sẵn).


6

Như Ramesh đã chỉ định theo mặc định, UID và GID bằng nhau cho người dùng thông thường. Tuy nhiên, điều này không phải lúc nào cũng đúng, vì vậy bạn không được đưa ra một giả định như vậy vì điều này có thể tàn phá hệ thống của bạn. Việc gán quyền truy cập tệp / thư mục cho một nhóm sai có phần lộn xộn, phải không?

Vì vậy, câu trả lời ngắn gọn: không, UID không phải lúc nào cũng bằng GID. Tuy nhiên, /etc/passwdchứa cả UID và GID của nhóm mặc định trên cùng một dòng nên việc trích xuất chúng khá dễ dàng.


"theo mặc định, UID và GID bằng nhau cho người dùng thông thường" - thực tế, tuyên bố này chỉ đúng nếu bạn thêm "trên một số bản phân phối Linux phổ biến". Vâng, Ubuntu và cộng sự. làm theo cách này, nhưng tôi sẽ xem xét một nhóm "người dùng" phổ biến hơn theo mặc định.
jstarek

Có, nếu chúng tôi đặt mục tiêu chính xác 100% thì bạn đã đúng. Chúng tôi có lẽ sẽ cần thêm hàng tá 'ifs' khác nhau để không bao giờ bỏ lỡ một ngoại lệ nào. Tất cả các bản phân phối dựa trên Debian của tôi (LMDE, Crunchbang, Debian thuần túy) đều hoạt động theo cách này và một CentOS 6.5 tôi cũng có. Xin lưu ý rằng vì tôi không cần thêm số lượng người dùng lớn mà tôi có xu hướng sử dụng adduserhơn là useraddvà mặc định /etc/adduser.confđược đặt để USERGROUPS=yestạo một nhóm cho mỗi người dùng mới. Các nhóm này thường (không phải lúc nào cũng vậy) có cùng GID với UID của người dùng mà họ đã tạo.
Erathiel

2

Từ liên kết này , tôi thấy thông tin dưới đây.

ID người dùng (UID) là một số nguyên dương duy nhất được gán bởi hệ điều hành giống Unix cho mỗi người dùng. Mỗi người dùng được xác định hệ thống bằng UID của nó và tên người dùng thường chỉ được sử dụng làm giao diện cho con người.

UID được lưu trữ, cùng với tên người dùng tương ứng của họ và thông tin cụ thể của người dùng khác, trong /etc/passwdtệp, có thể được đọc bằng lệnh cat như sau:

cat /etc/passwd

Trường thứ ba chứa UID và trường thứ tư chứa ID nhóm (GID), theo mặc định là bằng UID cho tất cả người dùng thông thường.

BIÊN TẬP

Tuy nhiên, như @Karlson chỉ ra rằng không đúng khi UID sẽ bằng GID theo mặc định.

Tuyên bố chỉ đúng nếu không có nhóm thông thường nào được thêm vào riêng biệt và không có nhóm nào được chỉ định rõ ràng trên bất kỳ sáng tạo người dùng nào . Theo mặc định gid cho người dùng thêm tiếp theo = max(gid) + 1. Không có mối tương quan giữa UID và GID được yêu cầu bởi bất kỳ hệ thống * NIX nào mà chúng chỉ xảy ra trùng khớp trong một số trường hợp.

Tham khảo thêm

http: //www.thegeek ware.com/2009/06/useradd-adduser-newuser-how-to-create-linux-users


Tuyên bố cuối cùng là hoàn toàn sai. Chỉ có UID = GID trong trường hợp khi người dùng mới được tạo trên hệ thống cục bộ và GID không được gán rõ ràng cho một nhóm hiện có.
Karlson

Không, nó không hoàn toàn sai, vì nó nói rõ ràng "theo mặc định". Một số làm rõ sẽ được nhiều đánh giá cao ở đây.
Erathiel

1
@Erathiel Theo mặc định GID bằng với GID được chỉ định khi tạo người dùng. Nếu người dùng được tạo cục bộ và không chỉ định GID trong -gcờ trên useraddchương trình sẽ tạo một nhóm cho bạn và trừ khi xảy ra thay đổi GID, nó sẽ = UID. Tuy nhiên, nếu phương pháp tạo không được biết đến, bạn không thể dựa vào thực tế rằng đây sẽ là trường hợp:uid=123456(ME) gid=777(ABC) groups=777(ABC)
Karlson

Trên một số hệ thống, useradd cũng tạo một nhóm cùng tên cho tài khoản. Phụ thuộc vào hương vị của Linux.
Pete

@Karlson, tôi không bao giờ đề cập đến nó sẽ luôn luôn bằng nhau. Nó được quy định rõ ràng rằng theo mặc định, nó bằng với UID cho tất cả người dùng thông thường .
Ramesh
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.