Quản lý người dùng bao gồm tất cả các hoạt động từ tạo người dùng đến xóa người dùng khỏi hệ thống của bạn. Trên Linux, mỗi người dùng được đại diện bởi một tài khoản hệ thống, được lưu trữ trong file /etc/passwd. Mỗi tài khoản hệ thống được định danh bởi một UID (User ID), và có thể có một hoặc nhiều tài khoản liên kết với cùng một UID (các tài khoản này được gọi là tài khoản đồng thời). Các thông tin về người dùng bao gồm tên đăng nhập, UID, GID (Group ID), thư mục nhà, shell mặc định và mật khẩu được lưu trữ trong file /etc/passwd.
Một số câu lệnh quan trọng để quản lý người dùng trên Linux:
- useradd: sử dụng để tạo mới một tài khoản người dùng trên hệ thống.
- userdel: sử dụng để xóa một tài khoản người dùng khỏi hệ thống.
- passwd: sử dụng để đặt lại hoặc thay đổi mật khẩu của một tài khoản người dùng.
- chown: sử dụng để thay đổi chủ sở hữu của một file hoặc thư mục.
- chgrp: sử dụng để thay đổi nhóm sở hữu của một file hoặc thư mục.
Chúng ta có thể quản trị bằng 3 loại công cụ:
- Công cụ đồ họa dễ sử dụng và thích hợp cho người dùng mới, vì nó đảm bảo rằng bạn sẽ không gặp bất kỳ sự cố nào.
- Công cụ dòng lệnh bao gồm các lệnh như useradd, userdel, passwd, vv. Điều này được sử dụng chủ yếu bởi các quản trị viên máy chủ.
- Công cụ thứ ba và rất hiếm khi được sử dụng là chỉnh sửa trực tiếp các file cấu hình cục bộ bằng vi.
File /etc/passwd được sử dụng để lưu trữ thông tin tài khoản người dùng trên hệ thống Linux. Nó chứa một danh sách các tài khoản người dùng, mỗi tài khoản có một số thông tin được lưu trữ trên một dòng riêng biệt, bao gồm tên tài khoản, UID, GID, thông tin về tên hiển thị và thư mục home. Nó cũng bao gồm các thông tin về shell mặc định được sử dụng cho tài khoản người dùng. File /etc/passwd là một file chỉ đọc và thông tin trong file này có thể được sử dụng để quản lý tài khoản người dùng trên hệ thống.
root@wp-hoanghd:~# tail /etc/passwd
lxd:x:105:65534::/var/lib/lxd/:/bin/false
uuidd:x:106:110::/run/uuidd:/usr/sbin/nologin
dnsmasq:x:107:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
landscape:x:108:112::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:109:1::/var/cache/pollinate:/bin/false
sshd:x:110:65534::/run/sshd:/usr/sbin/nologin
ubuntu:x:1000:1000:adminnt:/home/ubuntu:/bin/bash
bind:x:111:113::/var/cache/bind:/usr/sbin/nologin
hoanghd:x:1001:1001::/home/hoanghd:/bin/sh
demo:x:1002:1002::/home/demo:/bin/sh
Nội dung trên có bảy cột được phân tách bằng dấu hai chấm (:). Bắt đầu từ trái qua phải, các cột đại diện cho tên người dùng, x, id người dùng, id nhóm chính, mô tả, tên thư mục chính và một shell đăng nhập.
root
Người dùng root là người quản trị siêu người dùng và có tất cả các quyền để tạo người dùng, xóa người dùng và có thể đăng nhập bằng tài khoản người dùng khác. Người dùng root luôn có id người dùng là 0.
root@wp-hoanghd:~# head -n 1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
useradd
Sử dụng lệnh sau:
useradd -m -d /home/<userName> -c "<userName>" <userName>
Ví dụ:
useradd -m -d /home/xyz -c "xyz" xyz
Lệnh “useradd” được sử dụng để tạo một người dùng mới trên hệ thống Linux. Trong câu lệnh này, tùy chọn “-m” được sử dụng để tạo một thư mục home cho người dùng mới nếu nó chưa tồn tại. Tùy chọn “-d” được sử dụng để chỉ định đường dẫn đến thư mục home của người dùng. Tùy chọn “-c” được sử dụng để thêm một mô tả cho người dùng mới. Tên người dùng mới được cung cấp ở cuối câu lệnh. Vì vậy, câu lệnh này tạo một người dùng mới có tên là “xyz”, tạo một thư mục home cho người dùng mới tại “/home/xyz”, thêm một mô tả “xyz” cho người dùng mới.
root@wp-hoanghd:~# tail -n 1 /etc/passwd
xyz:x:1003:1003:xyz:/home/xyz:/bin/sh
Nó có bảy cột phân tách bằng dấu hai chấm (:) được sắp xếp từ trái sang phải. Các cột đó tương ứng với các thông tin sau:
xyz
: Tên người dùng.x
: Là mật khẩu được mã hóa của người dùng, tuy nhiên trong trường hợp này được ghi nhận là ‘x’ để chỉ ra rằng mật khẩu đã được mã hóa.1003
: User ID (UID) là một số nguyên duy nhất định danh cho người dùng.1003
: Group ID (GID) là một số nguyên định danh cho nhóm mà người dùng thuộc về.xyz
: Mô tả ngắn của người dùng./home/xyz
: Đường dẫn đến thư mục home của người dùng./bin/sh
: Đường dẫn đến shell mặc định được sử dụng bởi người dùng khi đăng nhập vào hệ thống.
/etc/default/useradd
Lệnh “useradd -D” trả về giá trị mặc định của các tùy chọn tạo người dùng trên hệ thống. Đoạn văn bản trên cho thấy các giá trị mặc định này bao gồm:
- GROUP=100: GID mặc định của các tài khoản người dùng mới được tạo là 100.
- HOME=/home: Đường dẫn đến thư mục chính của các tài khoản người dùng mới là “/home”.
- INACTIVE=-1: Số ngày từ lần đăng nhập cuối cùng của tài khoản đến khi tài khoản bị vô hiệu hóa. Giá trị “-1” có nghĩa là tài khoản không bao giờ bị vô hiệu hóa.
- EXPIRE=: Ngày hết hạn của tài khoản người dùng, trống nghĩa là tài khoản không bao giờ hết hạn.
- SHELL=/bin/sh: Chương trình shell mặc định được sử dụng cho các tài khoản người dùng mới là “/bin/sh”.
- SKEL=/etc/skel: Thư mục mẫu chứa các file mẫu cho các tài khoản người dùng mới được tạo.
- CREATE_MAIL_SPOOL=no: Các hộp thư gửi cho người dùng mới không được tạo mặc định.
root@wp-hoanghd:~# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
userdel
Lệnh userdel trong Linux dùng để xóa tài khoản người dùng khỏi hệ thống. Tùy chọn -r được sử dụng để xóa thư mục home và các file liên quan đến người dùng đó. Do đó, nếu chúng ta muốn xóa tài khoản người dùng cùng với thư mục home và các file liên quan đến người dùng đó, thì chúng ta sử dụng tùy chọn -r. Trong trường hợp này, lệnh “userdel -r xyz” sẽ xóa tài khoản người dùng “xyz” khỏi hệ thống và cũng xóa thư mục home và các file liên quan đến người dùng đó.
usermod
usermod -c 'jhonny' john
Lệnh trên đề cập đến lệnh usermod trong Linux, được sử dụng để chỉnh sửa thông tin của người dùng trong hệ thống. Trong trường hợp này, lệnh được sử dụng để thay đổi mô tả của người dùng “john” bằng từ “jhonny”. Cụ thể, cờ “-c” được sử dụng để chỉ định mô tả mới và “john” là tên người dùng cần chỉnh sửa.
/etc/skel/
/etc/skel/
là một thư mục trên các hệ thống Linux, chứa các file mẫu được sử dụng để tạo các tài khoản người dùng mới. Khi một tài khoản người dùng mới được tạo, các file trong thư mục /etc/skel/
sẽ được sao chép vào thư mục home của người dùng đó, giúp người dùng có được các file và cấu hình mặc định khi bắt đầu sử dụng tài khoản của mình. Thông thường, các file trong thư mục /etc/skel/
bao gồm các tập tin cấu hình, các script và các file mẫu, và chúng có thể được tùy chỉnh để phù hợp với yêu cầu của mỗi hệ thống hoặc người dùng cụ thể.
root@wp-hoanghd:~# ls -la /etc/skel/
total 20
drwxr-xr-x 2 root root 4096 Nov 24 20:50 .
drwxr-xr-x 102 root root 4096 Apr 3 22:24 ..
-rw-r--r-- 1 root root 220 Apr 5 2018 .bash_logout
-rw-r--r-- 1 root root 3771 Apr 5 2018 .bashrc
-rw-r--r-- 1 root root 807 Apr 5 2018 .profile
Deleting Home Directories
Bằng cách sử dụng tùy chọn userdel -r, bạn có thể xóa thư mục home cùng với tài khoản người dùng.
Cú pháp:
userdel -r <tên người dùng>
Login Shell
Phần này mô tả về tùy chọn -s
của lệnh usermod
trong Linux, cho phép người dùng thay đổi Shell mặc định cho tài khoản người dùng. Lệnh này được sử dụng để chỉ định Shell sẽ được sử dụng khi người dùng đăng nhập vào hệ thống.
Cú pháp:
usermod -s <newShell> <userName>
Ví dụ:
Nếu muốn thay đổi Shell mặc định của người dùng “john” thành /bin/bash
, ta có thể sử dụng lệnh:
usermod -s /bin/bash john
Lúc này, khi “john” đăng nhập vào hệ thống, Shell mặc định sẽ là /bin/bash
.
chsh
Người dùng có thể thay đổi shell đăng nhập của mình bằng lệnh chsh.
Cả lệnh chsh và chsh -s đều hoạt động để thay đổi shell.
chsh -s <newShell>
Ví dụ
chsh -s /bin/sh