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] 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 > /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

/etc/X11/xorg.conf

Thank you!

27