Quản trị người dùng Linux thông qua UIDs và GIDs

Chia sẻ

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

 

Chia sẻ