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ẠO
TRƯỜNG ĐẠI HỌC THĂNG LONG
BÁO CÁO BÀI TẬP
NGUYÊN LÝ HỆ ĐIỀU HÀNH
MÔ PHỎNG QUẢN LÝ NGƯỜI DÙNG CỦA WINDOWS SERVER
Mã sinh viên Họ và tên
Trang 2MỤC LỤC
PHẦN 1 TỔNG QUAN VỀ WINDOWS SERVER 1
1.1 Windows server là gì? 1
1.2 Cách windows server quản lý người dùng 1
1.3 Ưu điểm 2
1.4 Nhược điểm 2
PHẦN 2 PHÂN TÍCH THIẾT KẾ 3
PHẦN 3 SOURCE CODE 4
3.1 Giới thiệu về source code 4
3.2 Cách cài đặt 4
3.3 Cách sử dụng 5
3.4 Giải thích 6
3.4.1 Account.h 6
3.4.2 Account.cpp 6
3.4.3 FileManager.h 11
3.4.4 FileManager.cpp 11
3.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 SERVER
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àikhoả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ư "LocalUsers and Groups" hoặc "Active Directory Users and Computers" Qua đó, người quảntrị 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áccủ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 truycậ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ư "LocalSecurity Policy" hoặc "Group Policy Management", người quản trị có thể cấu hình cácquyề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à ứngdụ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ínhsá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êucầ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ìnhcá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à ghinhật ký các hoạt động người dùng trên hệ thống Công cụ "Event Viewer" cho phépngườ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ủaWindows 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ênmô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ềntruy 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ườidù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 andGroups", "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, đếncấ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ườiquả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 ramộ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ênquan đế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 CODE
3.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ăngkhá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ọ đăngxuấ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ụcmậ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ẽ cungcấ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áchoạ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 tinngườ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ứcnă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
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ứcnă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ạiphầ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 publiccủ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óathô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ươngthứ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 baogồm <iostream>, <fstream>, <sstream>, <vector>, <string.h>, <chrono>, và các file hliê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 đượctriể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àikhoản.
Kết thúc file: file "Account.cpp" kết thúc sau khi triển khai các phương thức và địnhnghĩa hàm toàn cục
Để hiểu rõ hơn về các hàm trong file “Account.cpp”, dưới dây là chi tiết các hàm:
Account::Account()
Đâ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àmreadFileAccount()
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àikhoản cần thiết lập
Trang 11Trả 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ậphoặ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)
Trả về true nếu mã xác minh dúng và false nếu sai
Account::readFileAccount()
Hàm này đọc dữ liệu từ tệp tin "info.txt" và lưu thông tin tàikhoả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
Account::writeFileAccount()
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ànhmộ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
(string username, string
fullName, string email, string
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ậtkhẩ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ủatà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ậtkhẩ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ớibấ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 tinemail/số điện thoại không tồn tại, -2: tên đăng nhập khôngtồn tại)
Tham số newPassword và reNewPassword là mật khẩu mới
Nếu tất cả kiểm tra đều thành công, hàm sẽ cập nhật mậtkhẩu mới cho tài khoản và ghi vào vector list và tệp tin
Hàm ghi thời gian hiện tại và hoạt động vào tệp tin log củatà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àovector 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
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ệptin, 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ếnthà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ớpFileManager
3.4.4 FileManager.cpp
Dưới đây là giải thích từng phương thức trong file "FileManager.cpp":
11
Trang 15fileAccess: Đối tượng Permission chứa danh sách ngườidùng có quyền truy cập.
Phương thức sẽ kiểm tra xem người dùng có tên username
có nằm trong danh sách người dùng có quyền truy cập vàotệp tin hay không
Trả về true nếu người dùng có quyền truy cập, ngược lạitrả về false
FileManager::getInfoFile
(string dirName, string
fileName, FileInfo &fileInfo,
Permission &fileAccess)
Phương thức này lấy thông tin về tệp tin từ tên thư mục vàtên tệp tin
dirName: Tên thư mục chứa tệp tin
fileName: Tên tệp tin
fileInfo: Tham chiếu đến đối tượng FileInfo để lưu trữthông tin về tệp tin
fileAccess: Tham chiếu đến đối tượng Permission để lưutrữ quyền truy cập
Phương thức sẽ đọc thông tin tệp tin từ các tệp tin dữ liệu
và nội dung tương ứng
Thông tin bao gồm tên tác giả, người dùng được phépxem, chỉnh sửa, xóa, đổi tên tệp tin, và nội dung tệp tin.Thông tin sẽ được lưu trong các biến thành viên của đốitượng fileInfo và fileAccess
FileManager::writeInfoFile
(string dirName, string
fileName, FileInfo fileInfo,
Trang 16Hàm Giải thích
fileName: Tên tệp tin
fileInfo: Đối tượng FileInfo chứa thông tin về tệp tin.fileAccess: Đối tượng Permission chứa quyền truy cậpvào tệp tin
Phương thức sẽ ghi thông tin về tệp tin, bao gồm tên tácgiả và danh sách người dùng được phép xem, chỉnh sửa,xóa, đổi tên tệp tin, vào tệp tin dữ liệu tương ứng.Nội dung tệp tin sẽ được ghi vào tệp tin tương ứng
dirName: Tên thư mục chứa tệp tin mới
fileName: Tên tệp tin mới
Phương thức sẽ tạo một tệp tin mới với đường dẫn đượcxác định bởi dirName và fileName
FileManager::moveFile
(string currentDir, string
targetDir, string fileName,
FileInfo fileInfo, Permission
fileAccess)
Phương thức này di chuyển tệp tin từ một thư mục hiện tạiđến một thư mục đích
currentDir: Tên thư mục hiện tại chứa tệp tin
targetDir: Tên thư mục đích để di chuyển tệp tin.fileName: Tên tệp tin cần di chuyển
fileInfo: Đối tượng FileInfo chứa thông tin về tệp tin.fileAccess: Đối tượng Permission chứa quyền truy cậpvào tệp tin
Phương thức sẽ kiểm tra quyền truy cập của người dùng
và tên tác giả để xác định xem có thể di chuyển tệp tin haykhông
Nếu được phép, phương thức sẽ di chuyển tệp tin từ thưmục hiện tại sang thư mục đích
FileManager::copyFile
(string currentDir, string
Phương thức này sao chép tệp tin từ một thư mục hiện tạisang một thư mục đích
13