Kiến trúc bên ngoà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,...
• Không quan tâm đến các ứng dụng của người
dùng khác đang làm gì.
– Độc lập (independently):
Đa người dùng (tiếp)
Yêu cầu với hệ thống
• Local System:
• 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
• Network 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
độ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:
– 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) – 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)
Các file liên quan
• Đă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.
• /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.
• Được gán quyền làm việc nhất định đối
với các tài nguyên.
• /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:
• Thông tin về người dùng được lưu trữ
trong file: /etc/passwd.
– 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ề 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 (cid:198) dễ bị copy và
• Text file: 1 user – 1 line • Mật khẩu được mã hóa DES - Data Encryption Standard (hàm crypt() or md5 hash) giải mã (cid:198) 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 • 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 mỗi người dùng (cid:198) hay thấy UID = GID được quyền thay đổi nội dung.
Cấu trúc dữ liệu /etc/shadow
Ý nghĩa các trường thông tin
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)
• 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
– 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ị
• root: sở hữu tất cả mọi tài nguyên,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.
khóa đến nay.
– Flag : Trường dự trữ.
• 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
Nhóm (Groups)
• Xét tình huống: Một nhân viên A có thể
• 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):
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. – ….
• 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?
– Không dùng tên nhóm để đăng nhập
Cấu trúc file /etc/group
Ý 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.
• 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
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 ngoài nhảy vào nhóm thông
• 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.
qua gọi newgrp
• 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
Thêm người dùng vào hệ thống
– Dấu ! tức là không cho người ngoài nhảy vào nhóm. – Dấu !! cũng như !, nhưng còn có ý là mật khẩu khô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 thiết lập trước đó
• Có 2 cách thêm users như sau:
• Gr_name: tên nhóm • Gr_password : mật khẩu nhóm sau mã hóa:
– Để 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.
– 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. • Member_list: danh sách người dùng nằm trong nhóm
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)
• Các lệnh làm việc với người dùng (users)
– Thêm : groupadd – Thay đổi : groupmod – Mậtkhẩu : gpasswd
– 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ị làm việc (cid:198) cần có driver • Device driver:
• Kernel làm việc với thiết bị thông qua
driver: – Device driver nằm trong kernel. – 1 driver = 1 module
– Nhận 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)
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 (cid:198) biên dịch lại kernel. – Liên kết động (dinamic): được kết gán vào
kernel theo yê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ụ
• Device file nằm trên tầng File System nên
như tạo data file trong ổ cứng)
• User process (cid:198)Device driver (cid:198) Device
user có thể thực hiện các hàm sau: – Mở : open, đóng : close – Đọc dữ liệu : read, ghi dữ liệu : write
Controller (cid:198) Device
• Device file chia làm 2 loại:
• 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.
Một số tên Device file thông dụng
– 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.
Device file name
/dev/audio
File thiết bị cho Sound Card
• Tên của device file phản ánh chức năng của
/dev/cdrom
File thiết bị cho CDROM
thiết bị.
/dev/fdn
File thiết bị cho các ổ đĩa mềm (n là chỉ số)
• Các Device file được lưu trữ trong thư mục /dev
/dev/hdxn
File thiết bị cho phần cứng với giao tiếp IDE
của file system.
/dev/lpn
File thiết bị cho cổng song song hoặc máy in
/dev/modem
File thiết bị cho MODEM
• Đá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
/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
dùng dễ nhớ: – vd1: /dev/cdrom (cid:198)/dev/hdc (cd-rom theo chuẩn IDE) – Vd2: /dev/modem (cid:198) /dev/ttyS1 (modem nối serial 1)
/dev/ttyn
File thiết bị giao tiếp ảo (teletype)
Device types
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)
Character Device (c)
• Trao đổi theo từng khối dữ liệu (block data).
• Đọc dữ liệu theo từng byte tuần tự. • Không cho phép truy xuất dữ liệu ngẫu
• Sử dụng bộ nhớ
nhiên.
• Character interface = Raw device
đệm (buffer) để lưu dữ liệu trung gian. • Cho phép đọc dữ
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,…
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
Network Interface
• Unbuffered character device (u): không
• Làm việc trong môi trường mạng. • Có 2 loại Interface:
dùng bộ nhớ đệm trong quá 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).
• Cơ chế làm việc:
– 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)
– Trao đổi các gói thông tin (package) – Trao đổi theo luồng dữ liệu (stream)
Device Number
Device Number (tiếp)
• Mỗi thiết bị (device) ứng với 1 giao tiếp
• Linux phân biệt thiết bị thông qua 2 số:
(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,..)
• Đặc trưng cho 1 giao tiếp với thiết bị. • Chỉ số tài nguyên do kernel định nghĩa. • Tương thích với cả block & charater device.
• Mỗi giao tiếp được điều khiển bởi 1 vi điều
– Major devive number:
khiển (controller).
• 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,..
• Mỗi controller ứng với 1 driver. • Cách phân biệt các thiết bị ???
– Minor device number:
8
Common Block Devices
Common Character Devices
Device
Name
Major
Minor
Device
Name
Major
Minor
First floppy drive
2
0
/dev/fd0
Parallel port 0
6
0
/dev/lp0 or /dev/par0
Second floppy drive
2
1
/dev/fd1
Parallel port 1
6
1
/dev/lp1 or /dev/par1
Primary IDE controller, master device
3
0
/dev/hda
First serial port
4
64
/dev/ttyS0
Primary IDE controller, master device, first partition
3
1
/dev/hda1
Second serial port
4
65
/dev/ttyS1
Primary IDE controller, secondary device
3
64
/dev/hdb
IDE tape drive
37
0
/dev/ht0
Primary IDE controller, secondary device, first partition
3
65
/dev/hdb1
First SCSI tape drive
9
0
/dev/st0
Secondary IDE controller, master device
22
0
/dev/hdc
Second SCSI tape drive
9
1
/dev/st1
Secondary IDE controller, secondary device
22
64
/dev/hdd
System console
5
1
/dev/console
First SCSI drive
8
0
/dev/sda
First virtual terminal
4
1
/dev/tty1
First SCSI drive, first partition
8
1
/dev/sda1
Second virtual terminal
4
2
/dev/tty2
Second SCSI disk
8
16
/dev/sdb
5
0
Process's current terminal device
/dev/tty
Second SCSI disk, first partition
8
17
/dev/sdb1
14
4
Sound card
/dev/audio
First SCSI CD-ROM drive
11
0
/dev/scd0
Second SCSI CD-ROM drive
11
1
/dev/scd1
Kernel module
Làm việc với Modules (modutils)
• Là 1 thành phần của kernel được nạp vào RAM
Command
Description
Lists modules currently loaded.
lsmod
Loads a module into the kernel. Does not check for
khi cần.
insmod
dependencies.
• Là các file nằm trong ổ cứng có đuôi: *.o hay *.so
rmmod
Unloads a module currently loaded. Does not check for
dependencies.
• Nằm trong các thư mục con của
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.
thanh.
/lib/modules/version – trong đó version là phiên bản kernel. – …./kernel/drivers/sound: chứa module về cạc âm
modprobe
– …./kernel/drivers/net: chứa module về cạc mạng.
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
Ví dụ với USB (tiếp)
• Một số phiên bản Linux không hỗ trợ USB
• Thư mục chứa các modules:
tự động (cid:198) cách kết nối ?
• Thực hiện các bước:
• Nạp các module:
/lib/modules/kernel_vers/kernel/drivers/usb
– B1: kiểm tra xem driver modules cho USB:
#modprobe usb-storage #modprobe usb-uhci
• Core: usbcore. • Data store: usb-storage. • Host Controller: usb-uhci (Intel) hoặc usb-ohci
• Mount USB flash
(Compaq) hoặc ehci-hdc (USB v 2.0). – Tên các modules có đuôi là *.o , *.so, *.ko
#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]
• 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
/dev/null
• Linux xóa tất cả dữ liệu ki gửi đến nó.
• Linux hỗ trợ 1 số thiết bị ảo:
[...]$ cat data.txt > /dev/null
• Có 5 loại như sau:
• /dev/null tương đương với EOF
--- nothing--- – 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. [...]$ cat data.txt 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
- /dev/zero - /dev/random – /dev/null – /dev/full – Loopback device [...]$ cp /dev/null data.txt [...]$ ls -l data.txt -rw-rw---- 1 khmt khmt 0 Jan 7 00:27 data.txt
/dev/zero
/dev/full
• Dùng để test các phần mềm khi:
• 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ỳ
• Ví dụ :
– File system không còn đủ chỗ trống. – Ghi dữ liệu thêm (cid:198) lỗi : errno = ENOSPC. – (cid:198) Tương tự như ghi vào /dev/full
$ 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
$ cp /etc/fstab /dev/full cp : /dev/full : No space left on device
10
Random device
/dev/random & /dev/urandom
• /dev/random : Nếu user không tác động
• Tạo dãy ngẫu nhiên (random number) • Standard C Library (cid:198) pseudorandom
đế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
function.
• Pseudorandom phụ thuộc vào nguồn sinh
(initial value).
• /dev/urandom: Chạy liên tục, không tự
• Linux initial value = time delay between
động dừng lại.
• Vd: lệnh od đọc nội dung /dev/random
input actions: keystrokes, mouse movements,..
nào đó. – Tiếp tục sinh ngẫu nhiên khi có tác động trở lại.
/dev/random & /dev/urandom
Loopback device
• Mô phỏng một file thực (ordinary disk file)
như một block device.
• Ý nghĩa:
$ 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
• Có 2 loopback device: – /dev/loop0 & /dev/loop1 – Tại 1 thời điểm 1 loopback mô phỏng 1 block
– Tạo ra các disk_image – Dễ thay đổi nội dung của image.
devive
$ 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ác bước thực hiện
Loopback device
• Bước 1. Tạo file kích thước 10M.
• 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.
$ 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
• Ví dụ tạo một virtual file system:
• 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.
– Mục đích:
• 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:
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:
$ df -h /tmp/virtual-fs Filesystem Size Used Avail Use% Mounted on /tmp/disk-image 9.7M 13k 9.2M 0% /tmp/virtual-fs
$ cd /tmp $ umount /tmp/virtual-fs
File System
• Tổ chức quản lý dữ liệu ở mức logic:
– 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
3. Tổ chức dữ liệu
Ý nghĩa một số thư mục
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
• /bin: chứa các file thực thi : ls, cat, date,…
12
Ý nghĩa một số thư mục
Ý 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
Ý 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
Ý nghĩa một số thư mục
• /dev: chứa các device file • /etc: chứa các file cấu hình hệ thống
• /home: chứa thư mục riêng cho người dùng • /lib: chứa các file thư viện làm việc.
13
Ý nghĩa một số thư mục
Ý nghĩa một số thư mục • /usr: chứa các chương trình cài đặt của người
• /mnt: chứa các thư mục liên kết tạm thời với các thiết bị. dùng. – /usr/include : chứa các file header lập trình. – /usr/src : chứa mã nguồn. • /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:
• 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
• Tên file, kích thước,.. • Thời gian truy nhập,…
– 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ư:
trong 1 file: – Liên tục (Contiguous allocation). – Liên kết (Linked allocation). – Chỉ mục (Indexed allocation).
• Đối với hệ thống:
– Xác định vị trí của file trong FS.
– 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
– Inode – File name.
• Thư mục chứa thông tin về file:
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
Đường dẫn trong Linux
• Linux phân chia file ra thành các loại sau:
• Đường dẫn tuyệt đối:
– Regular file. Ký hiệu : -
• Text file. • Binary file • Executed file.
– Đ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:
• Soft Link. (Symbolic link) • Hard Link.
– Directory. Ký hiệu : d – Device file. Ký hiệu : c hoặc b – Link. Kí hiệu : l – 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 (cid:198) hiểu là thư mục hiện tại.
File liên kết (Link)
Liên kết cứng (hard link) • Liên kết kiểu cùng sử dụng chung dữ liệu:
• Theo nguyên tắc: 1 file (cid:198) 1 inode. • Inode chứa thông tin:
– 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ư mục, nhưng cùng 1 FS.
• (cid:198) 1 inode có thể ứng với nhiều file name.
– 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
16
Liên kết mềm (soft link)
Liên kết cứng (hard link) • Cách tạo hard link: ln src_file hard_link_file
– 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 kiểu con trỏ file (shortcut):
Liên kết mềm (soft link)
Quản lý quyền làm việc với file
• Thế nào là sự phân quyền?
• Cách tạo : ln – s src_file sym_link_file
• 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).
– User được cấp quyền làm việc với một số tài nguyên nhất định.
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:
• 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.
: chỉ các thuộc tính của file. • Cột thứ I • 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.
• Phân biệt quyền làm việc giữa tệp tin (regular file) và thư mục (directory).
– Đọc (Read). – Ghi (Write). – Thực thi (eXecute)
17
Thuộc tính của file
Thuộc tính file trong Inode
– 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.
Ví dụ về Access mode bits
• Xét cột thứ nhất có 10 ký tự: • 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
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:
• Gán UID: File’s UID = Process’s EUID. • Gán GID:
– User (UID, EUID). – Group (GID, EGID).
– 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:
• r : read. • w : write. • x : execute.
chgrp group_name file_name
• + :thêm quyền. • - : bớt quyền. • = : gán giá trị. • u – user. • g – group. • o – others. • a – all
18
Quyền truy cập đối với tệp tin & thư mục
Quyền truy cập đối với tệp tin & thư mục
• Đối với 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 đọ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ó – 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. thể ghi nội dung vào file. – Quyền thực thi (x – execute): Nếu file là file – 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 ). thực thi (chạy) thì người dùng có thể chạy file này. – Quyền đọc và thực thi không phụ thuộc vào nhau (cid:198) ví dụ tạo darkroom
Quyền truy nhập mở rộng
File’s Sticky bit
• Unix/Linux hỗ trợ 3 quyền làm việc mở rộng cho
thực hiện xong.
• 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ỏ (cid:198) giữ lại code chương trình sau khi đã
– 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.
cả file và thư mục như sau: – Sticky bit. – Set UID – SUID. – Set GID – SGID. • Cách thay đổi quyền mở rộng:
File’s SUID
File’s SUID (tiếp)
• Set UID – SUID:
• 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.
• 1 file có 1 owner (cid:198) 1 UID. • 1 user chạy 1 file (cid:198) 1 process (cid:198) UID của user
• Vd: chương trình sửa mật khẩu: passwd
đang chạy chương trình.
• 1 user ghi dữ liệu vào file (cid:198) UID của user được
[khmt@localhost ~] ls -l /usr/bin/passwd -r-sr-sr--x 3 root root 15688 Jan 24 17:51 /usr/bin/passwd*
cho phép ghi (cid:198) nếu user’s UID = owner’s UID && owner được quyền ghi (cid:198) dữ liệu sẽ được ghi. • Làm thế nào process’s UID := owner’s UID ???
– Chỉ thiết lập với file thực thi (quyền execute). – Theo nguyên tắc:
19
File’s SGID
File’s SGID (tiếp)
• Set GID – SGID:
• 1 file có 1 owner group (cid:198) 1 GID. • 1 user thuộc 1 group (cid:198) chạy 1 file (cid:198) 1 process (cid:198)
• 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
GID của user đang chạy chương trình.
[khmt@localhost ~] ls -l /usr/bin/passwd -r-sr-sr--x 3 root root 15688 Jan 24 17:51 /usr/bin/passwd*
• 1 user ghi dữ liệu vào file (cid:198) UID của user được cho phép ghi (cid:198) nếu user’s UID nằm trong 1 group’s ID được quyền ghi (cid:198) dữ liệu sẽ được ghi.
• Làm thế nào process’s GID := group’s UID ???
– Chỉ thiết lập với file thực thi (quyền execute). – Theo nguyên tắc:
Directory’s Sticky bit
Directory’s SUID, SGID
• Theo nguyên tắc:
• Directory’s SUID không có ý nghĩa gì. • Directory’s SGID:
• 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.
– 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 của người dùng khác (cid:198) bảo mật ? – Theo nguyên 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 (cid:198)
tạo file trong nhóm nào thì do nhóm đấy quản lý (cid:198) SGID giải quyết vấn đề này.
Directory’s SGID
• Xét tình huống ví dụ:
– Người dùng khmt nằm trong 2 nhóm:
4. Graphical User Interface
• Group khmt – primary group. • Group cntt -- secondary group.
– 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 (cid:198) chuyện gì xảy ra ???
20
Nhu cầu GUI
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.
• 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.
X Window System
– X Client. – X Server. – X protocol. • Người dùng có thể tự thiết kế giao diện làm việc phù hợp với mình.
Client & Server
• X Server chịu trách nhiệm:
• Thế nào là X client và X server?
• X Client :
– 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.
– 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 (cid:198) 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 (WM)
• Window manager – Client Application. • Hỗ trợ X Window System trong: – Quản lý các Client Windows khác:
• Xét ví dụ: 1 chương trình người (client) dùng
• Sắp đặt vị trí. • Thay đổi kích thước.
– 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.
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ị (cid:198) gửi yêu cầu đến Server để tạo cấu trúc cửa sổ tương ứng.
– 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.
– 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
• 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
K Desktop Enviroment
cửa sổ đồ họa: • Web browsers, • File manager, • Drawing programs, • Control Panel,..
GNU Object Model Enviroment • GNOME = Metacity Window Manager + GTK
Xfce Desktop Enviroment
• KDE = K Window manager (kwin) + Qt toolkit
Cấu hình X Window System
• X Window yê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
Cấu hình X Window System
Common Xwindow configuration utilities
• 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
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:
– 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.
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)
• 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:
Tạo file cấu hình mới
Runlevel • Dòng lệnh đầu tiên trong file /etc/inittab xác định
• Giả sử hệ thống chạy X system bị lỗi, ta
id:5:initdefault: • Để xác định hệ thống đang làm việc ở runlevel
runlevel của hệ thống:
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
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 gõ: Xorg –configure. (cid:198) 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 system ta làm như sau: – gõ trong cửa sổ lệnh: init 5 – Hoặc : startx & X -xf86config /root/xorg.conf.new
25
Chỉnh sửa nội dung file cấu hình
Tạo file cấu hình mới
• Đọc nội dung các file cấu hình X Window
• Nếu file cấu hình mới thiết lập thành công
(cid:198) màn hình X Window xuất hiện.
System của hệ thống. – /etc/X11/xorg.conf. – /etc/X11/XF86config.
• Tắt X Window : [ Ctrl+Alt+BackSpace]. • Copy file cấu hình vừa thiết lập vào file
• Nếu không đúng driver card màn hình:
cấu hình cho người dùng:
cp /root/xorg.conf.new /etc/X11/xorg.conf
• Depth : 4 – 16 màu; 8 – 256 màu. • Modes: “640x480”
• Kiểm tra lại kết quả: reboot hệ thống.
/etc/X11/XF86Config
– Section “Device” :BoardName: Vesa (generic) – Section “Screen”:
X config file structure
• File section : Xác định vị trí bảng màu
RGB và font.
• Input Device section: xác định thông số
của chuột, bàn phím.
• Monitor section: Xác định kiểu màn hình. • Screen section: Xác định thông số về độ
phân giải, tần số,..
• Device section: Xác định thông tin về
video card.
/etc/X11/XF86Config
/etc/X11/XF86Config
26
/etc/X11/xorg.conf