Professional Documents
Culture Documents
B2104821 Lab5 LeThanhSon
B2104821 Lab5 LeThanhSon
LAB 5
GIỚI THIỆU VỀ SHELL VÀ CÁC LỆNH CƠ BẢN
- 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 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ơ
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ơ
$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ơ
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ơ
Bài 13:
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ơ
-$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ơ
- find / -mtime 0
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ơ
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ơ
$ 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
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.