Quản trị người dùng trong Linux

Giới thiệu người dùng và nhóm

Người dùng- users

      Mọi truy cập vào hệ thống đều thông qua một tài khoản của người sử dụng. Mỗi tài khoản được thiết lập bởi người quản trị hệ thống ngoại trừ tài khoản root (và một số tài khoản hệ thống). Mặc dù một số hệ Linux chỉ một người dùng nhưng cũng không nên dùng tài khoản root cho các hoạt động thường ngày. Hầu hết các hệ thống cho phép nhiều người truy nhập vào. Vậy việc quản lý các tài khoản, các thư mục liên quan là một khía cạnh quan trọng trong việc quản lý hệ thống Linux.

     Tài Khoản của người quản trị

    Trong quá trình cài đặt Linux chúng ta khởi tạo người sử dụng root cho hệ thống. Đây là superuser, tức là người sử dụng đặc biệt có quyền không giới hạn. Sử dụng quyền root chúng ta rất thấy thoải mái vì chúng ta có thể làm được thao tác mà không phải lo lắng gì hết xét quyền truy cập này hay khác. Tuy nhiên , khi hệ thống bị sự cố do một lỗi lầm nào đó, chúng ta mới thấy sự nguy hiểm khi làm việc như root.

    Hãy chỉ dùng quyền root khi bạn không có cách nào khác

    Một điều quan trọng là không phải tài khoản superuser nào cũng gọi là root, mặc dù nó được tạo mặc định là root khi cài đặt Linux. Nó có thể có tên bất kỳ nhưng thường được dùng nhất dưới tên root. Tài khoản này được định nghĩa là tài khoản có UserID là 0, các userID được định nghĩa trong file /etc/passwd.

    Cần phân biệt bạn đang login như root hay người sử dụng thường thông qua dấu nhắc của shell.

Password:
Last login: Sat Oct 28  14:30:15   from 172.168.10.199
[tuanma@pascal tuanma]$  su -1 root
Password:
[root@pascal /root]#


Dòng thứ ba với dấu nhắc $ cho thấy ta đang kết nối như một người sử dụng thường (tuanma). Dòng cuối cùng với dấu nhắc # cho thấy bạn đang thực hiện các lệnh như root. Lệnh su user_name cho phép bạn thay đổi login dưới một user khác (user_name) mà không phải loguot rồi login lại

     Bạn cần tạo các tài khoản (account) cho người sử dụng thường sớm nhất có thể được (đầu tiên là cho bản thân bạn). Với những server quan trọng và có nhiều dịch vụ khác nhau, thậm trí bạn có thể tạo ra các superuser thích hợp cho từng dịch vụ để tránh dùng root cho các công tác này. Ví dụ như superuser cho công tác backup chỉ cần chức năng đọc (read-only) mà không cần chức năng ghi.


    Nhóm -groups.

   Mọi người dùng trong các hệ Unix hay Linux đều thuộc về một nhóm. Nhóm dùng để gom nhóm các user có chung một quyền hoặc chính sách riêng đối với hệ thống nhằm tạo thuận lợi trong việc quản trị hệ thống Linux. Ví dụ như trong một cơ quan, có nhiều phòng ban, mỗi phòng ban có các user và các user của các phòng ban khác nhau sẽ có các chính sách bảo mật khác nhau. Các user thường chỉ được sử dụng tài nguyên hệ thống một cách có hệ thống. Chẳng hạn các users của văn phòng và các phòng nghiên cứu được sử dụng các tài nguyên sau:

Truy cập Web
Sử dụng e-mail để trao đổi thông tin
Sử dụng các chương trình chat, ICQ để trao đổi tin tức
Truy cập đến các file server trong công ty
Không được login vào các máy chủ, không được chạy chương trình trên máy chủ.


Tuy nhiên các users của phòng quản trị hệ thống có thể có các quyền ưu tiên hơn:

Bao gồm các quyền của người dùng bình thường trên.
Có quyền thực hiện một số lệnh đặc biệt dành cho quản trị hệ thống
Có thể login vào server.

      Các nhóm được cài đặt quyền để các thành viên của nó có thể truy nhập đền các thiết bị, file hoặc toàn bộ máy tính mà những người khác nhóm có thể bị hạn chế.

     Các thông tin về nhóm được lưu trong file /etc/groups

suse:~ # more /etc/group
root :x:0:root
bin:x:1:root,bin,daemon
deamon:x:2:
sys:x:3:
kmem:x:9:
wheel:x:10:
mail:x:12:cyrus
news:x:13:news
uucp:x:14:uucp,fax,root,fnet,tuanma
shadow:x:15:root,gdm
named:x:44:named
dbmaker:x:52:
oinstall:x:54:
dba:x:55:oracle
localham:x:56:dpbox
logmastr:x:57:
users:x:100:
nogroup:x:65534:root
suse:~ #

Các dòng có dạng như sau:
       group name:group password:group ID:users

group name: Tên duy nhất xác định một nhóm, thường dài tối đa 8 ký tự.
group password: Trường mật khẩu đã được mã hóa, thường để trắng hoặc là dấu *. Cũng có thể là mật khẩu mà user muốn gia nhập nhóm phải nhập vào. Tuy nhiên không phải phiên bản nào của Unix đều sử dụng trường này do đó nó đực để trống để tương thích với nhau.
group ID : Số duy nhất cho mỗi nhóm, được sử dụng bởi nhiều hệ điều hành.
users: Chứa danh sách tên người dùng thuộc nhóm đó, phân cách bởi dấu ",". Danh sách này không kể những người dùng thuộc nhóm đó theo số hiệu nhóm đã được ghi trong file /etc/passwd của người đó ( tức là những thành viên mặc định của nhóm).


    Mọi hệ Linux đều có một số các nhóm mặc định thuộc hệ điều hành. Các nhóm này thường là bin, mail, uucp,sys,... Do vậy không nên cho một người sử dụng thuộc vào nhóm này vì chúng sẽ có quyền tương đương như root. Chỉ có các đăng nhập hệ thống mới cho phép truy nhập đền các nhóm của hệ điều hành.


Các nhóm mặc định của hệ thống:


  1. root/wheel/system: thường dùng để cho phép người dùng sử dụng lệnh su để chyển lên quyền root.
  2. deamon: dùng để chỉ những người làm chủ thư mục spool (mail, squid, lpd...)
  3. kmem: dùng cho các chương trình truy cập đền kernel, bộ nhớ trực tiếp(ps).
  4. tty: làm chủ tất cả các file đặc biệt dùng làm việc với terminal.

Thêm nhóm 
                                groupadd hoặc addgroup
Xóa nhóm
                                groupdel hoặc delgroup

Tập tin /etc/passwd

            Tập tin /etc/passwd đóng vai trò sống còn đối với một hệ thống Unix. Mọi người đều có thể đọc được tập tin này nhưng chỉ có root mới có quyền thay đổi nó. Tập tin /etc/passwd
được luu dưới dạng text như đại đa số các tập tin cấu hình của Unix

[oracle@appserv orecle]$ more /etc/passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin
...
tuanma:x:501:501:tuanma:/home/tuanma:/bin/bash

Mỗi user được lưu trong một dòng gồm 7 cột

Cột 1:tên người sử dụng
Cột 2: mã liên quan đến passwd cho Unix chuẩn và 'x' đối với Linux, Linux lưu mã này trong một tập tin khác /etc/shadow mà chỉ có root mới có quyền đọc.
Cột 3:4: user ID:group ID
Cột 5: Tên đầy đù của người sử dụng. Một số phần mềm phá password sử dụng dữ liệu của cột này để thử đoán password.
Cột 6: Thư mục cá nhân.
Cột 7: Chương trình sẽ chạy đầu tiên sau khi login (thường là shell ) cho user

    Tập tin mở đầu bởi superuser root. Chú ý là tất cả những user có user ID=0 đều là root!!! Tiếp theo là các user hệ thống. Đây là các user không có thật và không thể login vào hệ thống cuối cùng là các user bình thường.


Tập tin /etc/shadow

    Unix truyền thống lưu các thông tin liên quan tới mật khẩu để đăng nhập (login) ở trong /etc/passwd. Tuy nhiên, do đây là tập tin phải đọc được bởi tất cả mọi người do một số yêu cầu cho hoạt động binh thường của hệ thống (như chuyển User ID thành tên khi hiển thị trong lệnh ls chẳng hạn) và nhìn chung các user đặt mật khẩu "yếu", do đó hầu hết các Unix phiên bản mới đều lưu mật khẩu trong một tập tin khác etc/shadow và có  root được quyền đọc tập tin này.

Chú ý: Theo cách xây dựng mã hóa mật khẩu, chỉ có 2 cách phá mật khẩu là vét cạn (brute force) và đoán. Phương pháp vét cạn theo tính toán chặt chẽ, là không thể thực hiện nổi vì đòi hỏi thời gian tính toán quá lớn, còn đoán thì chỉ tìm ra những mật khẩu ngắn, hoặc "yếu",. Ví dụ như những từ tìm thấy trong từ điển như god, darling....


Các lệnh quản trị người dùng và nhóm.

Lệnh adduser 

Để tạo một account, bạn có thể sử dụng lệnh adduser (hoặc useradd tùy vào phiên bản). Tất nhiên là bạn phải làm thao tác này dười quyền root (dấu nhắc #)

useradd [-c comment] [-d home_dir]
            [-e expire_date]
         [-g inital_group][ [-G group[...]]
    [-p shell] [-u uid [-o]] [-n] [-r] login

Trong đó các tham số:

-c comment: lời chú thích, thường là tên đầy đủ của người dùng 
-d home_dir : thư mục gốc của người dùng
-e expire_date: ngày hết hiệu lực của account
-g inital_group: nhóm khởi tạo
-G group: nhóm mà người dùng thuộc vào
-p passwd: passwd của người dùng, password này phải được mã hóa trước.

-s shell: shell mặc định của user
-u uid: user identification
login :tên username.

Ví dụ:

[root@appserv oracle]# /usr/sbin/adduser foo
[root@appserv oracle]# passwd foo
Changing password for user foo
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
[root@appserv oracle]#

Sau khi bạn tạo xong user bởi dòng đầu tiên của ví dụ trên, user foo vẫn chưa kết nối được vì thiếu password. Bạn phải khởi tạo password cho foo bởi lệnh passwd foo như ở trên.


      Vì vần đề an ninh của máy tính Unix này và kéo theo sự an toàn của toàn hệ thống mạng của bạn, rất quan trọng chọn đúng password. Một password gọi là đúng nếu:
  • Có độ dài tối thiểu 8 ký tự.
  • Phối hợp giữa chữ thường, chữ hoa, số và các ký tự đặc biệt
  • Không liên quan đến tên tuổi, ngày sinh....của bạn và người thân
  • không có trong từ điển
    Trong ví dụ trên, bạn khởi tạo người dùng và không quan tâm gì đến nhóm (group) của người dùng. Rất tiện lợi nếu bạn tập hợp nhiều người dùng vào chung một nhóm có cùng một chức năng và cùng chia sẻ nhau dữ liệu. Khi bạn tạo người sử dụng như trên. Linux sẽ tạo cho mỗi người một nhóm. Đọc tập tin /etc/passwd ta thấy

[root@appserv orecle] # more /etc/passwd/grep foo
foo:x:1012:1013::/home/foo:/bin/bash
[root@appserv oracle]#
foo là user số 1012 và thuộc nhóm 1013
Xem tập tin /etc/group ta thấy
[root@appserv oracle]# more/etc/group
root:x:0:root
.... .... ....
users:x:100:
.... .... ....
foo:x:1013:

Và ta có thể kết nạp foo vào nhóm users bằng cách thay số 1013 bằng 100, là group ID của users

Lệnh userdel 

      Lệnh userdel dùng để xóa một user. Bạn cũng có thể xóa một user bằng cách xóa đi dòng dữ liệu tương ứng trong tập tin /etc/passwd


Quá trình xóa bằng tay:
  1. Xóa điểm nhập tương ứng với người dùng trong /etc/passwd và trong /etc/group
  2. Xóa các file mail và mail alias của người dùng
  3. Xóa mọi cron và at

  1. Xóa thư mục cá nhân của user đó.





Nhận xét

Bài đăng phổ biến từ blog này

[CCNAv6 S4] 8.2.4.14 Packet Tracer - Troubleshooting Enterprise Networks 3

[CCNAv6 S2] 2.2.2.4 Packet Tracer - Configuring IPv4 Static and Default Routes

[CCNAv6 S2] 7.3.2.4 Packet Tracer - Troubleshooting Standard IPv4 ACLs