Download as pdf or txt
Download as pdf or txt
You are on page 1of 48

Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

LAB 5
GIỚI THIỆU VỀ SHELL VÀ CÁC LỆNH CƠ BẢN

Họ tên và MSSV: Lê Thành Sơn


Nhóm học phần: 07

- Các sinh viên bị phát hiện sao chép bài của nhau sẽ nhận 0đ cho tất cả bài thực hành của môn này.
- Bài nộp phải ở dạng PDF. Tên file PDF đặt theo cấu trúc “MSSV_Lab5_HoTen”. Ví dụ, SV có
MSSV là B1234 và Họ tên là “Nguyễn Văn A”; tên file sẽ đặt như sau
“B1234_Lab5_NguyenVanA”.
- Yêu cầu: SV cần có máy cài đặt hệ điều hành Ubuntu và đặt tên máy là UbuntuMSSV (với MSSV là
Mã số sinh viên của SV).
- Hướng dẫn cách trình bày: đối với từng câu hỏi, SV cung cấp lệnh/script để giải quyết bài toán, sau
đó chụp màn hình kết quả test ở máy ảo và dán vào file trả lời.
- Yêu cầu khi chụp hình: cần phải thấy được tên máy UbuntuMSSV, lệnh sử dụng và kết quả rõ
ràng.
- Sau đây là ví dụ mẫu để minh họa. Trong ví dụ này máy của sử dụng tên là Ubuntu20043, còn
khi SV làm bài thì tên máy của SV bắt buộc phải là UbuntuMSSV.

Bài 0: chuyển về thư mục home

Bài 1:
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

Chuỗi: drwxr-x—
d: biểu hiện tập tin thư mục
owner:
r: quyền đọc
w: quyền ghi
x: quyền qua lại
r: quyền đọc
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

Có 17 nội dung liên kết tới thư mục


Kích thước tập tin 4096bytes
Bài 2:

Bài 3:
Hãy giải thích chi tiết mục từ thư mục:
drwxr-xr-- 2 abc users 1024 Mar 7 12:35 ddd
d: đây là một thư mục (directory).
rwx: quyền truy cập của chủ sở hữu (owner) là có thể đọc (read), ghi (write) và thực thi (execute).
r-x: quyền truy cập của nhóm người dùng (group) là có thể đọc và thực thi.
r--: quyền truy cập của các người dùng khác (others) là không có quyền truy cập.
Thông số tiếp theo là số lượng liên kết tới thư mục này, trong trường hợp này là 2 liên kết. Tiếp theo là tên
chủ sở hữu của thư mục này (abc) và tên nhóm người dùng (users). Sau đó là dung lượng của thư mục này,
ở đây là 1024 byte. Cuối cùng là thời gian tạo và chỉnh sửa của thư mục này, ở đây là vào ngày 7 tháng 3
lúc 12:35.
Bài 4:
Trong hệ thống tập tin Linux, các tập tin cấu hình hệ thống thường được lưu trữ trong thư mục /etc. Thư
mục này chứa các tập tin cấu hình cho các chương trình và dịch vụ khác nhau trên hệ thống, bao gồm các
tập tin cấu hình cho mạng, bảo mật, phần cứng, phần mềm, và nhiều hơn nữa. Các tập tin trong thư mục
/etc thường được lưu trữ dưới dạng văn bản và có thể được chỉnh sửa bằng các trình soạn thảo văn bản như
vi hoặc nano. Tuy nhiên, lưu ý rằng thay đổi các tập tin cấu hình này có thể ảnh hưởng đến hoạt động của
hệ thống, do đó cần cẩn thận và có kiến thức để thực hiện các thay đổi.
Bài 5:
Hai thư mục trong hệ thống tập tin Linux có chứa các tập tin thư viện lệnh là:
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

-/lib - Thư mục này chứa các tập tin thư viện cố định (static libraries) được sử dụng bởi hệ thống và các
ứng dụng trên hệ thống. Các thư viện này được tạo ra và liên kết trực tiếp với các chương trình, do đó chúng
không thể được tải động vào thời điểm chạy.

-/usr/lib - Thư mục này chứa các tập tin thư viện động (shared libraries) được sử dụng bởi các ứng dụng
trên hệ thống. Các thư viện này được tạo ra riêng biệt và được tải động vào thời điểm chạy, cho phép chúng
được sử dụng chung bởi nhiều chương trình khác nhau, giảm thiểu việc dư thừa dữ liệu trên hệ thống.
Bài 6:
Trong hệ thống tập tin Linux, có hai thư mục có tên giống nhau nhưng có chức năng khác nhau là:

/ - Thư mục gốc (root directory): Đây là thư mục cấp cao nhất trong hệ thống tập tin Linux, được đặt trực
tiếp trên ổ đĩa cứng và chứa tất cả các thư mục và tập tin trên hệ thống. Thư mục gốc thường được ký hiệu
bởi dấu gạch chéo ngược (/) và là điểm bắt đầu cho toàn bộ hệ thống tập tin.

/root - Thư mục root (root user's home directory): Đây là thư mục chứa tài khoản home directory của user
root (người dùng với quyền cao nhất trên hệ thống). Thư mục /root có thể được truy cập và sử dụng bởi
user root để lưu trữ các tập tin và dữ liệu cá nhân của họ.

Vì vậy, sự khác nhau giữa / và /root là thư mục / là thư mục gốc của toàn bộ hệ thống tập tin Linux, trong
khi /root là thư mục cá nhân của người dùng root.
Bài 7:
1. cd ~
khi sử dụng lệnh "cd ~" thì hệ thống sẽ chuyển đến thư mục "/home/user1" (hoặc "/Users/user1" trên
MacOS).
2. cd .
"cd ." là một lệnh trong hệ thống tập tin Linux và Unix, dùng để di chuyển thư mục hiện tại sang thư mục
hiện tại (tức là không thay đổi thư mục hiện tại). Ký tự "." đại diện cho thư mục hiện tại và khi được sử
dụng trong lệnh "cd", nó sẽ không làm thay đổi thư mục hiện tại.

Ví dụ, nếu thư mục hiện tại là "/home/user1/Documents", khi sử dụng lệnh "cd .", thư mục hiện tại sẽ vẫn
là "/home/user1/Documents". Tuy nhiên, lệnh "cd .." có thể được sử dụng để di chuyển thư mục hiện tại
lên một cấp độ và trở về thư mục cha của thư mục hiện tại.
3. cd ..
"cd .." là một lệnh trong hệ thống tập tin Linux và Unix, được sử dụng để di chuyển thư mục hiện tại lên
một cấp độ và trở về thư mục cha của thư mục hiện tại. Ký tự ".." đại diện cho thư mục cha của thư mục
hiện tại và khi được sử dụng trong lệnh "cd", nó sẽ di chuyển thư mục hiện tại lên một cấp độ, trở về thư
mục cha của thư mục hiện tại.

Ví dụ, nếu thư mục hiện tại là "/home/user1/Documents", khi sử dụng lệnh "cd ..", thư mục hiện tại sẽ trở
thành "/home/user1". Bạn có thể tiếp tục sử dụng lệnh "cd .." để di chuyển thư mục hiện tại lên các cấp độ
cao hơn, trở về các thư mục cha khác nhau trong hệ thống tập tin của bạn.
4. cd ten_tai_khoan_login
Trong hệ thống tập tin Linux và Unix, nếu bạn sử dụng lệnh "cd ten_tai_khoan_login" (với
"ten_tai_khoan_login" là tên tài khoản đăng nhập của một người dùng), thư mục hiện tại sẽ được chuyển
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

đến thư mục home của người dùng đó. Thư mục home là thư mục mặc định mà mỗi người dùng được cấp
phát trong hệ thống và thường được đặt tại đường dẫn "/home/ten_tai_khoan_login".

Ví dụ, nếu bạn muốn chuyển đến thư mục home của tài khoản đăng nhập "user1", bạn có thể sử dụng lệnh
"cd /home/user1" hoặc "cd user1". Ký tự "" đại diện cho thư mục home của người dùng hiện tại và
"~ten_tai_khoan_login" đại diện cho thư mục home của tài khoản đăng nhập "ten_tai_khoan_login".
Bài 8:
Thư mục tương ứng khi thực hiện tuần tự các lệnh sau khi thư mục hiện hành là /var/spool là
"/var/spool/mail":

-Lệnh "cd mail" sẽ di chuyển thư mục hiện tại từ "/var/spool" đến "/var/spool/mail".
-Lệnh "cd ../../spool/mail" sẽ di chuyển thư mục hiện tại từ "/var/spool/mail" lên 2 cấp độ (về thư mục
"/var") và sau đó di chuyển xuống thư mục "/var/spool/mail" nên thư mục hiện tại sẽ là "/var/spool/mail".
Bài 9:
$cd /var

$ls /sbin
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

-Không thể xóa được thư mục b2104821


Bài 10:
$ls ~
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

$ls –a ~

Bài 11:
Thực hiện các yêu cầu sau:
1. Hiển thị 4 dòng cuối của tập tin /etc/passwd
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

2. Hiển thị 6 dòng cuối của tập tin /etc/group


Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

3. Hiển thị 8 dòng cuối của tập tin /etc/login.defs

4. Hiển thị 20 dòng cuối của tập tin /etc/login.defs và cho nhận xét
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

Nhận xét: Tập tin /etc/login.defs chứa các cấu hình cho việc đăng nhập vào hệ thống. Khi hiển thị 20 dòng
cuối của tập tin này, ta có thể thấy các cấu hình như chiều dài tối thiểu của mật khẩu, thời gian tối thiểu
giữa các lần thay đổi mật khẩu, số lần đăng nhập không thành công tối đa trước khi tài khoản bị khóa, v.v.
Các cấu hình này có thể được sửa đổi bằng cách chỉnh sửa tập tin /etc/login.defs.
Bài 12:
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

-Không tìm thấy .bash_profile đổi sang file .profile


Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

cp one two three four five r1 r2 /tmp


Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

Bài 13:
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

-$cat > hello.py


print(”Hello”)
print(“How are you?”)
-$cat > reply
print(“Hello”)
print(“fine.And you?”)
-Kiểm tra lại lệnh bằng $ls -l
-Dùng lênh python3 hello.py để chạy chương trình:
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

- Dùng lênh python3 reply.py để chạy chương trình:


Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

-Dùng lênh $chmod +x hello.py reply.py để cung cấp quyền thực thi
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

-Dùng lại lênh python3 hello.py & python3 reply.py để chạy lại chương trình:
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

-Nhận xét: như ta thấy chương trình k có sự thay đổi


-Thay đổi quyền của nhóm other:
$chmod o-rx hello.py
$chmod o-rx reply.py
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

-Kiểm tra lại quyền ở other:


$ls -l hello.py
$ls -l reply.py

-Thay đổi quyền của nhóm người dùng group:


$chmod g-rwx hello.py
$chmod g-rwx reply.py
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

-Kiểm tra lại quyền:


$ls -l hello.py
$ls -l reply.py
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

-$chmod g+rx hello.py reply.py và kiểm tra lại quyền thực thi:

-$sudo chown root hello.sh và kiểm tra lại bằng lệnh $ls –l hello.py
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

-Xoá file:
$rm hello.py
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

-$echo "echo Hello1" > hello1 và lệnh $chmod u+x hello1 (u+x: cho phép người dùng có quyền thực thi
tập tin)
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

-Nếu một người dùng khác chạy tập tin hello1 đó, kết quả phụ thuộc vào quyền truy cập
của người dùng đó trên tập tin đó. Nếu người dùng đó không có quyền truy cập hoặc
không được phép thực thi tập tin, họ sẽ không thể chạy nó. Nếu họ chạy thành công tập
tin, nó sẽ thực hiện lệnh “echo Hello1” và in ra chuỗi “Hello1” trên terminal.
Chạy thử trên username = test.
-Để tập tin hello1 có thể chạy được bởi người dùng nào đó trong hệ thống
(user1 chẳng hạn) thì cần có điều kiện gì ? Đưa ra các giải pháp có thể.
-Để tập tin “hello1” có thể chạy được bởi người dùng nào đó trong hệ thống (user1 chẳng
hạn), cần phải có quyền truy cập và thực thi tập tin đó. Bạn có thể sử dụng lệnh chmod để
cấp quyền truy cập và thực thi cho tập tin “hello1”. Ví dụ, để cấp quyền truy cập và thực
thi cho tất cả các người dùng trong hệ thống, hãy sử dụng lệnh sau:
$chmod a+rx hello1
-Nếu bạn muốn chỉ cấp quyền truy cập và thực thi cho một người dùng cụ thể (ví dụ:
user1), hãy sử dụng lệnh sau:
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

$chmod u+rx hello1


-Trong đó “u” là viết tắt của “user” (người dùng) và “+rx” có nghĩa là cấp quyền truy cập
và thực thi cho người dùng.
-Để người dùng nào đó trong hệ thống (user1 chẳng hạn) cấp quyền thực thi cho
người dùng khác (user2 chẳng hạn) thì đòi hỏi người dùng user1 cần có những
quyền gì ? Đưa ra giải pháp cụ thể (các câu lệnh để thực hiện).
-Để người dùng user1 có thể cấp quyền thực thi cho người dùng khác (user2 chẳng hạn),
cần phải có quyền truy cập và thực thi tập tin đó. Bạn có thể sử dụng lệnh chmod để cấp
quyền truy cập và thực thi cho tập tin “hello1”. Ví dụ, để cấp quyền truy cập và thực thi
cho tất cả các người dùng trong hệ thống, hãy sử dụng lệnh sau:
$chmod a+rx hello1
-Nếu bạn muốn chỉ cấp quyền truy cập và thực thi cho một người dùng cụ thể (ví dụ:
user2), hãy sử dụng lệnh sau:
$chmod u+rx hello1
=> Trong đó “u” là viết tắt của “user” (người dùng) và “+rx” có nghĩa là cấp quyền
truy cập và thực thi cho người dùng
-Đổi tên tập tin hello1 thành rm. Thực hiện việc xóa một tập tin nào đó đang tồn
tại (hello chẳng hạn). Điều gì sẽ xảy ra ? giải thích.
Nếu bạn đổi tên tập tin “hello1” thành “rm” và sau đó thực hiện việc xóa một tập tin nào
đó đang tồn tại (hello chẳng hạn), thì tập tin “rm” sẽ bị xóa thay vì tập tin “hello”. Điều
này xảy ra vì lệnh “rm” được sử dụng để xóa tập tin và nếu bạn đổi tên một tập tin thành
“rm”, lệnh này sẽ xóa tập tin đó thay vì thực hiện chức năng khác .
-Phân biệt các lệnh more, less, head, tail và cat. Cho ví dụ minh họa
-Dưới đây là một số khác biệt giữa các lệnh more, less, head, tail và cat trong Linux :
• cat: hiển thị nội dung của một tập tin trong terminal. Nó cũng có thể được sử dụng
để nối các tập tin lại với nhau.
• more: hiển thị nội dung của một tập tin một màn hình một lần cho các tập tin lớn.
Nếu nội dung của tập tin vừa với một màn hình, đầu ra sẽ giống như lệnh cat.
• less: hiển thị nội dung của một tập tin một màn hình một lần cho các tập tin lớn.
Nó nhanh hơn more vì nó không tải toàn bộ tập tin cùng lúc và cho phép điều
hướng qua lại trong tập tin bằng cách sử dụng phím page up / down. Lệnh less
cũng cho phép điều hướng cả tiến và lùi để bạn có thể tìm kiếm bất kỳ chuỗi tìm
kiếm nào ở bất kỳ điểm nào trong tài liệu.
• head: hiển thị vài dòng đầu tiên của một tập tin. Mặc định, nó hiển thị 10 dòng
đầu tiên của một tập tin.
• tail: hiển thị vài dòng cuối cùng của một tập tin. Mặc định, nó hiển thị 10 dòng
cuối cùng của một tập tin.
Bài 15:
-$ find / -name "*.html"
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

- $find / -user root


Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

- $ find /usr -type d -name "lib"


Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

- find /root -name "*.txt"


Lệnh này sẽ hiển thị thông báo lỗi “permission denied” vì người dùng không có quyền truy cập vào thư
mục /root.
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

- find / -mtime 0
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

- find / -type d –empty


Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

Bài 16:
- $grep -n root /etc/passwd | wc –l
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

- $grep -vn root /etc/passwd | wc –l


Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

- $grep -r echo /etc/init.d/* | wc –l


Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

- $grep -v '^#' /etc/login.defs | wc –l


Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

- $ grep -E '/bin/bash$' /etc/passwd | cut -d: -f1 | wc –l


Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

Bài 17:
$ ls -R > one
$ cat one
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

$ who > users


$cat users
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

$ ps -ef >> users


$cat users

$ less /etc/

$ wc /etc/passwd
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

$ sort /etc/group

$ netstat -atunp | grep tcp | grep LISTEN


$ echo "tao danh sach sinh vien"
sort > students
Nguyên Lý Hệ Điều Hành (CT178) - Khoa CNTT&TT - Đại học Cần Thơ

cat students
Bài 18:
Tạo tập tin “commands” trong thư mục home của người dùng có nội dung như sau:
cal /usr/bin 9416
date /bin 2860
who /usr/bin 8692
cat /bin 18056
lpd /usr/sbin 42012
Sau đó thực hiện các yêu cầu:
1. Giải thích output của pipeline khi thực thi lệnh : sort -r commands | head -1
=> Lệnh này sẽ sắp xếp các dòng trong tập tin “commands” theo thứ tự ngược lại và
hiển thị dòng đầu tiên của kết quả sắp xếp. Vì vậy, output của lệnh này sẽ là “lpd
/usr/sbin 42012”.
2. Giải thích output của pipeline khi thực thi lệnh : grep ^c commands | wc -l
=> Lệnh này sẽ tìm kiếm các dòng trong tập tin “commands” bắt đầu bằng chữ cái
“c” và đếm số lượng dòng tìm được. Vì vậy, output của lệnh này sẽ là số lượng dòng bắt
đầu bằng chữ cái “c”.
3. Giải thích output của pipeline khi thực thi lệnh :
grep at commands | sort | head -1
=> Lệnh này sẽ tìm kiếm các dòng trong tập tin “commands” chứa chuỗi “at”, sau đó
sắp xếp các dòng này theo thứ tự bảng chữ cái và hiển thị dòng đầu tiên của kết quả sắp
xếp. Vì vậy, output của lệnh này sẽ là dòng đầu tiên trong kết quả tìm kiếm và sắp xếp.

You might also like