Tìm hiểu về User và Group.
I.Giới thiệu về user.
1. user và group.
- User:
- Là người dùng có thể truy cập vào hệ thống, ứng dụng trong hệ thống.
- User có username và password.
- Có hai loại user là super user và regular user
- Mỗi user có một định danh riêng là UID.
- UID của người dùng thông thương thường bắt đầu từ 500.
- Group:
- Group là tập hợp của nhiều user.
- Mỗi user luôn là thành viên của ít nhất 1 group.
- Khi tạo một user thì mặc định sẽ tạo ra một group chứa user đó.
- Mỗi group cũng có định danh riêng gọi là GID, GID của group thông thường bắt đầu từ 500.
2. Một số câu lệnh tương tác với user.
whoami
: là câu lệnh hiển thị người dùng hiện tại.who
: hiển thị thông tin về các user đang nhập vào hệ thống.w
: hiển thị ai đang đăng nhập vào hệ thống và họ đang làm gì.id
: là câu lệnh hiển thị UID, GID của primary group, và các group mà user này thuộc về.su <username>
: giúp mở shell với người dùng khác.su - <username>
: để chuyển user đồng thời chuyển thư mục hiện tại về thư mục home của user đó.su -
: Khi không có user nào được đưa ra, shell hiểu là muốn chuyển sang user root.sudo <command>
: Là câu lệnh giúp chạy một lệnh với quyền root mà không cần mật khẩu của tài khoản root. Khi sử dụng một lệnh với sudo, lệnh đó được thực thi như khi thực thi trên tài khoản root.visudo
: là lệnh để mở và edit file /etc/sudoers.
II.Quản lý user
1./etc/paswd
Là một database user nội bộ trên linux.
File này bao gồm 7 cột được phân cách bởi dấu : . Các cột chứa username,một ký tự x, UID, GID, mô tả,thư mục home, shell login.
2. root
Root hay được gọi là superuser là tài khoản mạnh nhất trên hệ thống Linux. User này có thể làm tất cả mọi thứ, kể cả việc tại ra user khác. Tài khoản root luôn có UID là 0.
3. useradd
Bạn có thể thêm user bằng lệnh useradd. Ví dụ dưới đây thêm tài khoản có username lam, tạo thư mục home cho user (-m), đặt tên cho thư mục home (-d), và thêm mô tả(-c).
/etc/default/useradd
là file chứa tùy chọn mặc định cho lệnh useradd. Ngoài việc xem file, có thể sử dụng useradd -D
để xem các tùy chọn mặc định này.
4. userdel
Lệnh userdel
là lệnh dùng để xóa user. Thêm option -r để xóa cả thư mục home của user đó.
5. usermod
usermod
là lệnh dùng để chỉnh sửa những tính chất của user.
6. Tạo thư mục home cho user
Cách dễ nhất là thêm option -m vào câu lệnh useradd khi tạo user. Có một cách để tạo thư mục home cho một user sau khi tạo là dùng mkdir để tạo thư mục và sửa owner và quyền cho user đó bằng chown và chmod.
7.Thư mục /etc/skel
Khi sử dụng useradd -m
thì thư mục /etc/skel sẽ được copy đến thư mục home mới được tạo. Thư mục /etc/skel chứa một số file thường bị ẩn chứa các thiết lập profile và giá trị mặc định cho ứng dụng. Thư mục /etc/skel phục vụ như thư mục home mặc định và chứa profile người dùng mặc định.
8. Login shell
File /etc/passwd chỉ định login shell cho user ở cột cuối cùng. Login shell có thể là /bin/bash hay /bin/ksh, hay một số shell khác.
Có những user có phần login shell là /usr/sbin/nologin hay /bin/false là những user không sử dụng shell.
Bạn có thể sử dụng usermod
với option -s
để thay đổi shell cho user
User cũng có thể đổi login shell của họ với lệnh chsh
III.Quản lý password của user.
1.passwd và chpasswd
Mật khẩu của người dùng có thể được thiết lập và thay đổi bằng lệnh passwd
. Người dùng sẽ được yêu cầu nhập mật khẩu cũ trước khi họ nhập hai lần mật khẩu mới.
Khác với lệnh passwd
là chỉ thiết lập mật khẩu được cho một tài khoản thì lệnh chpasswd
là lệnh dùng để thay đổi mật khẩu của nhiều tài khoản cùng một lúc.
2. /etc/shadow
Mật khẩu của user được mã hóa và lưu trữ ở trong file /etc/shadow. File /etc/shadow là file chỉ đọc và chỉ có user root mới có quyền đọc nó.
File /etc/shadow chứa chín cột phân cách bởi dấu hai chấm. Chín cột này (từ trái qua phải ) là username, mật khẩu được mã hóa, lần cuối mật khẩu thay đổi, số ngày còn lại mật khẩu không được thay đổi, ngày mật khẩu hết hạn, cảnh báo trước khi mật khẩu hết hạn bao nhiêu ngày, số ngày sau khi hết hạn trước khi vô hiệu hóa tài khoản, và ngày tài khoản bị vô hiệu hóa, cột cuối chưa có ý nghĩa gì.
3. Mã hóa mật khẩu
Mã hóa với passwd
Mật khẩu được lưu ở một dạng mã hóa. Mã hóa được thực hiện bởi hàm crypt. Cách dễ nhất để tạo và mã hóa mật khẩu là dùng lệnh passwd.
Mã hóa với openssl
Một cách khác để tạo user với mật khẩu là sử dụng useradd
với opton -p nhưng nó yêu cầu mật khẩu được mã hóa. Để mã hóa mật khẩu bạn có thể sử dụng câu lệnh openssl passwd
.
Ví dụ:
Lưu ý là làm theo cách trên sẽ lưu mật khẩu ở trong shell history. Thêm một dấu cách trước câu lệnh để nó không lưu vào history.
4. /etc/login.defs
File /etc/login.defs chứa một số thiết lập mặc định cho mật khẩu của user như hạn và độ dài yêu cầu của password. (có cả giới hạn uid bà gid, hoặc thư mục home có được mặc định tạo ra hay không)
5. chage
chage
là câu lệnh để xem các thông tin về mật khẩu (-l), và cũng dùng để thay đổi các thông tin đó.
6. Disable một mật khẩu.
Mật khẩu lưu ở trong /etc/shadow không thể bắt đầu với dấu chấm than. Khi giá trị của cột thứ hai trong file shadow mà bắt đầu với dấu chấm than thì mật khẩu không thể sử dụng.
Tính năng này được gọi là khóa, tắt hoặc tạm dừng một tài khoản người dùng. Bạn có thể sử dụng tính năng này với lệnh usermode -L
Để mở khóa user ta dùng lệnh usermod -U
.
V.User profile
1. System profile
Bash xác minh sự tồn tại của file /etc/profile và source nó nếu nó tồn tại. File này có thể sẽ lưu thông tin về biến PATH, HOSTNAME, PS1, các alias,… cho toàn bộ hệ thống.
2. ~/.bash_profile
Khi file này tồn tại, bash sẽ source nó. Debian 5/6/7 mặc đinh không có file này. RHEL 7/Centos 7 sử dụng file này để kiểm tra sự tồn tại của file ~/.bashrc, và source nó nếu nó tồn tại. Nó cũng thêm thư mục ~/bin vào biến PATH. Nếu không có file ~/.bash_profile, hệ thống sẽ kiểm tra file ~/.bash_login
4. ~/.profile
Nếu không có cả hai file ~/.bash_profile và ~/.bash_login thì bash sẽ xác nhận sự tồn tại của ~/.profile và thực thi nó. File này không tồn tại mặc định trên Red hat.
File này kiểm tra nếu có file ~/.bashrc thì sẽ source nó.
5. ~/.bashrc
Trên RHEL, file này để kiểm tra /etc/bashrc và source nó. Nó cũng là file để chứa các alias, các hàm cho người dùng.
Trên Debian, nó chứa cấu hình cho $PS1, một số biến cho bash history và một số alias.
6. ~/bash_logout
Khi thoát bash, nó sẽ thực thi ~/.bash_logout. Debian dùng nó để xóa màn hình console.
Red Hat 5 chỉ đơn giản sử dụng /usr/bin/clear
V.Quản lý nhóm
Nhóm chứa các user và cho phép phân quyền cho group thay vì phải phân quyền cho từng user
1.groupadd
Group có thể được tạo bằng câu lệnh groupadd
.
Ví dụ tạo 5 group chống:
2.Group file
Các user có thể là thành viên của nhiều nhóm. Thành viên của nhóm được xác định trong file /etc/group.
Cột đầu là tên group. Cột thứ hai là mật khẩu group được mã hóa hoặc có thể chống. Cột thứ 3 là group ID. Cột thứ 4 là danh sách thành viên của group.
3. Lệnh `groups
User có thể sử dụng lệnh groups
để có thể xem các group mà nó thuộc về.
4. usermod
Thành viên của nhóm có thể được chỉnh sử bởi lệnh useradd hoặc usermod
:
Nếu không đưa ra group trong câu lệnh usermod
thì nó sẽ xóa tài khoản này khỏi tất cả các group mà nó thuộc về. Dùng -a để ngăn chặn điều này.
5.groupmod
Là câu lệnh để cấu hình một số thông tin của group như GID, tên group, password,..
6. groupdel
Lệnh groupdel
là lệnh dùng để xóa một group
7. gpasswd
Có thể ủy quyền quản lý một nhóm cho một user khác với lệnh gpasswd. Ví dụ
User quản trị của một nhóm không cần là thành viên của nhóm. họ có thể tự xóa họ ra khỏi nhóm mà không ảnh hưởng đến khả năng của họ.
Thông tin người quản trị của nhóm lưu ở /etc/gshadow
Để xóa tất cả những user quản trị của một nhóm dùng lệnh gpasswd nhưng để giá trị user là chống:
gpasswd -A "" <group>
Sudo(wheel) group vs root
Tất cả các user trong group sudo(wheel)
đều có thể thực thi lệnh dưới quyền root
với lệnh sudo
. Lệnh thực thi sau câu lệnh sudo không phải do người dùng đó thực thi mà nó được thực thi bởi tài khoản root, chỉ là không cần mật khẩu của tài khoản root.
Ví dụ:
Sử dụng man sudo_root
để xem thêm.
Trong khi đó, tài khoản root không cần là thành viên của nhóm sudo vì nó không cần mượn quyền root nữa.