Kiến trúc bên ngồi Unix/Linux
1. Quản lý người dùng (Users)
Ngơ Duy Hòa – KHMT - CNTT
Đa người dùng (multiusers)
Đa người dùng (tiếp)
• Cho phép chạy đồng thời và độc lập nhiều
ứng dụng của nhiều người dùng.
– Đồng thời (concurrently):
• Kích hoạt cùng một lúc.
• Cùng yêu cầu các tài nguyên hệ thống:
CPU,RAM,HDD,...
– Độc lập (independently):
• Khơng quan tâm đến các ứng dụng của người
dùng khác đang làm gì.
Đa người dùng (tiếp)
• Local System:
– Các ứng dụng và tài nguyên trên cùng 1 máy.
– Nhiều người dùng cùng thực hiện
• Network System:
– Thực hiện qua môi trường mạng (Networking)
– Cho phép người dùng ở xa truy nhập đến tài
nguyên hệ thống (remote user)
u cầu với hệ thống
• Cơ chế mã hóa và xác nhận người dùng.
• Cơ chế bảo vệ chống các chương trình
độc hại thực hiện cơng việc:
– Chặn các chương trình khác.
– Có khả năng lây nhiễm, gián điệp,..
• Cơ chế về tài khoản người dùng:
– Hạn chế quyền truy cập đến tài nguyên hệ
thống đối với mỗi người dùng.
1
Người dùng (Users)
• Đăng nhập (login) bằng tài khoản của
mình (account)
• Sở hữu một vùng ổ cứng riêng (private)
để lưu trữ dữ liệu cá nhân.
• Được gán quyền làm việc nhất định đối
với các tài nguyên.
Các file liên quan
• /home : thư mục gốc làm việc.
• /etc/skel : chứa các file cấu hình mặc định:
– Shell : .bash_profile, .bashrc, .bash_logout.
– KDE : .kde & GNOME : Desktop.
• /etc/shells : các tên Shell: bash, tcsh,…
• /etc/passwd & /etc/shadow : thơng tin người
dùng.
• /etc/group & /etc/gshadow: thơng tin nhóm
người dùng.
• /etc/login.defs : một số thông tin mặc định cho
người dùng.
Tài khoản người dùng
/etc/passwd
• Tài khoản (account) có 2 phần:
– Tên đăng nhập (login name): không chứa các
ký tự đặc biệt: + - * / ~ ` ! ‘ “ ? : ..
– Mật khẩu (password): ký tự bất kỳ. Đảm bảo
an toàn với số ký tự >= 6.
• Thơng tin về người dùng được lưu trữ
trong file: /etc/passwd.
• Thơng tin về mật khẩu lưu trữ trong file:
/etc/shadow.
•
•
•
•
Text file: 1 user – 1 line.
Thuộc quyền sở hữu của root user
Mọi người dùng đều có quyền đọc [ r ]
Chỉ có root user có quyền ghi [ w ]
Cấu trúc dữ liệu /etc/passwd
Ý nghĩa các trường thơng tin
•
•
•
•
•
•
•
Username: tên đăng ký để login.
Password: mật khẩu login vào hệ thống.
UID: mã người dùng.
GID: mã nhóm.
Comments: chú thích bổ sung.
Home directory: thư mục gốc làm việc.
Default Shell: Shell mặc định sau login.
2
Một số đặc điểm /etc/passwd
/etc/shadow
• Trường password trong /etc/passwd được
ký hiệu là X, tại sao ?
– Mọi người đều có thể đọc Ỉ dễ bị copy và
giải mã Ỉ khơng bảo mật.
• Khi thêm người dùng thì:
– UID,GID thường bắt đầu từ 500.
– Tự động tạo một nhóm riêng mặc định cho
mỗi người dùng Ỉ hay thấy UID = GID
Cấu trúc dữ liệu /etc/shadow
•
•
•
•
•
•
•
•
root:aer9a9reau34iajfakjeri73qa97:13788:0:99999:7:::
bin:*:13788:0:99999:7:::
daemon:*:13788:0:99999:7:::
adm:*:13788:0:99999:7:::
named:!!:13788:0:99999:7:::
postgres:!9reau3ekroiweriweri73qa:13788:0:99999:7:::
khmt::13788:0:99999:7:::
ndhoa:lawekroiweriwoierowier:13788:0:99999:7:::
Ý nghĩa các trường thơng tin (tiếp)
– Min : là số ngày mà trong thời gian đó có thể thay
đổi mật khẩu.
– Max : là số ngày mà sau đó bắt buộc phải thay đổi
mật khẩu.
– Warn : là số ngày trước khi hết hạn dùng mật khẩu,
cần cảnh báo cho người dùng.
– Inactive : Là số ngày được tính kể từ khi hết hạn sử
dụng,mật khẩu sẽ bị khóa.
– Expire : Là số ngày được xác định từ lúc mật khẩu bị
khóa đến nay.
– Flag : Trường dự trữ.
• Text file: 1 user – 1 line
• Mật khẩu được mã hóa DES - Data Encryption
Standard (hàm crypt() or md5 hash)
• Thuộc quyền sở hữu của root user
• Chỉ có root user có quyền ghi [ r ]
• Chỉ có root hoặc 1 số chương trình của root mới
được quyền thay đổi nội dung.
Ý nghĩa các trường thơng tin
• Username : tên truy nhập của người dùng.
• Password : mật khẩu sau khi mã hóa:
– Để trống nếu không cần password.
– Dấu * hoặc ! đứng đầu tức là tài khoản bị khóa (lock)
– Dấu !! tức là mật khẩu khơng được thiết lập
• Lastchg : là số ngày sử dụng mật khẩu tính từ
ngày 01/01/1970
Một số người dùng đặc biệt
• root: sở hữu tất cả mọi tài ngun,có thể thực
hiện mọi cơng việc trong hệ thống.
• Người dùng ảo (amd) phụ trách việc ghi nhật ký
hệ thống (log file).
• Người dùng ảo (bin) có quyền sở hữu tới các
file thực thi trong hệ thống.
• Người dùng ảo (lp hay lpd) hỗ trợ việc in ấn.
• Người dùng ảo (cron) hỗ trợ thực hiện các công
việc theo thời gian biểu cho trước.
3
Users && Groups
• Xét tình huống: Một nhân viên A có thể
tham gia các cơng việc sau sau:
– Làm lập trình viên : developers.
– Bảo mật hệ thống : security.
– Quản trị trang web : webgroups.
– Giảng dạy chuyên môn: teachers.
– ….
Nhóm (Groups)
• Bản chất: quyền truy nhập cho nhóm
được gán cho mọi thành viên trong nhóm.
• Nhóm khơng phải là tài khoản (account):
– Khơng dùng tên nhóm để đăng nhập
• Thơng tin nhóm được lưu trong các file:
– /etc/group: liệt kê các nhóm trong hệ thống.
– /etc/gshadow: lưu trữ mật khẩu của nhóm.
• Làm thế nào để chia xẻ dữ liệu giữa các
thành viên trong từng nhóm?
Cấu trúc file /etc/group
•
•
•
•
•
•
•
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
khmt:x:500:khmt
cntt:x:501:ndhoa,khmt
Ý nghĩa các trường
• Gr_name : Một nhóm - một tên riêng.
• Gr_password : Mật khẩu của nhóm.
• Gr_ID : Số đăng ký ID do hệ thống cung
cấp.
• Gr_member_list : Danh sách các người
dùng nằm trong nhóm.
Một số đặc điểm
Cấu trúc file /etc/gshadow
• Mật khẩu của nhóm được mã hóa và lưu
trữ trong file khác : /etc/gshadow
– Ngăn người dùng ngồi nhảy vào nhóm thơng
qua gọi newgrp
• Mặc định, hệ thống tạo 1 nhóm riêng
(private group) cho mỗi người dùng:
– Tên người dùng cũng là tên nhóm.
• Giá trị GID được cung cấp theo thứ tự
tăng dần.
•
•
•
•
•
•
•
root:::root
bin:::root,bin,daemon
daemon:::root,bin,daemon
sys:::root,bin,adm
adm:::root,adm,daemon
khmt:!::khmt
cntt:957l7KGUIV2E3:ndhoa:ndhoa,sv
4
Ý nghĩa các trường
• Gr_name: tên nhóm
• Gr_password : mật khẩu nhóm sau mã hóa:
– Dấu ! tức là khơng cho người ngồi nhảy vào nhóm.
– Dấu !! cũng như !, nhưng cịn có ý là mật khẩu khơng
được thiết lập trước đó
– Để trống, tức là khơng cần mật khẩu.
• Admin_list: danh sách quản trị nhóm:
– Thêm,bớt người dùng mới
– Đổi mật khẩu nhóm.
• Member_list: danh sách người dùng nằm trong
nhóm
Thêm người dùng vào hệ thống
• Thực hiện bằng quyền của root:
– Đăng nhập bằng root account.
– Chuyển sang người dùng root : su
– Thực hiện như root : sudo command
• Có 2 cách thêm users như sau:
– Sử dụng tool “ users and groups” trong
system tool.
– Thêm bằng tay : thực hiện các lệnh trong
Shell.
Sử dụng “Users and Groups”
Create New User window
User Properties window
Thêm người dùng bằng tay
• Các lệnh làm việc với nhóm (groups)
– Thêm : groupadd
– Thay đổi : groupmod
– Mậtkhẩu : gpasswd
• Các lệnh làm việc với người dùng (users)
– Thêm : useradd
– Thay đổi : usermod
– Mật khẩu : passwd.
5
Kiến trúc nhân (kernel)
2. Quản lý thiết bị
Device driver
• Thiết b lm vic ặ cn cú driver
ã Device driver:
Nhn dạng và tự cấu hình cho thiết bị.
– Cung cấp thư viện hàm I/O làm việc.
– Hỗ trợ cơ chế ngắt (interrupt)
• Kernel làm việc với thiết bị thơng qua
driver:
– Device driver nằm trong kernel.
– 1 driver = 1 module
Device driver - Module
Device – File System
• Có 2 cơ chế làm việc:
– Liên kết tĩnh (static) : được tích hợp sẵn trong
nhân (kernel)
• Kích thước kernel lớn
• Khi thay đổi 1 module Ỉ biên dịch lại kernel.
– Liên kết động (dinamic): được kết gán vào
kernel theo u cầu
• Kích thước kernel nhỏ hơn
• Linh hoạt hơn trong thay đổi, thêm bớt thiết bị.
6
Device files
Device files (tiếp)
• User process truy cập tới Device? (ví dụ
như tạo data file trong ổ cứng)
• User process ÆDevice driver Æ Device
Controller Æ Device
• Linux hỗ trợ tương tác giữa User process
và Device driver bởi file-like-object.
• file-like-object nằm trong file system và
được gọi là Device file.
• Device file nằm trên tầng File System nên
user có thể thực hiện các hàm sau:
Device file name
Một số tên Device file thông dụng
• Tên của device file phản ánh chức năng của
thiết bị.
• Các Device file được lưu trữ trong thư mục /dev
của file system.
• Đánh thứ tự cho các thiết bị cùng kiểu.
• Sử dụng liên kết mềm (symbol link) để người
dùng dễ nhớ:
– vd1: /dev/cdrom Ỉ/dev/hdc (cd-rom theo chuẩn IDE)
– Vd2: /dev/modem Ỉ /dev/ttyS1 (modem nối serial 1)
Device types
– Mở : open, đóng : close
– Đọc dữ liệu : read, ghi dữ liệu : write
• Device file chia làm 2 loại:
– Tương tác trực tiếp với thiết bị phần cứng.
– Chỉ tương tác với các tiến trình,kernel mà
khơng liên quan đến thiết bị cụ thể nào.
/dev/audio
File thiết bị cho Sound Card
/dev/cdrom
File thiết bị cho CDROM
/dev/fdn
File thiết bị cho các ổ đĩa mềm (n là chỉ số)
/dev/hdxn
File thiết bị cho phần cứng với giao tiếp IDE
/dev/lpn
File thiết bị cho cổng song song hoặc máy in
/dev/modem
File thiết bị cho MODEM
/dev/mouse
File thiết bị cho chuột
/dev/sdxn
File thiết bị cho phần cứng với giao tiếp SCSI
/dev/ttyn
File thiết bị giao tiếp ảo (teletype)
Block & Character Device
• Device file khơng phải là file thật (original)
vì khơng có địa chỉ cụ thể trong ổ cứng.
• Dữ liệu được đọc/ghi sẽ trao đổi trực tiếp
với Device driver.
• Linux chia Device file thành 2 loại chính:
– Block Device
– Character Device.
– Network interface.
7
Block Devive (b)
• Trao đổi theo từng
khối dữ liệu (block
data).
• Sử dụng bộ nhớ
đệm (buffer) để lưu
dữ liệu trung gian.
• Cho phép đọc dữ
liệu ở các vị trí ngẫu
nhiên (random)
• Vd: các thiết bị bộ
nhớ như HDD,
FDD,..
Character Device Types
• Unbuffered character device (u): khơng
dùng bộ nhớ đệm trong q trình trao đổi
dữ liệu.
• Pipe device – Named pipe (p): hỗ trợ liên
lạc giữa các tiến trình (interprocesses
communication).
Character Device (c)
• Đọc dữ liệu theo từng byte tuần tự.
• Khơng cho phép truy xuất dữ liệu ngẫu
nhiên.
• Character interface = Raw device
interface: dữ liệu khơng có cấu trúc.
• Khơng dùng buffer trung gian trong kernel,
thay vào đó dùng I/O queue.
• Ví dụ như: modem, teletype,…
Network Interface
• Làm việc trong mơi trường mạng.
• Có 2 loại Interface:
– Tương ứng với 1 thiết bị mạng (hardware)
– Tương ứng với 1 chương trình phần mềm
(software – loopback interface)
• Cơ chế làm việc:
– Trao đổi các gói thơng tin (package)
– Trao đổi theo luồng dữ liệu (stream)
Device Number
• Mỗi thiết bị (device) ứng với 1 giao tiếp
(interface): vd HDD – IDE
• Mỗi giao tiếp có thể gắn nhiều thiết bị (vd
trên 1 IDE có thể có HDD, CD-ROM,..)
• Mỗi giao tiếp được điều khiển bởi 1 vi điều
khiển (controller).
• Mỗi controller ứng với 1 driver.
• Cách phân biệt các thiết bị ???
Device Number (tiếp)
• Linux phân biệt thiết bị thơng qua 2 số:
– Major devive number:
• Đặc trưng cho 1 giao tiếp với thiết bị.
• Chỉ số tài ngun do kernel định nghĩa.
• Tương thích với cả block & charater device.
– Minor device number:
• Phân biệt giữa các thiết bị cùng số Major.
• Master device được đánh số từ 0,1,2,3..
• Slave device được đánh số từ 64,65,66,..
8
Common Block Devices
Device
Name
/dev/fd0
First floppy drive
Common Character Devices
Major
2
Minor
Major
Minor
/dev/lp0 or /dev/par0
6
0
Parallel port 1
/dev/lp1 or /dev/par1
6
1
First serial port
/dev/ttyS0
4
64
Second serial port
/dev/ttyS1
4
65
IDE tape drive
/dev/ht0
37
0
First SCSI tape drive
/dev/st0
9
0
Second SCSI tape drive
/dev/st1
9
1
System console
/dev/console
5
1
First virtual terminal
/dev/tty1
4
1
Second virtual terminal
/dev/tty2
4
2
Process's current terminal device
/dev/tty
5
0
Sound card
/dev/audio
14
4
Second floppy drive
/dev/fd1
2
1
/dev/hda
3
0
Primary IDE controller, master device, first partition
/dev/hda1
3
1
Primary IDE controller, secondary device
/dev/hdb
3
64
3
65
Secondary IDE controller, master device
/dev/hdc
22
0
Secondary IDE controller, secondary device
/dev/hdd
22
64
First SCSI drive
/dev/sda
8
0
First SCSI drive, first partition
/dev/sda1
8
1
Second SCSI disk
/dev/sdb
8
16
Second SCSI disk, first partition
/dev/sdb1
8
17
First SCSI CD-ROM drive
/dev/scd0
11
0
Second SCSI CD-ROM drive
/dev/scd1
11
1
Kernel module
• Là 1 thành phần của kernel được nạp vào RAM
khi cần.
• Là các file nằm trong ổ cứng có đi: *.o hay
*.so
• Nằm trong các thư mục con của
/lib/modules/version – trong đó version là phiên
bản kernel.
– …./kernel/drivers/sound: chứa module về cạc âm
thanh.
– …./kernel/drivers/net: chứa module về cạc mạng.
Ví dụ với USB
• Một số phiên bản Linux khơng h tr USB
t ng ặ cỏch kt ni ?
ã Thc hiện các bước:
– B1: kiểm tra xem driver modules cho USB:
• Core: usbcore.
• Data store: usb-storage.
• Host Controller: usb-uhci (Intel) hoặc usb-ohci
(Compaq) hoặc ehci-hdc (USB v 2.0).
– Tên các modules có đi là *.o , *.so, *.ko
Name
Parallel port 0
Primary IDE controller, master device
Primary IDE controller, secondary device, first partition /dev/hdb1
Device
0
Làm việc với Modules (modutils)
Command
Description
lsmod
Lists modules currently loaded.
insmod
Loads a module into the kernel. Does not check for
dependencies.
rmmod
Unloads a module currently loaded. Does not check for
dependencies.
modinfo
Display information about a module: -a (author),-d (description),
-p (module parameters), -f (module filename), -v (module
version).
depmod
Creates a dependency file listing all other modules on which
the specified module may rely.
modprobe
Loads a module with any dependent modules it may also need.
Uses the file of dependency listings generated by depmod:
-r (unload a module), -l (list modules)
Ví dụ với USB (tiếp)
• Thư mục chứa các modules:
/lib/modules/kernel_vers/kernel/drivers/usb
• Nạp các module:
#modprobe usb-storage
#modprobe usb-uhci
• Mount USB flash
#mkdir /mnt/flash
#mount /dev/sdax /mnt/flash (x =1,2,..thường = 1)
9
Thực hiện lsmod
Lấy thơng tin
• Sử dụng modinfo hoặc modprobe –v:
modinfo [options] <module> vd: modinfo hid
• Thêm module bằng insmod:
insmod /lib/modules/2.6.20-2.47.1/kernel/drivers/usb/hid.o
Using /lib/modules/2.6.20-2.47.1/kernel/drivers/usb/hid.o
Symbol version prefix 'smp_'
• Tháo module bằng rmmod :
rmmod hid
Một số thiết bị đặc biệt
• Linux hỗ trợ 1 số thiết bị ảo:
– Không làm việc với thiết bị thật.
– Chỉ làm việc với kernel memory
– Có chỉ số major number = 1.
/dev/null
• Linux xóa tất cả dữ liệu ki gửi đến nó.
[...]$ cat data.txt
01 02 03 04 05
06 07 08 09 10
11 12 13 14 15
[...]$ cat data.txt > /dev/null
--- nothing---
• Có 5 loại như sau:
– /dev/null
– /dev/full
– Loopback device
- /dev/zero
- /dev/random
• /dev/null tương đương với EOF
[...]$ cp /dev/null data.txt
[...]$ ls -l data.txt
-rw-rw---- 1 khmt khmt 0 Jan 7 00:27 data.txt
/dev/zero
• file bao gồm dãy vơ hạn các số 0
$ ./hexdump /dev/zero
0x000000 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x000010 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x000020 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x000030 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
• Tạo file với kích thước bất kỳ
$ dd if=/dev/zero of=data.txt count=20480
20480+0 records in
20480+0 records out
$ ls -l data.txt
-rw-rw---- 1 root root 10485760 Jan 8 00:56 data.txt
/dev/full
• Dùng để test các phần mềm khi:
– File system khơng cịn đủ chỗ trống.
– Ghi dữ liệu thêm Ỉ lỗi : errno = ENOSPC.
ặ Tng t nh ghi vo /dev/full
ã Vớ dụ :
$ cp /etc/fstab /dev/full
cp : /dev/full : No space left on device
10
Random device
• Tạo dãy ngẫu nhiên (random number)
• Standard C Library ặ pseudorandom
function.
ã Pseudorandom ph thuc vo ngun sinh
(initial value).
ã Linux initial value = time delay between
input actions: keystrokes, mouse
movements,..
/dev/random & /dev/urandom
/dev/random & /dev/urandom
• /dev/random : Nếu user khơng tác động
đến các thiết bị (chuột, bàn phím):
– tự động ngưng lại sau 1 thời gian nhất định
nào đó.
– Tiếp tục sinh ngẫu nhiên khi có tác động trở
lại.
• /dev/urandom: Chạy liên tục, khơng tự
động dừng lại.
• Vd: lệnh od đọc nội dung /dev/random
Loopback device
$ od -t x1 /dev/random (in ở dạng hexadecimal)
0000000 2c 9c 7a db 2e 79 3d 65 36 c2 e3 1b 52 75 1e 1a
0000020 d3 6d 1e a7 91 05 2d 4d c3 a6 de 54 29 f4 46 04
0000040 b3 b0 8d 94 21 57 f3 90 61 dd 26 ac 94 c3 b9 3a
0000060 05 a3 02 cb 22 0a bc c9 45 dd a6 59 40 22 53 d4
• Mơ phỏng một file thực (ordinary disk file)
như một block device.
• Ý nghĩa:
$ od -t x1 /dev/urandom (có thể dùng hexdump)
0000000 62 71 d6 3e af dd de 62 c0 42 78 bd 29 9c 69 49
0000020 26 3b 95 bc b9 6c 15 16 38 fd 7e 34 f0 ba ce c3
0000040 95 31 e5 2c 8d 8a dd f4 c4 3b 9b 44 2f 20 d1 54
......
• Có 2 loopback device:
Loopback device
• Loopback device được sử dụng như block
device nên:
– Có thể tạo file system (virtual file system).
– Có thể kết nối (mount) vào hệ thống.
• Ví dụ tạo một virtual file system:
– Mục đích:
• Tạo 1 đĩa ảo trên đó có file system.
• Kết nối với hệ thống (thơng qua mount point).
• Thực hiện 1 số cơng việc với file system.
– Tạo ra các disk_image
– Dễ thay đổi nội dung của image.
– /dev/loop0 & /dev/loop1
– Tại 1 thời điểm 1 loopback mơ phỏng 1 block
devive
Các bước thực hiện
• Bước 1. Tạo file kích thước 10M.
$ dd if=/dev/zero of=/tmp/disk-image count=20480
20480+0 records in
20480+0 records out
$ ls -l /tmp/disk-image
-rw-rw---- 1 root root 10485760 Jan 8 01:56 /tmp/disk-image
• Bước 2. Tạo file system cho đĩa ảo
$ mke2fs -q /tmp/disk-image
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
disk-image is not a block special device.
Proceed anyway? (y,n) y
11
Các bước thực hiện
• Bước 3. Kết nối với loopback devive:
$ mkdir /tmp/virtual-fs
$ mount -o loop=/dev/loop0 /tmp/disk-image /tmp/virtual-fs
• Kiểm tra virtual file system:
$ df -h /tmp/virtual-fs
Filesystem
Size Used Avail Use% Mounted on
/tmp/disk-image
9.7M 13k 9.2M 0% /tmp/virtual-fs
Các bước thực hiện
• Bước 4. Làm việc với virtual file system:
$ cd /tmp/virtual-fs
$ echo 'Hello, world!' > test.txt
$ ls -l
total 13
drwxr-xr-x 2 root root 12288 Mar 8 02:00 lost+found
-rw-rw---- 1 root root 14 Mar 8 02:12 test.txt
$ cat test.txt
Hello, world!
• Bước 5. Gỡ disk-image khỏi hệ thống:
$ cd /tmp
$ umount /tmp/virtual-fs
File System
• Tổ chức quản lý dữ liệu ở mức logic:
3. Tổ chức dữ liệu
– Dữ liệu có thể nằm trên ổ cứng hoặc khơng.
– Người dùng không quan tâm đến địa chỉ vật
lý của dữ liệu:
• Quản lý dữ liệu thơng qua các tệp tin (file).
• Quản lý các tệp tin thơng qua thư mục (directory).
– Bảo mật dữ liệu: phân quyền truy nhập cho
người dùng.
Hệ thống cây thư mục
Ý nghĩa một số thư mục
• /bin: chứa các file thực thi : ls, cat, date,…
12
Ý nghĩa một số thư mục
• /sbin: chứa các lệnh dành cho người quản trị
Ý nghĩa một số thư mục
• /dev: chứa các device file
Ý nghĩa một số thư mục
• /home: chứa thư mục riêng cho người dùng
Ý nghĩa một số thư mục
• /boot: chứa các file khởi động hệ thống
Ý nghĩa một số thư mục
• /etc: chứa các file cấu hình hệ thống
Ý nghĩa một số thư mục
• /lib: chứa các file thư viện làm việc.
13
Ý nghĩa một số thư mục
• /usr: chứa các chương trình cài đặt của người
dùng.
– /usr/include : chứa các file header lập trình.
– /usr/src : chứa mã nguồn.
Ý nghĩa một số thư mục
• /mnt: chứa các thư mục liên kết tạm thời với các
thiết bị.
• /tmp: chứa các file tạm mà chương trình sử
dụng trong quá trình chạy. Các file này được hệ
thống dọn dẹp khi khơng cần nữa.
• /var: lưu trữ các file dữ liệu tạm thời cần đưa ra
máy in,hoặc các file được download về để cài
đặt từ mạng,..
• /lost+found: lưu trữ các file dữ liệu khi hệ thống
bị hỏng.
Tổ chức dữ liệu trên HDD
Block I/O
Quản lý tệp tin (file)
Quản lý tệp tin (tiếp)
• Đối với người dùng:
– Xác định người sở hữu, nhóm sở hữu.
– Xác định quyền truy cập đến dữ liệu.
– Xác định các thuộc tính như:
• Tên file, kích thước,..
• Thời gian truy nhập,…
– Xác định vị trí của file trong FS.
• Đối với hệ thống:
• Dữ liệu trong file được chia thành các khối
(block) . 1 block = 1K, 2K, 4K,..
• Cách tổ chức liên kết các khối dữ liệu
trong 1 file:
– Liên tục (Contiguous allocation).
– Liên kết (Linked allocation).
– Chỉ mục (Indexed allocation).
– Xác định vị trí các khối dữ liệu trong ổ cứng.
14
Continuos Allocation
Linked Allocation
Indexed Allocation
1 File = 1 Inode in Linux
Inode – Index Node
Quản lý thư mục
• Thư mục chứa thơng tin về file:
– Inode
– File name.
15
Mounting File Systems
• Các FS đều có 1 gốc là /
• Nối 1 FS này vào 1 FS khác thơng qua 1 thư
mục được gọi là mount point.
• Các lệnh sử dụng: mount và umount thực hiện
với quyền của root.
Các loại file trong Linux
• Linux phân chia file ra thành các loại sau:
– Regular file. Ký hiệu : • Text file.
• Binary file
• Executed file.
– Directory. Ký hiệu : d
– Device file. Ký hiệu : c hoặc b
– Link. Kí hiệu : l
• Soft Link. (Symbolic link)
• Hard Link.
File liên kt (Link)
ã Theo nguyờn tc: 1 file ặ 1 inode.
ã Inode chứa thông tin:
– Quyền truy cập đến file.
– Thông tin về người/nhóm sở hữu.
– Thơng tin về thời gian.
– Số liên kết đến Inode.
– Kích thước file, địa chỉ các block dữ liệu
– NHƯNG : không chứa tên file
Đường dẫn trong Linux
• Đường dẫn tuyệt đối:
– Đi từ thư mục gốc đến vị trí của file.
– Bắt đầu bằng dấu /
• Đường dẫn tương đối:
– Xuất phát từ thư mục đang đứng hiện tại.
– Có 2 ký tự thư mục đặc biệt:
• Ám chỉ thư mục hiện tại: dấu .
• Ám chỉ thư mục cha : dấu ..
– Để riêng tên file Ỉ hiểu là thư mục hiện tại.
Liên kết cứng (hard link)
• Liên kết kiểu cùng sử dụng chung dữ liệu:
–
–
–
–
Các file có tên khác nhau.
Cùng 1 inode,
Chỉ số liên kết trong inode bằng số file trỏ đến nú.
Cú th khỏc th mc, nhng cựng 1 FS.
ã ặ 1 inode có thể ứng với nhiều file name.
16
Liên kết cứng (hard link)
• Cách tạo hard link: ln src_file hard_link_file
Liên kết mềm (soft link)
• Liên kết kiểu con trỏ file (shortcut):
– Các file có tên khác nhau.
– Giá trị inode khác nhau,
– Nội dung file liên kết mềm là tên file được liên kết.
Liên kết mềm (soft link)
Quản lý quyền làm việc với file
• Cách tạo : ln – s src_file sym_link_file
• Thế nào là sự phân quyền?
– User được cấp quyền làm việc với một số tài
nguyên nhất định.
• Những đối tượng nào quan tâm đến dữ
liệu:
– Người sở hữu (owner).
– Người dùng trong nhóm sở hữu (group).
– Những người dùng khác (other).
Quyền truy cập
Xem thông tin của file
• Linux hỗ trợ 3 quyền làm việc cơ bản:
– Đọc (Read).
– Ghi (Write).
– Thực thi (eXecute)
• Trong vấn đề bảo mật, Linux hỗ trợ thêm
các quyền mở rộng:
– Sticky bit.
– Set UID , Set GID.
• Phân biệt quyền làm việc giữa tệp tin
(regular file) và thư mục (directory).
•
•
•
•
•
•
•
Cột thứ I : chỉ các thuộc tính của file.
Cột thứ II : chỉ số liên kết cứng với Inode của file.
Cột thứ III : ghi tên của người dùng sở hữu file.
Cột thứ IV : ghi tên của nhóm sở hữu file.
Cột thứ V : ghi kích thước của file.
Cột thứ VI, VII : ghi thời điểm tạo ra file.
Cột thứ VIII: ghi tên file.
17
Thuộc tính của file
• Xét cột thứ nhất có 10 ký tự:
– Ký tự thứ nhất: xác định kiểu của file.
– 9 ký tự kế tiếp: xác định quyền đọc, ghi, thực thi đối
với người sở hữu,nhóm sở hữu và người dùng cịn
lại.
Thuộc tính file trong Inode
• Inode có 1 trường gọi là permission (mod bits)
để xác định quyền làm việc với file.
• Giá trị mode bit xác định quyền được thiết lập
Ví dụ về Access mode bits
Giá trị thuộc tính UID, GID
• File được tạo ra bởi Process mà User
đang thực hiện.
• Process lưu trữ thơng tin:
– User (UID, EUID).
– Group (GID, EGID).
• Gán UID: File’s UID = Process’s EUID.
• Gán GID:
– File’s GID = Process’s EGID.
– File’s GID = Folder’s GID.
Thay đổi quyền truy nhập
Thay đổi người/nhóm sở hữu
• Thực hiện bởi root hoặc người sở hữu.
• Thay đổi người sở hữu:
chown user_name file_name
• Thay đổi nhóm sở hữu:
chgrp group_name file_name
•
•
•
•
u – user.
g – group.
o – others.
a – all
• + :thêm quyền. • r : read.
• - : bớt quyền. • w : write.
• = : gán giá trị. • x : execute.
18
Quyền truy cập đối với
tệp tin & thư mục
• Đối với tệp tin:
– Quyền đọc (r - read): tức người dùng có thể
đọc nội dung của file.
– Quyền ghi (w – write): tức là người dùng có
thể ghi nội dung vào file.
– Quyền thực thi (x – execute): Nếu file là file
thực thi (chạy) thì người dùng có thể chạy file
này.
Quyền truy nhập mở rộng
• Unix/Linux hỗ trợ 3 quyền làm việc mở rộng cho
cả file và thư mục như sau:
– Sticky bit.
– Set UID – SUID.
– Set GID – SGID.
Quyền truy cập đối với
tệp tin & thư mục
• Đối với thư mục:
– Quyền đọc (r - read): tức người dùng có thể
liệt kê danh sách tên file thơng qua lệnh ls.
– Quyền ghi (w – write): tức là người dùng có
thể tạo hoặc xóa file trong thư mục.
– Quyền thực thi (x – execute):Cho phép người
dùng nhảy vào trong thư mục (lệnh cd) và lấy
nội dung chi tiết (lệnh ls –li ).
– Quyền đọc và thực thi không phụ thuc vo
nhau ặ vớ d to darkroom
Files Sticky bit
ã Sticky bit: xuất phát từ “stuck – mắt kẹt”
– Sử dụng trong các phiên bản Unix cũ.
– Khi RAM nhỏ Ỉ giữ lại code chương trình sau khi đã
thực hiện xong.
• Cách thay đổi quyền mở rộng:
– chmod + t file_name : để đặt sticky_bit cho file.
– chmod u + s file_name: để đặt SUID cho file.
– chmod g + s file_name: để đặt SGID cho file.
File’s SUID
• Set UID – SUID:
– Chỉ thiết lập với file thực thi (quyền execute).
– Theo nguyờn tc:
ã 1 file cú 1 owner ặ 1 UID.
ã 1 user chy 1 file ặ 1 process ặ UID của user
đang chạy chương trình.
• 1 user ghi dữ liệu vào file Ỉ UID của user được
cho phép ghi Æ nếu user’s UID = owner’s UID &&
owner được quyền ghi ặ d liu s c ghi.
ã Lm th no process’s UID := owner’s UID ???
File’s SUID (tiếp)
• SUID giải quyết vấn đề này.
• Người dùng khi chạy file có quyền SUID,
trong thời gian chạy, sẽ mang quyền của
người sở hữu file.
• Vd: chương trình sửa mật khẩu: passwd
[khmt@localhost ~] ls -l /usr/bin/passwd
-r-sr-sr--x 3 root root 15688 Jan 24 17:51 /usr/bin/passwd*
19
File’s SGID
• Set GID – SGID:
– Chỉ thiết lập với file thực thi (quyền execute).
– Theo nguyên tắc:
• 1 file cú 1 owner group ặ 1 GID.
ã 1 user thuc 1 group Ỉ chạy 1 file Ỉ 1 process Ỉ
GID của user đang chạy chương trình.
• 1 user ghi dữ liệu vào file Ỉ UID của user được
cho phép ghi Æ nếu user’s UID nằm trong 1
group’s ID được quyền ghi ặ d liu s c ghi.
ã Lm th no process’s GID := group’s UID ???
Directory’s Sticky bit
• Theo nguyên tắc:
– Quyền xóa/tạo file trong thư mục phụ thuộc
vào quyền ghi (w) của thư mục.
– Có thể người dùng này xúa file ca ngi
dựng khỏc ặ bo mt ?
ã Sticky bit giải quyết vấn đề này: người
dùng chỉ được quyền xóa file của mình.
File’s SGID (tiếp)
• SGID giải quyết vấn đề này.
• Người dùng khi chạy file có quyền SGID,
trong thời gian chạy, sẽ mang quyền của
người dùng nằm trong nhóm sở hữu file.
• Vd: chương trình sửa mật khẩu: passwd
[khmt@localhost ~] ls -l /usr/bin/passwd
-r-sr-sr--x 3 root root 15688 Jan 24 17:51 /usr/bin/passwd*
Directory’s SUID, SGID
• Directory’s SUID khơng có ý nghĩa gì.
• Directory’s SGID:
– Theo ngun tắc các file được tạo sẽ mang
GID của nhóm mà người dùng đang nằm
trong đấy (primary group).
– Người dùng làm việc với các nhóm khác Ỉ
tạo file trong nhóm nào thì do nhóm đấy qun
lý ặ SGID gii quyt vn ny.
Directorys SGID
ã Xột tình huống ví dụ:
– Người dùng khmt nằm trong 2 nhóm:
• Group khmt – primary group.
• Group cntt -- secondary group.
4. Graphical User Interface
– Người dùng khmt chuyển sang làm việc với
thư mục do nhóm cntt sở hữu và tạo file trong
đấy Ỉ chuyện gì xảy ra ???
20
Nhu cầu GUI
• Hiển thị hình ảnh trực
quan, sinh động.
• Giúp người dùng
tương tác với hệ
thống tốt hơn.
• Người dùng có thể tự
thiết kế giao diện làm
việc phù hợp với
mình.
X Window System
• Hệ thống cửa sổ hiển thị đồ họa.
• Cung cấp công cụ đồ họa giúp người
dùng xây dựng ứng dụng của mình.
• Làm việc theo mơ hình Client/Server.
– X Client.
– X Server.
– X protocol.
X Window System
Client & Server
• Thế nào là X client và X server?
• X Server chịu trách nhiệm:
– Hiển thị hình ảnh trên màn hình.
– Chuyển các thao tác người dùng trên màn
hình thành các thơng điệp gửi đến Client.
• X Client :
– Là chương trình người dùng (X application).
– Xử lý các thao tác của người dùng.
– Yêu cầu Server thực hiện các công việc hiển
thị đồ họa.
Linux GUI components
• Networking:
– Client : Saturn
– Server:Jupiter,Mercury
• X Window System:
– Server: Saturn
– Client :Jupiter,Mercury
21
X Window
• Chịu trách nhiệm làm việc trực tiếp với
Hardware Æ X Window = Server:
– Quản lý thuộc tính cửa sổ (window structure)
– Quản lý bảng màu (Colormaps)
– Quản lý bảng font.
– Quản lý phiên (Session manager).
• Một số phiên bản X Window: X11, X.org,
XFree86.
Window manager
• Window manager – Client Application.
• Hỗ trợ X Window System trong:
– Quản lý các Client Windows khác:
• Sắp đặt vị trí.
• Thay đổi kích thước.
– Hỗ trợ người dùng thực hiện thao tác:
• Nhấn chuột lên các biểu tượng (icon).
• Kéo thả các thành phần (drag & drop).
Window manager
Window manager (WM)
• Xét ví dụ: 1 chương trình người (client) dùng
hiển thị các file ảnh trên màn hình:
– 1. Client đọc file ảnh, xác định kích thước cửa sổ hiển
thị Ỉ gửi u cầu đến Server để tạo cấu trúc cửa sổ
tương ứng.
– 2. Sau đó yêu cầu Server hiển thị cửa sổ ảnh (copy
các điểm ảnh lên vùng bộ nhớ màn hình – display
mapped-memory).
– 3. Server gửi yêu cầu đến WM để xác định vị trí hiển
thị cửa sổ trên màn hình.
– 4. Sau khi xác định xong, WM gửi yêu cầu Server
hiển thị ảnh lên màn hình.
Window manager
• Sự tách biệt giữa WM và X Server đem lại
lợi ích như sau:
– Cho phép người dùng lựa chọn các chương
trìn WM khác nhau phù hợp với mình.
– Làm cho Server đơn giản hơn. Server chỉ cần
thực hiện việc biên dịch các yêu cầu từ X
protocol về các mã lệnh phần cứng.
22
Common Window Manager
Desktop enviroment
• Bổ trợ cho Window manager :
– Cung cấp bộ công cụ (toolkits) để thiết kế các
phần mềm đồ họa.
– Cung cấp các tiện ích quản lý hệ thống bằng
cửa sổ đồ họa:
•
•
•
•
K Desktop Enviroment
• KDE = K Window manager (kwin) + Qt toolkit
Xfce Desktop Enviroment
Web browsers,
File manager,
Drawing programs,
Control Panel,..
GNU Object Model Enviroment
• GNOME = Metacity Window Manager + GTK
Cấu hình X Window System
• X Window u cầu các thông tin sau đối
với Video card:
– Video adapter card model.
– RAM on video card.
– Chipset on video card.
• Yêu cầu thông tin đối với Monitor:
– Maximum resolution.
– Horizontal sync (hsync) range.
– Vertical sync (vsync) range.
23
Cấu hình X Window
mouseconfig
• Thơng tin cấu hình đối với X Window
được lưu trữ ở:
– X.org: /etc/X11/xorg.conf
– XFree86: /etc/X11/XF86Config.
• Sử dụng các chương trình cấu hình:
– mouseconfig hoặc system-config-mouse.
– system-config-keyboard.
– system-config-display.
– xvidtune.
System-config-keyboard
System-config-display
xvidtune
Common Xwindow configuration
utilities
24
Common Xwindow configuration
utilities
Cấu hình X Window System
• Khi nào cần đặt lại cấu hình cho X
Window System:
– Khơng hiển thị đồ họa.
– Window,Icon, text biến dạng.
– Muốn chỉnh sửa độ phân giải hoặc bảng màu.
• Cách thực hiện:
– Xác định phiên bản X server.
– Chỉnh sửa nội dung file cấu hình X server.
Một số thao tác chỉnh sửa
• Xác định phiên bản X server bằng cách gõ man
Xorg và man XFree86. Phiên bản nào được cài
đặt thì sẽ có thơng tin trong tra cứu bằng lệnh
man.
• Một số tổ hợp phím:
–
–
–
–
Kết thúc X server: [Ctrl+Alt+Backspace]
[Ctrl+Alt+Fx] x := 1..6 : 6 Text Console .
[Ctrl+Alt+Fy] y := 7..11 : 5 GUI Console.
Thường thì GUI đầu tiên [Ctrl+Alt+F7] được chạy.
Runlevel
• Dịng lệnh đầu tiên trong file /etc/inittab xác định
runlevel của hệ thống:
id:5:initdefault:
• Để xác định hệ thống đang làm việc ở runlevel
nào dùng lệnh: runlevel.
• Để chuyển đổi giữa các runlevel dùng cú pháp:
init n với n := 0,1,..,6
• Vd: đang chạy ở runlevel 3, muốn chuyển sang
X system ta làm như sau:
– gõ trong cửa sổ lệnh: init 5
– Hoặc : startx &
Runlevel
• Sau khi boot, init process sẽ tìm file chạy
mặc định : /etc/inittab để thực hiện.
• Có 6 mức chạy trong Linux như sau:
0 - halt (Do NOT set initdefault to this)
1 - Single user mode
2 - Multiuser, without NFS
3 - Full multiuser mode
4 - unused
5 - X11
6 - reboot (Do NOT set initdefault to this)
Tạo file cấu hình mới
• Giả sử hệ thống chạy X system bị lỗi, ta
khắc phục như sau:
– Nhấn [Ctrl+Alt+BackSpace] để tắt X System.
– Chạy chế độ dòng lệnh, gõ: init 3.
– Thiết lập cấu hình hardware mới bằng cách
gõ: Xorg –configure. Ỉ kết quả sẽ tạo ra 1 file
cấu hình: /root/xorg.conf.new.
– Kiểm tra cấu hình vửa thiết lập bằng:
X -xf86config /root/xorg.conf.new
25