[Linux] Tiến trình đăng nhập hệ thống Linux diễn ra như thế nào ?

161
Tiến trình đăng nhập hệ thống Linux diễn ra như thế nào ?

 

Hôm nay, mình muốn giới thiệu các bạn bài viết về việc giải thích cho câu hỏi khá đơn giản rằng “Điều gì xảy ra vào thời điểm login hệ thống Linux?” . Hy vọng các bạn có thể hiểu thêm về việc gì đã xảy ra trong thời điểm đó qua sự trình bày các bước như sau. Mình mặc định là các bạn đã biết qua nội dung “Tiến trình khởi động của Linux hoạt động như thế nào?” rồi nhé.
 
Bước 1 : sau khi tiến trình init thực thi run-level và các chương trình lệnh trong /etc/rc.local/, thì nó sẽ khởi động một tiến trình được gọi là “Getty”. Getty là tiến trình sẽ đảm nhận nhiệm vụ đối với việc đăng nhập hệ thống.

 

Bước 2 : tiến trình getty sẽ thực thi chương trình đăng nhập và hiện ra cho người dùng các thông tin prompt đăng nhập trên màn hình terminal rồi chờ đợi họ nhập thông tin username vào. Khi mà người dùng nhập thông tin username vào, thì Getty sẽ tiếp tục hiển thị prompt yêu cầu nhập mật khẩu username vừa nhập. Mật khẩu sẽ bị che giấu và không hiển thị trên màn hình.
 
Bước 3 : lúc nào Getty sẽ thực hiện nhiệm vụ xác thực thông tin username mà người dùng nhập vào bằng cách tra cứu trong 2 file /etc/passwd và /etc/shadow. Nếu mật khẩu và thông tin username trùng khớp với thông tin hệ thống thì Getty sẽ đi tìm các thuộc tính liên quan đến user đó, còn nếu không hợp lệ về thông tin so sánh thì Getty sẽ hiển thị việc đăng nhập trở lại màn hình terminal. Thường sẽ được đăng nhập sai 3 lần, nếu vẫn sai thì Getty sẽ khoá tính năng terminal login trong vòng 10 giây được quy định bởi PAM trong việc kiểm soát quá trình đăng nhập.
Note: cách thức mà Linux kiểm tra mật khẩu sẽ được mình bàn ở phần khác.
 
Bước 4 : bây giờ tiến trình Getty sẽ đọc thông tin thuộc tính liên quan đến user nếu đăng nhập thông tin thành công, các thuộc tính ấy bao gồm UID, GID, thư mục home, user shell trong file /etc/passwd để khởi động các biến hệ thống tương ứng như $USER, $UID, $GID, $HOME and $SHELL.
 
Bước 5 : sau khi đã thu thập đầy đủ thông tin các thuộc tính và trước khi khởi động tiến trình user shell của user đó thì nó sẽ đọc file /etc/motd và hiển thị nội dung trong file này như là thông báo đầu tiên đến với user đó.
 
Bước 6 : bây giờ Getty sẽ đọc nội dung file /etc/prodile để set các thành phần tính năng được quy định liên quan đến user shell và cả import các câu lệnh alias hay sắp xếp các biến hệ thống khác nhau mà chúng ta muốn quy định cho user shell chung. Tức file /etc/profile sẽ thường được dùng để quy định chung thành phần đặc điểm cho tất cả các user trong hệ thống khi đăng nhập sử dụng user shell.
 
Bước 7 : sau khi hoàn tất đọc thông tin trong file /etc/profile, thì Getty sẽ đọc nội dung cụ thể của từng thư mục Home của user và thay đổi các thuộc tính của user shell nếu được tìm thấy trong các file ~/.bashrc , ~/.bash_profile nếu shell mặc định là “bash”. Tiến trình Getty lấy thông tin shell từ file /etc/passwd. Tức với 2 file trên thì các user có thể tự quy định các biến và đặc tính riêng cho quyền user của mình.
 
Bước 8 : tiến trình Getty bây giờ sẽ chạy một chương trình, được gọi là “user shell” phục vụ cho việc tương tác với user một cách trực tiếp. Getty lấy thông tin shell từ biến $SHELL mà trước đó đã được set ở các bước trên. Lúc đó nó sẽ hiển thị prompt PS1 cho user sử dụng thực thi các chương trình lệnh.
Kể từ lúc này, người dùng user đã có thể thực thi các câu lệnh của họ tại màn hình terminal. Tất cả các vấn đề kể trên trong quá trình từng bước giải thích cho các bạn hiểu đều được giám sát bởi kernel trong background.

 

Cám ơn các bạn đã theo dõi bài viết.
Đánh giá sao từ người đọc :
[ Tổng : 1 - Trung bình: 5 ]