Qua đó, người quản trị có thể cung cấp quyền truy cập, thay đổi mật khẩu và quản lý các thuộc tính khác của người dùng trên hệ thống.Quản lý quyền truy cập: Windows Server cho phép người
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC THĂNG LONG
BÁO CÁO BÀI TẬP
NGUYÊN LÝ HỆ ĐIỀU HÀNHMÔ PHỎNG QUẢN LÝ NGƯỜI DÙNG
CỦA WINDOWS SERVER
Mã sinh viên Họ và tên
Trang 23.4.5 CharacterHandling.h & CharacterHandling.cpp 15
3.4.6 Draw.h & Draw.cpp 16
3.4.7 App.cpp 16
PHẦN 4 TỔNG KẾT 20
Trang 3DANH MỤC MINH HỌA
Ảnh 2.1 Mô tả phân tích thiết kế 3
Ảnh 3.1 Minh họa mở terminal 5
Ảnh 3.2 Biên dịch và khởi chạy ứng dụng 5
Bảng 3.1 Giải thích lớp Account 11
Bảng 3.2 Giải thích lớp FileManager 15
Trang 4PHẦN 1 TỔNG QUAN VỀ WINDOWS SERVER1.1 Windows server là gì?
Windows server (máy chủ windows) là một nhánh trong hệ điều hành cho máy chủ được sản xuất bởi tập đoàn Microsoft Chức năng của nó là giúp người dùng có thể quản lý cơ sở hạ tầng của họ một cách tin cậy, an toàn một cách tối đa và cung cấp môi trường môi trường máy chủ làm việc vững chắc.
1.2 Cách windows server quản lý người dùng
Quản lý người dùng trên Windows Server là một phần quan trọng trong việc triển khai và duy trì hệ thống Windows Server cung cấp một loạt công cụ và tính năng hỗ trợ quản lý người dùng một cách hiệu quả Dưới đây là một số phương pháp phổ biến được sử dụng để quản lý người dùng trên Windows Server:
Quản lý tài khoản người dùng: Windows Server cho phép tạo, xóa và chỉnh sửa tài khoản người dùng Điều này có thể được thực hiện thông qua các công cụ như "Local Users and Groups" hoặc "Active Directory Users and Computers" Qua đó, người quản trị có thể cung cấp quyền truy cập, thay đổi mật khẩu và quản lý các thuộc tính khác của người dùng trên hệ thống.
Quản lý quyền truy cập: Windows Server cho phép người quản trị quản lý quyền truy cập cho từng người dùng hoặc nhóm người dùng Sử dụng các công cụ như "Local Security Policy" hoặc "Group Policy Management", người quản trị có thể cấu hình các quyền và hạn chế truy cập vào các tài nguyên như tệp tin, thư mục, máy in và ứng dụng.
Quản lý chính sách mật khẩu: Windows Server cho phép thiết lập và thực thi chính sách mật khẩu để đảm bảo tính bảo mật của người dùng Người quản trị có thể đặt yêu cầu về độ dài, độ phức tạp và tuổi tối đa của mật khẩu Hơn nữa, cũng có thể cấu hình các thời gian hết hạn và khóa tài khoản sau một số lần đăng nhập không thành công Theo dõi và ghi nhật ký hoạt động: Windows Server cung cấp khả năng theo dõi và ghi nhật ký các hoạt động người dùng trên hệ thống Công cụ "Event Viewer" cho phép người quản trị xem và phân tích các sự kiện liên quan đến người dùng như đăng nhập, đăng xuất, thay đổi mật khẩu và quyền truy cập.
Tự động hóa quản lý người dùng: Windows Server cung cấp các công cụ như PowerShell và giao diện lập trình ứng dụng (API) để tự động hóa quá trình quản lý người dùng Sử dụng các kịch bản và mã lệnh, người quản trị có thể thực hiện các tác vụ quản lý người dùng hàng loạt và tự động.
1
Trang 5Quản lý người dùng trên Windows Server là một phần quan trọng để đảm bảo tính bảo mật, hiệu suất và quản lý hiệu quả của hệ thống Việc sử dụng các công cụ và tính năng của Windows Server giúp người quản trị nắm vững quyền kiểm soát và quản lý người dùng trên môi trường hệ điều hành Windows Server.
1.3 Ưu điểm
Quyền kiểm soát linh hoạt: cung cấp các công cụ và tính năng cho phép người quản trị có quyền kiểm soát linh hoạt đối với tài khoản người dùng, có thể xác định các quyền truy cập chi tiết cho từng tài khoản người dùng.
Tích hợp với Active Directory: cung cấp một hệ thống quản lý người dùng phân tán, linh hoạt và mạnh mẽ Active Directory cho phép quản lý người dùng, nhóm người dùng, tài khoản và chính sách trên nhiều máy chủ và thiết bị.
Công cụ quản lý tổng thể: có nhiều công cụ quản lý tổng thể như "Local Users and Groups", "Group Policy Management" và "PowerShell" Nhờ đó, người quản trị có thể thực hiện các tác vụ quản lý người dùng một cách dễ dàng, từ tạo và xóa tài khoản, đến cấu hình quyền truy cập và quản lý chính sách mật khẩu.
Tự động hóa và quản lý hàng loạt: Windows Server cung cấp các công cụ như PowerShell và giao diện lập trình ứng dụng (API) cho phép tự động hóa và quản lý người dùng hàng loạt Điều này giúp tiết kiệm thời gian và công sức cho việc quản lý và triển khai người dùng trên nhiều máy chủ.
1.4 Nhược điểm
Đòi hỏi kiến thức chuyên sâu: Quản lý người dùng trên Windows Server đòi hỏi người quản trị có kiến thức và hiểu biết về hệ thống Windows Server Điều này có thể tạo ra một ngưỡng độ phức tạp và đòi hỏi thời gian và đào tạo để nắm vững các khái niệm và công cụ liên quan.
Phụ thuộc vào cấu hình và phiên bản: Cách quản lý người dùng trên Windows Server có thể khác nhau tùy thuộc vào cấu hình và phiên bản cụ thể của Windows Server Đòi hỏi quản lý và duy trì hệ thống: đòi hỏi quản lý và duy trì hệ thống một cách đều đặn Điều này bao gồm việc cập nhật bảo mật, giám sát hoạt động và xử lý sự cố liên quan đến quản lý người dùng.
Khả năng mở rộng và quy mô: Quản lý người dùng có thể trở nên phức tạp và khó khăn khi số lượng người dùng tăng lên Cần phải đảm bảo tính ổn định của hệ thống.
Trang 6PHẦN 2 PHÂN TÍCH THIẾT KẾ
Ảnh 2.1 Mô tả phân tích thiết kế
3
Trang 7PHẦN 3 SOURCE CODE3.1 Giới thiệu về source code
Ngôn ngữ sử dụng trong dự án này là C++
Source code bao gồm một loạt các chức năng quan trọng như sau:
Trang chủ: đây là trang đầu tiên hiển thị sau khi người dùng đăng nhập thành công Trang chủ cung cấp một giao diện người dùng dễ sử dụng để truy cập các chức năng khác;
Đăng ký: chức năng này cho phép người dùng tạo một tài khoản mới trong hệ thống Người dùng cần cung cấp thông tin cần thiết và tạo một tài khoản với tên đăng nhập và mật khẩu duy nhất;
Đăng nhập: chức năng này cho phép người dùng đăng nhập vào tài khoản đã đăng ký Người dùng cần cung cấp tên đăng nhập và mật khẩu chính xác để truy cập vào hệ thống;
Đăng xuất: khi người dùng đăng nhập thành công, chức năng này cho phép họ đăng xuất khỏi tài khoản hiện tại và quay trở lại trang đăng nhập;
Quên mật khẩu: nếu người dùng quên mật khẩu, chức năng này sẽ giúp họ khôi phục mật khẩu bằng cách yêu cầu cung cấp các thông tin xác thực Sau đó, hệ thống sẽ cung cấp cho họ một lựa chọn để thay đổi mật khẩu mới;
Quản lý file: chức năng này cho phép người dùng quản lý các file trong hệ thống Người dùng có thể tạo, xóa, sửa đổi và tìm kiếm các file theo nhu cầu của mình;
Quản lý người dùng: chức năng này cho phép quản trị viên của hệ thống thực hiện các hoạt động quản lý người dùng như phân quyền, xóa người dùng, chỉnh sửa thông tin người dùng, và các hoạt động tương tự.
Điều này sẽ giúp người dùng dễ dàng tương tác với ứng dụng và sử dụng các chức năng theo nhu cầu của họ.
3.2 Cách cài đặt
Bước 1: Mở thư mục chứa mã nguồn (source code) Bước 2: Mở Command Prompt bằng một trong hai cách sau:
Cách 1: Nhập "cmd" vào thanh địa chỉ và nhấn Enter.
Cách 2: Chuột phải (hoặc nhấn phím Shift + chuột phải) và chọn "Open in terminal".
Trang 8Ảnh 3.2 Minh họa mở terminal
Bước 3: Nhập các câu lệnh sau vào terminal: Để biên dịch mã nguồn: g++ App.cpp -o App Để chạy ứng dụng: \App
Ảnh 3.3 Biên dịch và khởi chạy ứng dụng
3.3 Cách sử dụng
Khi hoàn tất quá trình cài đặt thành công, giao diện đăng nhập sẽ xuất hiện để yêu cầu người dùng nhập tài khoản và mật khẩu chính xác để tiếp tục.
Bảng menu lựa chọn sẽ được hiển thị, cho phép người dùng chọn các chức năng bằng cách sử dụng các phím mũi tên để di chuyển con trỏ Khi con trỏ đến vị trí mong muốn, bấm phím enter để truy cập vào chức năng tương ứng Nếu người dùng muốn quay lại trang trước, họ có thể di chuyển con trỏ đến nút "Back" và nhấn enter để quay lại.
5
Trang 93.4 Giải thích
3.4.1 Account.h
Tiêu chuẩn thư viện và namespace: các đoạn mã #include đưa vào các tiêu chuẩn thư viện C++ như <iostream>, <vector>, và <utility> Chúng cho phép sử dụng các chức năng và đối tượng có sẵn trong thư viện.
Guard macros:
Dòng #ifndef ACCOUNT_H kiểm tra xem ACCOUNT_H đã được định nghĩa trước đó chưa Nếu chưa, tiếp tục biên dịch file;
Dòng #define ACCOUNT_H định nghĩa ACCOUNT_H để tránh việc biên dịch lại phần khai báo lớp nếu file đã được đưa vào từ trước;
Dòng #endif kết thúc guard macros Khai báo lớp Account:
Dòng class Account bắt đầu khai báo lớp Account;
Trong phần này, lớp Account được định nghĩa với các thành viên bảo vệ (protected) và các phương thức công khai (public).
Khai báo các phương thức và biến thành viên của lớp Account:
Các phương thức và biến thành viên của lớp Account được khai báo trong phần public của lớp;
Các phương thức bao gồm hàm khởi tạo (constructor), các phương thức thêm/sửa/xóa thông tin tài khoản, các phương thức kiểm tra thông tin, đọc/ghi tệp tin, và các phương thức khác liên quan đến hoạt động của tài khoản.
Kết thúc file: ký tự #endif kết thúc file "Account.h" và đóng guard macros 3.4.2 Account.cpp
File "Account.cpp" chứa các định nghĩa chi tiết cho các phương thức của lớp Account Dưới đây là giải thích ngắn gọn về file này.
Tiêu chuẩn thư viện và namespace: Các đoạn mã #include đưa vào các thư viện và file h cần thiết cho việc triển khai các phương thức của lớp Account Các thư viện bao gồm <iostream>, <fstream>, <sstream>, <vector>, <string.h>, <chrono>, và các file h liên quan đến dự án như "Account.h", "CharacterHandling.h", và "Struct.h" Implement các phương thức của lớp Account: Các phương thức của lớp Account được triển khai ở đây Đây là nơi thực hiện các thao tác như thêm/sửa/xóa thông tin, kiểm
Trang 10tra thông tin, đọc/ghi tệp tin, và các thao tác khác liên quan đến hoạt động của tài
Đây là hàm khởi tạo (constructor) của lớp Account Hàm thiết lập giá trị ban đầu cho biến thành viên isLogin và đọc dữ liệu từ tệp tin "info.txt" bằng cách gọi hàm
Hàm này xóa một tài khoản khỏi vector list của lớp Account dựa trên tên đăng nhập (username).
Tham số username là tên đăng nhập của tài khoản cần xóa.
Account::setIsLogin(bool status)
Hàm này giúp thiết lập giá trị cho biến thành viên isLogin Tham số status là giá trị boolean dùng để thiết lập trạng thái đăng nhập tài khoản.
Account::getIsLogin() Hàm này trả về giá trị hiện tại của biến thành viên isLogin. Trả về true nếu tài khoản đã đăng nhập và false nếu chưa.
Account::setInfo (UserInfo info)
Hàm này thiết lập giá trị cho biến thành viên info Tham số info là một đối tượng UserInfo chứa thông tin tài khoản cần thiết lập.
Hàm này trả về giá trị hiện tại của biến thành viên info Trả về đối tượng UserInfo chứa thông tin tài khoản.
Account::setList Hàm này thiết lập giá trị cho biến thành viên list 7
Trang 11Hàm Giải thích
(vector<UserInfo> list) Tham số list là một vector chứa danh sách các đối tượng UserInfo.
Hàm này trả về giá trị hiện tại của biến thành viên list Trả về vector chứa danh sách các đối tượng UserInfo.
Account::checkInfo (string username)
Hàm này kiểm tra xem một tên đăng nhập (username) đã tồn tại trong danh sách tài khoản hay chưa.
Trả về true nếu tên đăng nhập đã tồn tại và false nếu không tồn tại.
Account::checkInfo (string username, string
Hàm này kiểm tra thông tin tài khoản (tên đăng nhập và mật khẩu) được cung cấp.
Hàm tìm kiếm trong vector list để xác định xem thông tin tài khoản có khớp hay không.
Trả về các mã lỗi để xác định kết quả kiểm tra.
Mã lỗi: 1 (đúng), -1 (không tìm thấy), -2 (sai tên đăng nhập hoặc mật khẩu), -3 (yêu cầu thay đổi mật khẩu), -4 (tài khoản bị vô hiệu hóa).
Account::checkVerifyCode (string username, string
Hàm này kiểm tra xem một mã xác minh (code) có khớp với tên đăng nhập (username) đã được gửi hay không Hàm đọc dữ liệu từ tệp tin "VerifyCode.txt" và xóa các dòng chứa tên đăng nhập và mã xác minh khớp.
Trả về true nếu mã xác minh dúng và false nếu sai.
Hàm này đọc dữ liệu từ tệp tin "info.txt" và lưu thông tin tài khoản vào vector list của lớp Account.
Dữ liệu từ tệp tin được chuyển thành các đối tượng UserInfo và được thêm vào vector list.
Trang 12Hàm Giải thích
Hàm này ghi dữ liệu từ vector list vào tệp tin "info.txt" Mỗi đối tượng UserInfo trong vector list sẽ được ghi thành một dòng trong tệp tin.
Account::printList() Hàm này in ra màn hình danh sách các tài khoản trong vector list.
Hàm này in ra màn hình thông tin của tài khoản hiện tại trong biến info.
Thông tin bao gồm tên đăng nhập và mật khẩu.
Account::updateInfo (string username, string fullName, string email, string
Hàm này cập nhật thông tin của tài khoản có tên đăng nhập (username) cho lớp Account.
Thông tin cập nhật bao gồm họ và tên đầy đủ, email, và số
Hàm này thay đổi mật khẩu của tài khoản.
Tham số oldPassword là mật khẩu cũ, newPassword là mật khẩu mới, reNewPassword là mật khẩu mới nhập lại Kiểm tra xem mật khẩu cũ có khớp với mật khẩu hiện tại của tài khoản hay không.
Kiểm tra xem mật khẩu mới và mật khẩu mới nhập lại có khớp nhau hay không.
Kiểm tra độ dài của mật khẩu mới, xem nó có ít nhất 8 ký tự, có chứa số và ký tự đặc biệt không.
Nếu tất cả kiểm tra đều thành công, hàm sẽ cập nhật mật khẩu mới cho tài khoản và ghi vào vector list và tệp tin "info.txt".
Account::forgotPassword (string type, string username)
Hàm này xử lý quên mật khẩu của tài khoản.
Tham số type có thể là email hoặc số điện thoại, username là tên đăng nhập của tài khoản.
9
Trang 13Hàm Giải thích
Hàm kiểm tra xem thông tin type và username có khớp với bất kỳ tài khoản nào trong vector list hay không Nếu khớp, hàm tạo mã xác minh ngẫu nhiên cho tài khoản và trả về 1 (thành công).
Nếu không khớp, hàm trả về các mã lỗi (-1: thông tin email/số điện thoại không tồn tại, -2: tên đăng nhập không
Hàm này xử lý việc đặt lại mật khẩu nếu đã quên Tham số username là tên đăng nhập của tài khoản Tham số nCode là mã xác minh.
Tham số newPassword và reNewPassword là mật khẩu mới và nhập lại mật khẩu.
Kiểm tra xem mã xác minh có khớp với và mã xác minh đã được gửi hay không.
Kiểm tra xem mật khẩu mới và mật khẩu mới nhập lại có khớp nhau hay không.
Kiểm tra độ dài của mật khẩu mới, xem nó có ít nhất 8 ký tự Kiểm tra xem mật khẩu mới có chứa số và ký tự đặc biệt không.
Nếu tất cả kiểm tra đều thành công, hàm sẽ cập nhật mật khẩu mới cho tài khoản và ghi vào vector list và tệp tin "info.txt".
Account::writeActLog (string username, string
Hàm này ghi lại các hoạt động của tài khoản vào tệp tin log Tham số username là tên đăng nhập của tài khoản Tham số actName là tên hoạt động cần ghi lại.
Hàm ghi thời gian hiện tại và hoạt động vào tệp tin log của tài khoản tương ứng.
Trang 14Hàm Giải thích
Account::activityLog (vector<pair<string, string>>
&data, string username):
Hàm này truy cập vào tệp tin log và lưu các hoạt động vào vector data.
Tham số data là một vector chứa cặp (thời gian, hoạt động) Tham số username là tên đăng nhập của tài khoản, mặc định là rỗng.
Hàm đọc dữ liệu từ tệp tin log của tài khoản tương ứng và lưu vào vector data.
Bảng 3.1 Giải thích lớp Account
3.4.3 FileManager.h
File "FileManager.h" định nghĩa lớp FileManager, kế thừa từ lớp Account Dưới đây là giải thích từng phần trong file này:
Tiêu chuẩn thư viện và namespace: các đoạn mã #include đưa vào các tiêu chuẩn thư viện C++ và các file h liên quan đến dự án như <iostream>, <string>, <vector>, "Account.h", và "Struct.h" Chúng cho phép sử dụng các chức năng và đối tượng có sẵn trong thư viện và các file h liên quan.
Khai báo lớp FileManager: chỉ định rằng nó kế thừa từ lớp Account Khai báo các phương thức của lớp FileManager:
Các phương thức của lớp FileManager được khai báo trong phần public của lớp; Các phương thức bao gồm các thao tác kiểm tra quyền truy cập, lấy thông tin về tệp tin, ghi thông tin vào tệp tin, tạo tệp tin, di chuyển, sao chép, đổi tên và xóa tệp tin, và gán quyền truy cập cho người dùng khác.
Kết thúc file: ký tự #endif kết thúc file "FileManager.h" và đóng guard macros Lớp FileManager được kế thừa từ lớp Account, vì vậy nó sẽ có các phương thức và biến thành viên của lớp Account cũng như các phương thức mới được định nghĩa trong lớp FileManager.
3.4.4 FileManager.cpp
Dưới đây là giải thích từng phương thức trong file "FileManager.cpp":
11