Giáo trình Bài mở đầu - Bài 2: Kiến trúc bên ngoài Unix/Linux - Ngô Duy Hòa
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Bài mở đầu - Bài 2: Kiến trúc bên ngoài Unix/Linux - Ngô Duy Hòa", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- giao_trinh_bai_mo_dau_bai_2_kien_truc_ben_ngoai_unixlinux_ng.pdf
Nội dung text: Giáo trình Bài mở đầu - Bài 2: Kiến trúc bên ngoài Unix/Linux - Ngô Duy Hòa
- 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, – Độ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) 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ác ứng dụng và tài nguyên trên cùng 1 máy. •Cơ chế bảo vệ chống các chương trình –Nhiều người dùng cùng thực hiện độc hại thực hiện công việc: • Network System: –Chặn các chương trình khác. –Thực hiện qua môi trường mạng (Networking) –Cókhả năng lây nhiễm, gián điệp, – Cho phép người dùng ở xa truy nhập đến tài •Cơ chế về tài khoản người dùng: 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 • /home : thư mục gốc làm việc. mình (account) • /etc/skel : chứa các file cấu hình mặc định: – Shell : .bash_profile, .bashrc, .bash_logout. •Sở hữu một vùng ổ cứng riêng (private) – KDE : .kde & GNOME : Desktop. để lưu trữ dữ liệu cá nhân. • /etc/shells : các tên Shell: bash, tcsh, • /etc/passwd & /etc/shadow : thông tin người • Được gán quyền làm việc nhất định đối dùng. với các tài nguyên. • /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 • Text file: 1 user – 1 line. an toàn với số ký tự >= 6. •Thuộc quyền sở hữu của root user • Thông tin về người dùng được lưu trữ •Mọi người dùng đều có quyền đọc [ r ] trong file: /etc/passwd. •Chỉ có root user có quyền ghi [ w ] • Thông tin về mật khẩu lưu trữ trong file: /etc/shadow. 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à • Text file: 1 user – 1 line giải mã Æ không bảo mật. •Mật khẩu được mã hóa DES - Data Encryption • Khi thêm người dùng thì: Standard (hàm crypt() or md5 hash) – UID,GID thường bắt đầu từ 500. •Thuộc quyền sở hữu của root user •Chỉ có root user có quyền ghi [ r ] –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 •Chỉ có root hoặc 1 số chương trình của root mới đượ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 • Username : tên truy nhập của người dùng. • root:aer9a9reau34iajfakjeri73qa97:13788:0:99999:7::: • bin:*:13788:0:99999:7::: • Password : mật khẩu sau khi mã hóa: • daemon:*:13788:0:99999:7::: – Để trống nếu không cần password. • adm:*:13788:0:99999:7::: –Dấu * hoặc ! đứng đầu tức là tài khoản bị khóa (lock) • named:!!:13788:0:99999:7::: –Dấu !! tức là mật khẩu không được thiết lập • postgres:!9reau3ekroiweriweri73qa:13788:0:99999:7::: • khmt::13788:0:99999:7::: • Lastchg : là số ngày sử dụng mật khẩu tính từ • ndhoa:lawekroiweriwoierowier:13788:0:99999:7::: ngày 01/01/1970 Ý nghĩa các trường thông tin (tiếp) Một số người dùng đặc biệt – Min : là số ngày mà trong thời gian đócóthể thay • root: sở hữu tất cả mọi tài nguyên,có thể thực đổi mật khẩu. hiện mọi công việc trong hệ thống. –Max : làsố ngày mà sau đóbắt buộc phải thay đổi •Người dùng ảo (amd) phụ trách việc ghi nhật ký mật khẩu. hệ thống (log file). –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. •Người dùng ảo (bin) có quyền sở hữu tới các – Inactive : Là số ngày được tính kể từ khi hết hạn sử file thực thi trong hệ thống. dụng,mật khẩu sẽ bị khóa. •Người dùng ảo (lp hay lpd) hỗ trợ việc in ấn. – Expire : Là số ngày được xác định từ lúc mật khẩu bị •Người dùng ảo (cron) hỗ trợ thực hiện các công khóa đến nay. việc theo thời gian biểu cho trước. – Flag : Trường dự trữ. 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 tham gia các công việc sau sau: được gán cho mọi thành viên trong nhóm. – Làm lập trình viên : developers. • Nhóm không phải là tài khoản (account): –Bảo mật hệ thống : security. – Không dùng tên nhóm để đăng nhập –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. • Làm thế nào để chia xẻ dữ liệu giữa các – /etc/gshadow: lưu trữ mật khẩu của nhóm. thành viên trong từng nhóm? 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. • root:x:0:root • Gr_ID : Sốđăng ký ID do hệ thống cung • bin:x:1:root,bin,daemon cấp. • daemon:x:2:root,bin,daemon • Gr_member_list : Danh sách các người • sys:x:3:root,bin,adm dùng nằm trong nhóm. • 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 qua gọi newgrp • root:::root •Mặc định, hệ thống tạo 1 nhóm riêng • bin:::root,bin,daemon (private group) cho mỗi người dùng: • daemon:::root,bin,daemon – Tên người dùng cũng là tên nhóm. • sys:::root,bin,adm •Giátrị GID được cung cấp theo thứ tự • adm:::root,adm,daemon tăng dần. • 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 • Gr_name: tên nhóm •Thực hiện bằng quyền của root: • Gr_password : mật khẩu nhóm sau mã hóa: – Đăng nhập bằng root account. –Dấu ! tức là không cho người ngoài nhảy vào nhóm. – Chuyển sang người dùng root : su –Dấu !! cũng như !, nhưng còn có ý là mật khẩu không –Thực hiện như root : sudo command được thiết lập trước đó – Để trống, tức là không cần mật khẩu. • Có 2 cách thêm users như sau: • Admin_list: danh sách quản trị nhóm: –Sử dụng tool “ users and groups” trong system tool. – Thêm,bớt người dùng mới – Đổi mật khẩu nhóm. – 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) – 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ị làm việc Æ cần có driver • Device driver: –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) • 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 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 có thể thực hiện các hàm sau: • User process ÆDevice driver Æ Device –Mở : open, đóng : close Controller Æ Device – Đọc dữ liệu : read, ghi dữ liệu : write • Linux hỗ trợ tương tác giữa User process • Device file chia làm 2 loại: và Device driver bởi file-like-object. –Tương tác trực tiếp với thiết bị phần cứng. • file-like-object nằm trong file system và –Chỉ tương tác với các tiến trình,kernel mà được gọi là Device file. không liên quan đến thiết bị cụ thể nào. 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 /dev/audio File thiết bị cho Sound Card thiết bị. /dev/cdrom File thiết bị cho CDROM • Các Device file được lưu trữ trong thư mục /dev /dev/fdn File thiết bị cho các ổ đĩa mềm (n là chỉ số) của file system. /dev/hdxn File thiết bị cho phần cứng với giao tiếp IDE • Đánh thứ tự cho các thiết bị cùng kiểu. /dev/lpn File thiết bị cho cổng song song hoặc máy in •Sử dụng liên kết mềm (symbol link) để người /dev/modem File thiết bị cho MODEM dùng dễ nhớ: /dev/mouse File thiết bị cho chuột – vd1: /dev/cdrom Æ/dev/hdc (cd-rom theo chuẩn IDE) /dev/sdxn File thiết bị cho phần cứng với giao tiếp SCSI – Vd2: /dev/modem Æ /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 • Đọc dữ liệu theo từng byte tuần tự. data). • Không cho phép truy xuất dữ liệu ngẫu •Sử dụng bộ nhớ nhiên. đệm (buffer) để lưu dữ liệu trung gian. • Character interface = Raw device • Cho phép đọc dữ interface: dữ liệu không có cấu trúc. liệu ở các vị trí ngẫu nhiên (random) • Không dùng buffer trung gian trong kernel, • Vd: các thiết bị bộ thay vào đó dùng I/O queue. nhớ như HDD, •Vídụ như: modem, teletype, FDD, Character Device Types Network Interface • Unbuffered character device (u): không • Làm việc trong môi trường mạng. dùng bộ nhớ đệm trong quá trình trao đổi •Có2 loại Interface: dữ liệu. –Tương ứng với 1 thiết bị mạng (hardware) • Pipe device – Named pipe (p): hỗ trợ liên –Tương ứng với 1 chương trình phần mềm lạc giữa các tiến trình (interprocesses (software – loopback interface) communication). •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 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 – Major devive number: •Mỗi giao tiếp có thể gắn nhiều thiết bị (vd • Đặc trưng cho 1 giao tiếp với thiết bị. trên 1 IDE có thể có HDD, CD-ROM, ) •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 – Minor device number: khiển (controller). • Phân biệt giữa các thiết bị cùng số Major. •Mỗi controller ứng với 1 driver. • Master device được đánh số từ 0,1,2,3 • Cách phân biệt các thiết bị ??? • Slave device được đánh số từ 64,65,66, 8
- Common Block Devices Common Character Devices Device Name Major Minor Device Name Major Minor First floppy drive /dev/fd0 2 0 Parallel port 0 /dev/lp0 or /dev/par0 6 0 Second floppy drive /dev/fd1 2 1 Parallel port 1 /dev/lp1 or /dev/par1 6 1 Primary IDE controller, master device /dev/hda 3 0 First serial port /dev/ttyS0 4 64 Primary IDE controller, master device, first partition /dev/hda1 3 1 Second serial port /dev/ttyS1 4 65 Primary IDE controller, secondary device /dev/hdb 3 64 IDE tape drive /dev/ht0 37 0 Primary IDE controller, secondary device, first partition /dev/hdb1 3 65 First SCSI tape drive /dev/st0 9 0 Secondary IDE controller, master device /dev/hdc 22 0 Second SCSI tape drive /dev/st1 9 1 Secondary IDE controller, secondary device /dev/hdd 22 64 System console /dev/console 5 1 First SCSI drive /dev/sda 8 0 First virtual terminal /dev/tty1 4 1 First SCSI drive, first partition /dev/sda1 8 1 Second virtual terminal /dev/tty2 4 2 Second SCSI disk /dev/sdb 8 16 Process's current terminal device /dev/tty 5 0 Second SCSI disk, first partition /dev/sdb1 8 17 First SCSI CD-ROM drive /dev/scd0 11 0 Sound card /dev/audio 14 4 Second SCSI CD-ROM drive /dev/scd1 11 1 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 khi cần. lsmod Lists modules currently loaded. insmod Loads a module into the kernel. Does not check for • Là các file nằm trong ổ cứng có đuôi: *.o hay dependencies. *.so rmmod Unloads a module currently loaded. Does not check for •Nằm trong các thư mục con của dependencies. modinfo Display information about a module: -a (author),-d (description), /lib/modules/version – trong đó version là phiên -p (module parameters), -f (module filename), -v (module bản kernel. version). depmod Creates a dependency file listing all other modules on which – ./kernel/drivers/sound: chứa module về cạc âm the specified module may rely. thanh. modprobe Loads a module with any dependent modules it may also need. – ./kernel/drivers/net: chứa module về cạc mạng. 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 Æ cách kết nối ? /lib/modules/kernel_vers/kernel/drivers/usb •Thực hiện các bước: •Nạp các module: –B1: kiểm tra xem driver modules cho USB: #modprobe usb-storage • Core: usbcore. #modprobe usb-uhci • 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). #mkdir /mnt/flash – Tên các modules có đuôi là *.o , *.so, *.ko #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] 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 /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 [ ]$ cat data.txt > /dev/null – Không làm việc với thiết bị thật. 01 02 03 04 05 –Chỉ làm việc với kernel memory 06 07 08 09 10 nothing –Cóchỉ số major number = 1. 11 12 13 14 15 •Có5 loại như sau: – /dev/null - /dev/zero • /dev/null tương đương với EOF – /dev/full - /dev/random [ ]$ cp /dev/null data.txt – Loopback device [ ]$ ls -l data.txt -rw-rw 1 khmt khmt 0 Jan 7 00:27 data.txt /dev/zero /dev/full • file bao gồm dãy vô hạn các số 0 $ ./hexdump /dev/zero • Dùng để test các phần mềm khi: 0x000000 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 – File system không còn đủ chỗ trống. 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 –Ghi dữ liệu thêm Æ lỗi : errno = ENOSPC. 0x000030 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 – Æ Tương tự như ghi vào /dev/full •Tạo file với kích thước bất kỳ •Vídụ : $ dd if=/dev/zero of=data.txt count=20480 20480+0 records in $ cp /etc/fstab /dev/full 20480+0 records out cp : /dev/full : No space left on device $ ls -l data.txt -rw-rw 1 root root 10485760 Jan 8 00:56 data.txt 10
- Random device /dev/random & /dev/urandom •Tạo dãy ngẫu nhiên (random number) • /dev/random : Nếu user không tác động • Standard C Library Æ pseudorandom đến các thiết bị (chuột, bàn phím): function. –tự động ngưng lại sau 1 thời gian nhất định nào đó. • Pseudorandom phụ thuộc vào nguồn sinh –Tiếp tục sinh ngẫu nhiên khi có tác động trở (initial value). lại. • Linux initial value = time delay between • /dev/urandom: Chạy liên tục, không tự input actions: keystrokes, mouse động dừng lại. movements, •Vd: lệnh od đọc nội dung /dev/random /dev/random & /dev/urandom Loopback device $ od -t x1 /dev/random (in ở dạng hexadecimal) •Mô phỏng một file thực (ordinary disk file) 0000000 2c 9c 7a db 2e 79 3d 65 36 c2 e3 1b 52 75 1e 1a như một block device. 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 •Ý nghĩa: 0000060 05 a3 02 cb 22 0a bc c9 45 dd a6 59 40 22 53 d4 –Tạo ra các disk_image –Dễ thay đổi nội dung của image. $ od -t x1 /dev/urandom (có thể dùng hexdump) • Có 2 loopback device: 0000000 62 71 d6 3e af dd de 62 c0 42 78 bd 29 9c 69 49 – /dev/loop0 & /dev/loop1 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 –Tại 1 thời điểm 1 loopback mô phỏng 1 block devive Loopback device Các bước thực hiện •Bước 1. Tạo file kích thước 10M. • Loopback device được sử dụng như block $ dd if=/dev/zero of=/tmp/disk-image count=20480 device nên: 20480+0 records in –Cóthể tạo file system (virtual file system). 20480+0 records out $ ls -l /tmp/disk-image –Cóthể kết nối (mount) vào hệ thống. -rw-rw 1 root root 10485760 Jan 8 01:56 /tmp/disk-image •Vídụ tạo một virtual file system: –Mục đích: •Bước 2. Tạo file system cho đĩa ảo •Tạo 1 đĩa ảo trên đó có file system. $ mke2fs -q /tmp/disk-image •Kết nối với hệ thống (thông qua mount point). mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09 disk-image is not a block special device. •Thực hiện 1 số công việc với file system. Proceed anyway? (y,n) y 11
- Các bước thực hiện Các bước thực hiện •Bước 4. Làm việc với virtual file system: •Bước 3. Kết nối với loopback devive: $ cd /tmp/virtual-fs $ mkdir /tmp/virtual-fs $ echo 'Hello, world!' > test.txt $ mount -o loop=/dev/loop0 /tmp/disk-image /tmp/virtual-fs $ 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 •Kiểm tra virtual file system: $ cat test.txt Hello, world! $ df -h /tmp/virtual-fs Filesystem Size Used Avail Use% Mounted on •Bước 5. Gỡ disk-image khỏi hệ thống: /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. 3. Tổ chức dữ liệu –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 Ý nghĩa một số thư mục • /sbin: chứa các lệnh dành cho người quản trị • /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 • /dev: chứa các device file •/etc: chứa các file cấu hình hệ thống Ý nghĩa một số thư mục Ý nghĩa một số thư mục • /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 dùng. • /mnt: chứa các thư mục liên kết tạm thời với các – /usr/include : chứa các file header lập trình. thiết bị. – /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 –Xác định người sở hữu, nhóm sở hữu. (block) . 1 block = 1K, 2K, 4K, –Xác định quyền truy cập đến dữ liệu. • Cách tổ chức liên kết các khối dữ liệu –Xác định các thuộc tính như: trong 1 file: • Tên file, kích thước, •Thời gian truy nhập, – Liên tục (Contiguous allocation). –Xác định vị trí của file trong FS. – Liên kết (Linked allocation). • Đối với hệ thống: –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 Đườ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 : - – Đi từ thư mục gốc đến vị trí của file. • Text file. –Bắt đầu bằng dấu / • Binary file • Đường dẫn tương đối: • Executed file. –Xuất phát từ thư mục đang đứng hiện tại. – Directory. Ký hiệu : d –Có2 ký tự thư mục đặc biệt: – Device file. Ký hiệu : c hoặc b •Ám chỉ thư mục hiện tại: dấu . –Link. Kíhiệu : l •Ám chỉ thư mục cha : dấu • Soft Link. (Symbolic link) – Để riêng tên file Æ hiểu là thư mục hiện tại. • Hard Link. 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 Æ 1 inode. – Các file có tên khác nhau. • Inode chứa thông tin: – Cùng 1 inode, –Chỉ số liên kết trong inode bằng số file trỏ đến nó. –Quyền truy cập đến file. –Cóthể khác thư mục, nhưng cùng 1 FS. – 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 • Æ 1 inode có thểứng với nhiều file name. 16
- Liên kết cứng (hard link) Liên kết mềm (soft link) • Cách tạo hard link: ln src_file hard_link_file • 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ột thứ I : chỉ các thuộc tính của file. các quyền mở rộng: •Cột thứ II : chỉ số liên kết cứng với Inode của file. – Sticky bit. •Cột thứ III : ghi tên của người dùng sở hữu file. – Set UID , Set GID. •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. • Phân biệt quyền làm việc giữa tệp tin •Cột thứ VI, VII : ghi thời điểm tạo ra file. (regular file) và thư mục (directory). •Cột thứ VIII: ghi tên file. 17
- Thuộc tính của file Thuộc tính file trong Inode •Xét cột thứ nhất có 10 ký tự: • Inode có 1 trường gọi là permission (mod bits) –Ký tự thứ nhất: xác định kiểu của file. để xác định quyền làm việc với 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 •Giátrị mode bit xác định quyền được thiết lập lại. 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 người/nhóm sở hữu Thay đổi quyền truy nhập •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: •u –user. • + :thêm quyền. • r : read. • g – group. •-: bớt quyền. • w : write. chgrp group_name file_name • o – others. • = : gán giá trị. • x : execute. •a –all 18
- Quyền truy cập đối với Quyền truy cập đối với tệp tin & thư mục tệp tin & thư mục • Đối với tệp tin: • Đối với thư mục: –Quyền đọc (r - read): tức người dùng có thể –Quyền đọc (r - read): tức người dùng có thể đọc nội dung của file. 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):Cho phép người –Quyền thực thi (x – execute): Nếu file là file dùng nhảy vào trong thư mục (lệnh cd) và lấy thực thi (chạy) thì người dùng có thể chạy file nội dung chi tiết (lệnh ls –li ). này. –Quyền đọc và thực thi không phụ thuộc vào nhau Æ 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 • Sticky bit: xuất phát từ “stuck – mắt kẹt” cả file và thư mục như sau: –Sử dụng trong các phiên bản Unix cũ. – Sticky bit. – Khi RAM nhỏ Æ giữ lại code chương trình sau khi đã – Set UID – SUID. thực hiện xong. – Set GID – SGID. • 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 File’s SUID (tiếp) • Set UID – SUID: • SUID giải quyết vấn đề này. –Chỉ thiết lập với file thực thi (quyền execute). •Người dùng khi chạy file có quyền SUID, – Theo nguyên tắc: trong thời gian chạy, sẽ mang quyền của • 1 file có 1 owner Æ 1 UID. người sở hữu file. • 1 user chạy 1 file Æ 1 process Æ UID của user đang chạy chương trình. •Vd: chương trình sửa mật khẩu: passwd • 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 && [khmt@localhost ~] ls -l /usr/bin/passwd owner được quyền ghi Æ dữ liệu sẽ được ghi. -r-sr-sr x 3 root root 15688 Jan 24 17:51 /usr/bin/passwd* • Làm thế nào process’s UID := owner’s UID ??? 19
- File’s SGID File’s SGID (tiếp) • Set GID – SGID: • SGID giải quyết vấn đề này. –Chỉ thiết lập với file thực thi (quyền execute). •Người dùng khi chạy file có quyền SGID, – Theo nguyên tắc: trong thời gian chạy, sẽ mang quyền của • 1 file có 1 owner group Æ 1 GID. người dùng nằm trong nhóm sở hữu file. • 1 user thuộc 1 group Æ chạy 1 file Æ 1 process Æ GID của user đang chạy chương trình. •Vd: chương trình sửa mật khẩu: passwd • 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 [khmt@localhost ~] ls -l /usr/bin/passwd group’s ID được quyền ghi Æ dữ liệu sẽ được ghi. -r-sr-sr x 3 root root 15688 Jan 24 17:51 /usr/bin/passwd* • Làm thế nào process’s GID := group’s UID ??? Directory’s Sticky bit Directory’s SUID, SGID • Theo nguyên tắc: • Directory’s SUID không có ý nghĩa gì. –Quyền xóa/tạo file trong thư mục phụ thuộc • Directory’s SGID: vào quyền ghi (w) của thư mục. – Theo nguyên tắc các file được tạo sẽ mang –Cóthể người dùng này xóa file của người GID của nhóm mà người dùng đang nằm dùng khác Æ bảo mật ? trong đấy (primary group). • Sticky bit giải quyết vấn đề này: người –Người dùng làm việc với các nhóm khác Æ dùng chỉ được quyền xóa file của mình. tạo file trong nhóm nào thì do nhóm đấy quản lý Æ 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: • Group khmt – primary group. 4. Graphical User Interface • 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 Æ chuyện gì xảy ra ??? 20
- Nhu cầu GUI X Window System •Hiển thị hình ảnh trực •Hệ thống cửa sổ hiển thị đồ họa. quan, sinh động. • Cung cấp công cụ đồ họa giúp người • Giúp người dùng dùng xây dựng ứng dụng của mình. tương tác với hệ thống tốt hơn. • Làm việc theo mô hình Client/Server. •Người dùng có thể tự – X Client. thiết kế giao diện làm –X Server. việc phù hợp với – X protocol. mình. 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: • X Window System: – Client : Saturn – Server: Saturn – Server:Jupiter,Mercury – 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 (WM) • Window manager – Client Application. •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: •Hỗ trợ X Window System trong: – 1. Client đọc file ảnh, xác định kích thước cửa sổ hiển –Quản lý các Client Windows khác: thị Æ gửi yêu cầu đến Server để tạo cấu trúc cửa sổ tương ứng. •Sắp đặt vị trí. – 2. Sau đó yêu cầu Server hiển thị cửa sổảnh (copy •Thay đổi kích thước. các điểm ảnh lên vùng bộ nhớ màn hình – display –Hỗ trợ người dùng thực hiện thao tác: mapped-memory). •Nhấn chuột lên các biểu tượng (icon). – 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. • Kéo thả các thành phần (drag & drop). – 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 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: • Web browsers, • File manager, • Drawing programs, • Control Panel, K Desktop Enviroment GNU Object Model Enviroment • KDE = K Window manager (kwin) + Qt toolkit • GNOME = Metacity Window Manager + GTK Xfce Desktop Enviroment 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 Common Xwindow configuration xvidtune utilities 24
- Common Xwindow configuration Cấu hình X Window System 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 •Xác định phiên bản X server bằng cách gõ man • Sau khi boot, init process sẽ tìm file chạy Xorg và man XFree86. Phiên bản nào được cài mặc định : /etc/inittab để thực hiện. đặt thì sẽ có thông tin trong tra cứu bằng lệnh man. •Có6 mức chạy trong Linux như sau: •Một số tổ hợp phím: 0 - halt (Do NOT set initdefault to this) 1 - Single user mode –Kết thúc X server: [Ctrl+Alt+Backspace] 2 - Multiuser, without NFS – [Ctrl+Alt+Fx] x := 1 6 : 6 Text Console . 3 - Full multiuser mode – [Ctrl+Alt+Fy] y := 7 11 : 5 GUI Console. 4 - unused –Thường thì GUI đầu tiên [Ctrl+Alt+F7] được chạy. 5 - X11 6 - reboot (Do NOT set initdefault to this) Runlevel Tạo file cấu hình mới • Dòng lệnh đầu tiên trong file /etc/inittab xác định runlevel của hệ thống: •Giả sử hệ thống chạy X system bị lỗi, ta id:5:initdefault: khắc phục như sau: • Để xác định hệ thống đang làm việc ở runlevel –Nhấn [Ctrl+Alt+BackSpace] để tắt X System. nào dùng lệnh: runlevel. –Chạy chế độ dòng lệnh, gõ: init 3. • Để chuyển đổi giữa các runlevel dùng cú pháp: init n với n := 0,1, ,6 –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 •Vd: đang chạy ở runlevel 3, muốn chuyển sang X system ta làm như sau: cấu hình: /root/xorg.conf.new. – gõ trong cửa sổ lệnh: init 5 –Kiểm tra cấu hình vửa thiết lập bằng: –Hoặc : startx & X -xf86config /root/xorg.conf.new 25
- Tạo file cấu hình mới Chỉnh sửa nội dung file cấu hình •Nếu file cấu hình mới thiết lập thành công • Đọc nội dung các file cấu hình X Window Æ màn hình X Window xuất hiện. System của hệ thống. •Tắt X Window : [ Ctrl+Alt+BackSpace]. – /etc/X11/xorg.conf. – /etc/X11/XF86config. • 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: – Section “Device” :BoardName: Vesa (generic) cp /root/xorg.conf.new /etc/X11/xorg.conf – Section “Screen”: • Depth : 4 – 16 màu; 8 – 256 màu. • Modes: “640x480” •Kiểm tra lại kết quả: reboot hệ thống. X config file structure /etc/X11/XF86Config • 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 /etc/X11/xorg.conf Thank you! 27