Uid linux là gì

Linux sẽ tự động gán UID và GID cho bạn, nhưng một số bạn muốn tự mình tuỳ chỉnh những thông số này

Quản lí tài khoản người dùng là một trong rất nhiều việc mà sysadmin phải làm, nó bao gồm nhiều khía cạnh như tạo tài khoản, xoá tài khoản, phân quyền, đặt hạn sử dụng, thiết lập các tiêu chuẩn mật khẩu, thiết lập các tính năng bảo mật, thiết lập UIDs và GIDs để giúp hệ thống gọn gàng và dễ bảo trì. Phần một sẽ đề cập tới những câu lệnh hữu ích. Bài viết này sẽ đề cập tới việc quản lí người dùng thông qua user IDs (UIDs) và group IDs (GIDs)

Giới thiệu về UIDs và GIDs

Mặc định, hệ thống Linux sẽ tự động gán UIDs và GIDs cho mỗi tài khoản mới theo thứ tự số bắt đầu bằng 1000. Hay nói cách khác, nếu bạn tạo mới một user trong quá trình cài đặt nó sẽ UID = 1000 và GID = 1000, ví dụ như ở dưới

khess:x:1000:1000:Ken Hess:/home/khess:/bin/bash

Nói như trên thì bất cứ tài khoản nào có UID dưới 1000 đều được dành co các tài khoản hệ thống, dịch vụ và các tài khoản đặc biệt khác, tuy có sự giới hạn 999 tài khoản nhưng con số này là đủ để đáp ứng cho việc vận hành hệ thống trong nhiều năm. Với kinh nghiệm quản trị hệ thống Linux hơn 20 năm, cá nhân tôi chưa bao giờ sử dụng hết 999 tài khoản đó.

Tài khoản root sẽ được gán UID = 0 và GID = 0. Bạn có thể thử đổi tên tài khoản root thành một tên bất kì, và tạo một tài khoản hệ thống mới có tên root, và để hệ thống gán UID và GID tự động cho nó. Như vậy đặc quyền của một tài khoản không phải nằm ở cái tên, mà chính UID và GID đã cung cấp đặc quyền cho nó.

Như bạn có thể thấy ở list dưới đây, tài khoản thông thường được gán UID và GID theo thứ tự số từ 1000. UID và GID luôn luôn giống nhau để giúp mọi thứ được gọn gàng

khess:x:1000:1000:Ken Hess:/home/khess:/bin/bash
msmith:x:1001:1001::/home/msmith:/bin/bash
mjones:x:1003:1003:Mary Jones:/home/mjones:/bin/bash
jjones:x:1004:1004:John Jones:/home/jjones:/bin/bash
djones:x:1005:1005:Don Jones:/home/djones:/bin/bash

Không có sự kì diệu gì khi cài đặt cả, tất cả mọi thứ hệ thống đều đã làm giúp bạn, bạn không phải lo lắng gì cả
Nhưng nếu chính sách của công ty bạn có những yêu cầu khác nhau về thông tin cho mỗi user và group. Hoàn toàn khả thi nếu công ty bạn muốn UIDs và GIDs được gán dựa trên mã ID nhân viên hoặc một ID nào khác (Mong rằng nó không phải số CMND). Hoặc nếu bạn muốn gán GIDs dựa trên những quyền hạn thay cho việc thêm users vào một GID trong file /etc/group. Điều này dễ dàng thêm bằng lệnh useradd.
Dưới đây là list user trong file /etc/group

khess:x:1000:
msmith:x:1001:
mjones:x:1003:
jjones:x:1004:
djones:x:1005:

Tuỳ biến UIDs và GIDs

Theo truyền thống, admin muốn thêm một user vào một non-primary groups khi tạo tài khoản, sử dụng công cụ useradd với tham số -G. Hãy đảm bảo liệt kê tất cả những nhóm thứ cấp sau câu lệnh -G, ngăng cách bởi dấu phẩy và khôg có khoản trắng. Câu lệnh dưới đây cho phép hệ thống chọn UID và primary GID từ số có sẵn tiếp theo trong hệ thống như cũng thêm user jdoe vào nhóm sysadmin và helpdesk

sudo useradd -G sysadmin,helpdesk jdoe

Nếu bạn muốn chỉ định primary group với tham số -g, thì group phải được tạo sẵn. Ví dụ, nếu bạn nhập câu lệnh dưới

sudo useradd -u 10600 -g 10600 -G sysadmin,helpdesk jdoe

Bạn sẽ nhận được thông báo useradd: group ‘10600’ does not exist. Bạn cần tạo group này trước khi thực thi câu lệnh trên

groupadd 10600
sudo useradd -u 10600 -g 10600 -G sysadmin,helpdesk jdoe

Quản lí quyền của group

Khi user tạo ra một files, users đó có quyền đọc (r) và ghi (w), group séco quyền đọc, và những thành phần khác sẽ có quyền đọc (rw-r–r–), hay theo số là 644. Quyền thực thi (x) không được đưa vào ban đầu. Vì vậy, với một quản trị viên hệ thống, nếu một thành viên trong group yêu cầu quyền thực thi trên file hoặc một nhóm file, hãy chỉ gán quyền thực thi cho group

sudo chmod g+x coolscript.sh

Người dùng có thể tự thay đổi quyền nếu họ là chủ sở hữu nhưng thường sẽ không làm như vậy vì sợ làm sai. Chỉ chủ sở hữu hoặc người dùng root mới có thể thay đổi quyền trên tệp ngay cả khi nhóm có quyền ghi vào tệp. Quyền ghi có nghĩa là một thành viên trong nhóm có thể chỉnh sửa hoặc xóa tệp.

Đảm bảo rằng các thư mục nhóm được chia sẻ có quyền ghi  cho nhóm và các tệp cần được sửa đổi bởi các thành viên nhóm cũng có quyền ghi. Một số bạn có kiến ​​thức nâng cao hơn về phân quyền có thể hỏi tại sao tôi không đề cập đến lệnh chattr (thay đổi thuộc tính) và đó là một câu hỏi hay. Lệnh chattr không thuộc phạm vi của bài viết này nhưng sẽ được đề cập trong một bài viết sau, chỉ tập trung vào chattr và các tùy chọn của nó.

Bài viết được dịch từ RedHat

Uid linux là gì
Bài viết dưới đây sẽ cùng bạn tìm hiểu về UID:

– nó mang ý nghĩa gì?

– tìm nó ở đâu?

– và nên quản lý nó như thế nào cho hiệu quả?

1>  UID là gì?

UID (viết tắt của User Identification) là môt con số nguyên dương duy nhất được hệ điều hành Linux gán cho mỗi tài khoản người dùng. Hệ thống sẽ sử dụng UID để nhận diện user, trái với con người phân biệt các tài khoản qua Username.

2>  Xem các UID ở đâu?

File /etc/passwd lưu trữ thông tin về tất cả user, mỗi user nằm trên 1 dòng bao gồm các trường: Username, Password dạng mã hóa (nếu sử dụng shadow password thì trường này được thay bằng ký tự x), UID, GUID, Gesco (chứa thông tin phụ như Full name, Phone number..), Home directory, Shell mà user sẽ sử dụng.

Bạn sử dụng lệnh cat để đọc file này:

$ cat /etc/passwd

Uid linux là gì

Như hình trên thì trường thứ 3 chính là giá trị UID.

3>   Các UID mang ý nghĩa đặc biệt

Từ phiên bản Linux Kernel 2.4 trở lên, UID là số nguyên 32-bit không dấu (vùng giá trị từ 0 -> 4.294.967.296). Tuy nhiên, bạn nên đặt UID trong khoảng 0 -> 65.534 để đảm bảo tính tương thích với các hệ thống sử dụng Linux Kernel phiên bản thấp hơn 2.4 hoặc với các filesystem chỉ hỗ trợ UID có chiều dài 16-bit.

Một vài UID đặc biệt và dành riêng:

– UID=0: được gán cho tài khoản root – người dùng có đặc quyền cao nhất trong Linux.

– UID=65534: thường được dành riêng cho tài khoản nobody –  người dùng không có bất cứ đặc quyền quản trị nào. UID này thường được dành cho các cá nhân truy cập từ xa tới hệ thống qua FTP hay HTTP.

– UID trong khoảng 1->99: thường được dành riêng cho các tài khoản hệ thống đặc biệt, thường được gọi là các pseudo-users, như wheel, daemon, lp, operator, news, mail, httpd, sshd…

Đây đều là các tài khoản quản trị nhưng lại không nắm giữ tất cả các đặc quyền như root, chúng chỉ đảm nhận một vài công việc chuyên biệt nào đó như: daemon chỉ dùng để quản lý các dịch vụ (start, stop, resume, restart…), httpd cho Web server Apache…

Dĩ nhiên các tài khoản này có nhiều quyền hạn hơn các người dùng bình thường (normal user).

Uid linux là gì

4>  Quản lý các UID

  • Trên 1 số bản phân phối Linux (Distro), các normal user nhận UID lớn hơn 100. Ví dụ, Redhat gán UID cho normal user bắt đầu từ 500, Debian bắt đầu từ 1000. Chính vì sự khác nhau về cách gán UID này, bạn nên tự đặt UID cho các user nếu trong mạng sử dụng nhiều Distro.
  • Ngoài ra, bạn cũng nên dành riêng 1 dải UID cho các tài khoản cục bộ (local account) như 1000-9999, 1 dải khác cho các người dùng truy cập từ xa tới hệ thống qua mạng (remote user) như 10000-65534 để dễ bề quản lý cũng như giúp rà soát các hoạt động của người dùng trong các file log…
  • Cuối cùng, trái với những ý nghĩ truyền thống rằng UID phải là duy nhất cho mỗi người dùng trong cùng 1 hệ thống, bạn vẫn có thể để UID trùng nhau cho các tài khoản có Username khác nhau. Tuy nhiên, việc UID không còn là độc nhất sẽ gây ra các nguy cơ về bảo mật, ví dụ, nếu ai đó thay đổi UID của họ về 0 thì quyền hạn của họ sẽ ngang bằng với root! (các user có cùng UID sẽ có quyền hạn ngang nhau).

Hy vọng bài viết này đã mang lại cho bạn những thông tin hữu ích giúp bạn hiểu rõ hơn bản chất của UID trong Linux.

–manthang.

Trong Linux có bao nhiêu loại user?

User và Group trong Linux hai loại User là Super User (hay thường gọi là Root) và Regular User. Mỗi User còn một mã UID riêng. Mỗi loại User, mỗi User khác nhau quyền trong hệ thống khác nhau phụ thuộc vào hệ thống đã thiết lập cho họ những quyền gì, Super User đã cấp cho họ những quyền gì.

Regular user trong Linux là gì?

Regular user là các user được tạo ra từ super user root. mỗi user khi được tạo ra cũng sẽ có 1 group chứa nó. user root cũng có 1 group chứa nó.

Login vào hệ thống sử dụng lệnh để cho biết user hiện tài là gì?

Đầu ra của lệnh who cung cấp cho bạn tên của user hiện tại, thiết bị đầu cuối họ đăng nhập vào, ngày và giờ đăng nhập. Nếu đó một phiên từ xa, lệnh who cũng cho biết user đó đăng nhập từ đâu.