Tải bản đầy đủ (.pdf) (24 trang)

Bài tập lớn linux và phần mềm mã nguồn mở

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.08 MB, 24 trang )

TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN

KỲ THI KẾT THÚC HỌC PHẦN
Tên đề tài: “Nghiên cứu về Hệ điều hành Linux và phân tích,
xây dựng bài tốn về quản lý tài khoản nhóm người dùng cho
phép thực hiện thêm các user vào hệ thống trên môi trường
Linux.”

Họ và tên sinh viên

:

Mã sinh viên

:

Lớp

: ĐH9C3

Tên học phần

: Linux và phần mềm nguồn mở

Giảng viên hướng dẫn :

Hà Nội, tháng 05 năm 2022


MỤC LỤC


LỜI MỞ ĐẦU .............................................................................................. 1
CHƯƠNG I: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH LINUX ................... 2
CHƯƠNG II: QUẢN LÝ NHÓM NGƯỜI DÙNG TRÊN MÔI
TRƯỜNG LINUX ....................................................................................... 5
CHƯƠNG III: XÂY DỰNG CHƯƠNG TRÌNH ..................................... 6
KẾT LUẬN ................................................................................................ 17
TÀI LIỆU THAM KHẢO ........................................................................ 18
PHỤ LỤC ................................................................................................... 19


LỜI MỞ ĐẦU
Hiện nay, với trào lưu phát triển mạnh mẽ của các nền tảng hệ điều
hành mở dựa trên Linux (Fedora, Ubuntu, SuSE, OpenSolaris…) Các ứng
dụng mã nguồn mở (Open source software) cũng phát triển mạnh để đáp ứng
nhu cầu sử dụng phần mềm trên các hệ điều hành mới này. Song song với
các ứng dụng cho các hệ điều hành họ Unix, các nhà lập trình ứng dụng mã
nguồn mở cũng phát triển các ứng dụng này cho các dòng hệ điều hành khác
như dòng hệ điều hành thương mại Windows, Mac và các ứng dụng này cũng
hoàn tồn miễn phí. Điểm mạnh của các ứng dụng mã nguồn mở là đều miễn
phí đối với người sử dụng. Ngồi việc cho khơng các phần mềm, mã nguồn
của một phần mềm này cũng được cho không nhằm tạo điều kiện cho cộng
đồng đóng góp và phát triển thêm theo tiêu chí người dùng cũng có thể cùng
phát triển phần mềm. Ngồi ra, với đặc điểm là miễn phí, phần mềm mã
nguồn mở cịn giúp cho các quốc gia, cơng ty giảm thiểu chi phí mua các
phần mềm thương mại với giá trên trời, tạo điều khiện giảm tỷ lệ vi phạm
bản quyền phần mềm. Điều này tạo cho phần mềm mã nguồn mở một ưu thế
cạnh tranh trong bối cảnh nền kinh tế hiện nay.

1



CHƯƠNG I:
TỔNG QUAN VỀ HỆ ĐIỀU HÀNH LINUX
1.1.

Giới thiệu về Linux
Linux là một hệ điều hành phát triển dựa vào hệ điều hành Unix và

được phát hành miễn phí. Hệ điều hành này được cài đặt từ máy tính cá nhân
đến các server chuyên dụng. Thành phần cơ bản của Linux là hạt nhân Linux
(Linux kernel), là nhân hệ điều hành được phát triển bởi Linus Torvalds.
Linux được công bố lần đầu tiên vào tháng 9 năm 1991 với phiên bản 0.01.
Linux hiện có khá nhiều các bản phân phối khác nhau tất cả đều có một đặc
điểm chung là có một Linux kernel bên trong.
Linux ban đầu được phát triển cho các máy tính cá nhân dựa trên kiến
trúc Intel x86, nhưng sau đó đã được ported sang nhiều nền tảng hơn bất kỳ
hệ điều hành nào khác. Do sự thống trị của Android trên điện thoại thông
minh, Linux cũng có cơ sở được cài đặt lớn nhất trong tất cả các hệ điều hành
có mục đích chung. Mặc dù nó chỉ được sử dụng bởi khoảng 2.3% máy tính
để bàn, nhưng Chromebook, chạy Chrome OS dựa trên nhân Linux, thống
trị thị trường giáo dục K–12 của Mỹ và chiếm gần 20% doanh số notebook
dưới 300 đô la ở Mỹ. Linux là hệ điều hành hàng đầu trên các máy chủ (hơn
96,4% trong số 1 triệu hệ điều hành máy chủ web hàng đầu là Linux), dẫn
đầu các hệ thống big iron như các hệ thống mainframe, và là hệ điều hành
duy nhất được sử dụng trên các siêu máy tính TOP500 (kể từ tháng 11 năm
2017, đã dần dần loại bỏ tất cả các đối thủ cạnh tranh).
Linux cũng chạy trên các hệ thống nhúng, tức là các thiết bị có hệ điều
hành thường được tích hợp vào firmware và được thiết kế riêng cho hệ thống.
Điều này bao gồm routers, điều khiển tự động hóa, cơng nghệ nhà thông
minh (giống như Google Nest), TV (các smartTv của Samsung và LG dùng

Tizen và WebOS, tương ứng), ô tô (ví dụ, Tesla, Audi, Mercedes-Benz,
Hyundai, và Toyota đều dựa trên Linux), máy quay video kỹ thuật số, video

2


game consoles, và smartwatches. Hệ thống điện tử của Falcon 9 và Dragon
2 sử dụng phiên bản Linux tùy biến.
Linux là một trong những ví dụ nổi bật nhất của phần mềm tự do nguồn
mở và của việc phát triển mã nguồn mở. Mã nguồn có thể được dùng, sửa
đổi và phân phối - thương mại hoặc phi thương mại - bởi bất kỳ ai theo các
điều khoản của giấy phép tương ứng, ví dụ như GNU General Public License.
1.2.

Kiến trúc của Linux

Kiến trúc của Linux chia làm 3 thành phần: Kernel, Shell, Applications.
– Kernel: Đây là phần quan trọng và được ví như trái tim của HĐH, phần
kernel chứa các module, thư viện để quản lý và giao tiếp với phần cứng và
các ứng dụng.
– Shell: Shell là một chương trình có chức năng thực thi các lệnh từ người
dùng hoặc từ các ứng dụng.
– tiện ích yêu cầu chuyển đến cho Kernel xử lý.
– Applications: Là các ứng dụng và tiện ích mà người dùng cài đặt trên
Server. Ví dụ: ftp, samba, Proxy, …
1.3.

Ưu điểm và nhược điểm của hệ điều hành Linux.

❖ Ưu điểm:

• Hồn tồn miễn phí.
• Độ an tồn cao.
• Tính linh hoạt cao.
• Hướng dẫn sử dụng phong phú.
• Chạy ổn định cả trên các máy tính cấu hình yếu.
❖ Nhược điểm:
▪ Địi hỏi người dùng phải thành thạo, mất thời gian để làm quen.
▪ Phần cứng ít được hỗ trợ.
▪ Các phần mềm cịn hạn chế.
▪ Thiếu chuẩn hóa.

3


1.4.

Các distro phổ biến của Linux

➢ Debian
Debian là một distro chứa số lượng các phần mềm rất lớn. Debian
được xây dựng bởi một tổ chức nguyên tình nguyện cống hiến để phát
triển phần mềm tự do và đẩy mạnh những lý tưởng của cộng đồng phần
mềm tự do. Debian có tiếng về mối liên kết chặt chẽ với triết lí Unix và
phần mềm tự do. Nó cũng có tiếng về sự phong phú cho các chọn lựa:
Phiên bản phát hành hiện tại có hơn 29000 gói phần mềm cho 11 kiến
trúc máy tính, từ kiến trúc ARM thường gặp ở các hệ thống nhúng và
kiến trúc máy tính lớn s390 của IBM cho đến các kiến trúc thường gặp
trên máy tính cá nhân hiện đại như x86 và Power.
➢ Ubuntu
Hệ điều hành Ubuntu là một trong những bản phân phối Linux phổ

biến nhất hiện nay do Mark Shuttleworth sáng lập và công ty Canonical
của ông tài trợ. Hệ điều hành này được sử dụng phổ biến và ưa chuộng
vì có giao diện đẹp, thân thiện, dễ sử dụng, kho phần mềm ứng dụng rất
phong phú đáp ứng được hầu hết yêu cầu của người dùng, các version
được cập nhật liên tục. Ubuntu được chia làm 2 loại: Ubuntu Desktop và
Ubuntu Server.
➢ CentOS
CentOS là viết tắt của Community Enterprise Operating System. CentOS
là một bản phân phối hệ điều hành tự do dựa trên Linux kernel. Có nguồn
gốc hồn tồn từ bản phân phối RHEL. CentOS thường được sử dụng trong
các doanh nghiệp bởi tính ổn định vịng đời End-of-Life dài.

4


CHƯƠNG II:
QUẢN LÝ NHĨM NGƯỜI DÙNG TRÊN MƠI TRƯỜNG LINUX
2.1.

Định nghĩa nhóm người dùng

• Nhóm người dùng (Group) là tập hợp nhiều user lại.
• Mỗi user ln là thành viên của một group.
• Khi tạo một user thì mặc định một group được tạo ra.
• Mỗi group cịn có một định danh riêng gọi là GID.
• Định danh của group thường sử dụng giá trị bắt đầu từ 500.
2.2.

Quản lý nhóm người dùng


• Kiểm tra danh sách group: Thơng tin của 1 group trong file
/etc/group, tương tự để hiển thị danh sách group chúng ta sử dụng
command cat
➔ cat /etc/group
Thông tin 1 group trong file /etc/group như sau:
[Group name]:[Group password]:[GID]:[Group members]
• Tạo mới 1 group:
Tạo 1 group: sudo groupadd group-name
Tạo nhiều group: sudo groupadd group1, group2, group3
• Liệt kê danh sách User trong Groups
sudo groups và sudo groups user1
• Xóa 1 group: sudo groupdel group1

5


CHƯƠNG III:
XÂY DỰNG CHƯƠNG TRÌNH
3.1.

Giới thiệu về Shell Script trong Linux
Thường shell sẽ tương tác, có nghĩa là nó sẽ chấp nhận lệnh là đầu vào

từ người dùng và thực thi chúng. Tuy nhiên, đôi khi chúng ta muốn thực
thi một loạt các lệnh, để làm như thế chúng ta sẽ phải gõ tất cả các lệnh
vào Terminal. Điều này sẽ làm cho lệnh của chúng ta dài và gây khó hiểu.
Vì shell cũng có thể nhận các lệnh làm đầu vào từ file, chúng ta có thể
viết các lệnh trong một file và có thể thực thi chúng trong shell, tránh các
công việc lặp đi lặp lại. Các file này được gọi là Shell Script hoặc Shell
Programs. Các Shell script tương tự như batch file trong MS-DOS. Mỗi

shell script được lưu với phần mở rộng tệp .sh (hoặc .bash).
Một shell script có cú pháp giống bất kỳ ngơn ngữ lập trình khác. Nếu
bạn có kinh nghiệm với bất kỳ ngơn ngữ lập trình nào thì sẽ rất dễ dàng bắt
đầu với nó. Shell script bao gồm các thành phần sau:
▪ Shell Keywords – if, else, break etc.
▪ Shell commands – cd, ls, echo, pwd, touch etc.
▪ Functions
▪ Control flow – if..then..else, case, shell loops,…
3.2.

Chương trình quản lý nhóm người dùng

❖ Chạy chương trình:
Để chạy chương trình cần sử dụng user root.
Nếu chạy chương trình bằng người dung bình thường chương trình sẽ
đưa ra thơng báo và đưa người dùng chuyển sang user root.

6


❖ Menu chương trình:

Hình 3.2. Menu chương trình

7


❖ Chức năng hiển thị danh sách nhóm tài khoản:

Hình 3.3, 3.4. Danh sách nhóm người dùng


❖ Chức năng thêm nhóm mới:

Hình 3.5. Thêm nhóm người dùng

Hình 3.6. Kết quả thêm nhóm người dùng thành cơng

8


❖ Chức năng xố nhóm người dung:

Hình 3.7. Chức năng xố nhóm người dùng

Hình 3.8. Kết quả xố nhóm

9


❖ Chức năng tìm kiếm nhóm:
▪ Trường hợp nhóm cần tìm kiếm khơng tồn tại:

Hình 3.9. Kết quả khi tìm kiếm nhóm khơng tồn tại

Hình 3.10. Kết quả khi tìm kiếm nhóm thành cơng

10


❖ Chức năng chỉnh sửa tên nhóm:


Hình 3.11. Chức năng đổi tên nhóm

Hình 3.12. Đổi tên nhóm thành cơng

11


❖ Chức năng chỉnh sửa GID:

Hình 3.13. Chức năng thay đổi GID

❖ Chức năng xem GID của người dùng:

Hình 3.14. Chức năng xem GID của người dùng

12


❖ Liệt kê danh sách nhóm của người dùng:

Hình 3.15. Chức năng xem danh sách nhóm của người dùng

❖ Chức năng thêm tài khoản mới vào nhóm:

Hình 3.16. Chức năng thêm người dùng mới vào nhóm

13



❖ Thốt chương trình:

Hình 3.17. Thốt chương trình

❖ Code chương trình:

Hình 3.18. Code chương trình (dịng 1 - 37)

14


Hình 3.19. Code chương trình (dịng 38 - 71)

Hình 3.20. Code chương trình (dịng 72 - 99)

15


Hình 3.21. Code chương trình (dịng 100 - 121)

16


KẾT LUẬN
Qua quá trình làm bài tập lớn này, em đã áp dụng các kiến thức được học
và cũng học hỏi thêm được rất nhiều kiến thức. Cơ bản nắm được kiến thức
về linux và phần mềm mã nguồn mở. Do thời gian khơng nhiều nên một số
danh mục có thể chưa hồn thiện và vẫn cịn một số hạn chế, mong các thầy
cô nhận xét để em trau dồi kiến thức cho bản thân và hoàn thiện các chức
năng hơn nữa.

Em xin chân thành cảm ơn!

17


TÀI LIỆU THAM KHẢO

1. Giáo trình quản trị hệ thống linux 1,2 Tiếng việt.
2. Hệ điều hành linux căn bản.
3. Jason Cannon, Linux for beginners.
4. Ahmed Akabary, Learn Linux Quickly.

18


PHỤ LỤC
❖ Code chương trình
#!/bin/bash
clear
echo "Ten SERVER --- $(hostname)"
if [ $(id -u) == 0 ]
then
while :
do
clear
echo "--------------------------"
echo "
MENU
"
echo "--------------------------"

echo "1. Hien thi danh sach nhom tai khoan (group)"
echo "2. Them nhom moi"
echo "3. Xoa nhom tai khoan"
echo "4. Tim kiem nhom tai khoan"
echo "5. Chinh sua ten nhom tai khoan"
echo "6. Thay doi GID cua nhom"
echo "7. Xem group cua nguoi dung"
echo "8. Danh sach Groups cua User"
echo "9. Them tai khoan vao nhom"
echo "10. Thoat"
read -p "Lua chon cac gia tri tu [1-9]: " select
case $select in
1)
echo "Danh sach nhom tai khoan (group) trong he thong "
echo "---------------------"
cat /etc/group
read -p "Nhan ENTER de tiep tuc chuong trinh" readEnterkey
;;
2)
read -p "Nhap ten group can them: " newgroupname
groupadd $newgroupname
cat /etc/group
echo "Them group thanh cong"
echo "---------------------"

19


cat /etc/group
read -p "Nhan ENTER de tiep tuc chuong trinh" readEnterkey

;;
3)
read -p "Nhap ten group can xoa: " delgrname
while [ `cat /etc/group | grep $delgrname:x -c ` -eq 0 ]
do
echo "Nhom nay khong ton tai"
read -p "Nhap ten group can xoa: " delgrname
done
groupdel $delgrname
cat /etc/group
echo "Xoa group thanh cong"
echo "---------------------"
read -p "Nhan ENTER de tiep tuc chuong trinh" readEnterkey
;;
4)
read -p "Nhap ten group can tim: " sgr
if [ `grep -i $sgr:x /etc/group -c` -eq 0 ]
then
echo "Khong co group ten $sgr!"
else
echo "Group $sgr co ton tai!"
echo ""
grep $sgr:x /etc/group
fi
read -p "Nhan ENTER de tiep tuc chuong trinh" readEnterkey
;;
5)
read -p "Nhap ten nhom tai khoan can doi: " editgr
while [ `cat /etc/group | grep $editgr:x -c ` -eq 0 ]
do

echo "Nhom nay khong ton tai"
read -p "Nhap ten nhom tai khoan can doi: " editgr
done
read -p "Nhap ten nhom moi: " newgr
groupmod -n $newgr $editgr
cat /etc/group
echo "Ten group da duoc cap nhat!"

20


read -p "Nhan ENTER de tiep tuc chuong trinh" readEnterkey
;;
6)
read -p "Nhap ten nhom can doi GID: " namegr
while [ `cat /etc/group | grep $namegr:x -c ` -eq 0 ]
do
echo "Nhom nay khong ton tai"
read -p "Nhap ten nhom can doi GID: " namegr
done
echo "GID hien tai la: `grep -i $namegr:x /etc/group`"
read -p "Nhap GID moi: " ngid
groupmod -g $ngid $namegr
echo "GID da duoc cap nhat!"
grep $namegr:x /etc/group
read -p "Nhan ENTER de tiep tuc chuong trinh" readEnterkey
;;
7)
read -p "Nhap ten nguoi dung can xem: " guser
echo "GID nhom cua nguoi dung $guser la: `id -g $guser`"

read -p "Nhan ENTER de tiep tuc chuong trinh" readEnterkey
;;
8)
read -p "Nhap ten user can xem nhom: " name
while [ `cat /etc/passwd | grep $name:x -c ` -eq 0 ]
do
echo "Nguoi dung khong ton tai"
read -p "Nhap ten user can xem nhom: " name
done
groups $name
read -p "Nhan ENTER de tiep tuc chuong trinh" readEnterkey
;;
9)
read -p "Nhap ten nguoi dung moi: " uname
read -p "Nhap ten nhom cho nguoi dung moi: " gname
while [ `cat /etc/group | grep $gname:x -c ` -eq 0 ]
do
echo "Nhom nay khong ton tai"
read -p "Nhap ten nhom cho nguoi dung moi: " gname
done
useradd $uname -g $gname

21


echo "Nguoi dung moi duoc them thuoc nhom sau: "
groups $uname
id $uname
read -p "Nhan ENTER de tiep tuc chuong trinh" readEnterkey
;;

10)
echo "Thoat khoi chuong trinh!"
exit
esac
done
else
echo "Phai chuyen sang user root de chay chuong trinh!"
sudo su
fi

22



×