Bài giảng Nguyên lý Hệ điều hành - Chương 7: Security - Phạm Quang Dũng

7.1. Users and Groups  Mỗi Linux user được gán một số duy nhất được gọi là user ID hay UID.  Username mà người sử dụng đăng nhập được HĐH chuyển đổi thành UID tương ứng.  Các username tương ứng với cùng UID có quyền như nhau.  Có thể kiểm soát truy nhập file hoặc các tài nguyên khác bằng cách gán nó cho một UID riêng.  Khi muốn chia sẻ 1 tài nguyên giữa nhiều người sử dụng, ko thể gán tài nguyên đó cho tất cả các UID  tạo group  Mỗi group được gán một số duy nhất, được gọi là group ID hoặc GID.  Group chỉ chứa được các user, không chứa các group khác.  Một user có thể là thành viên của nhiều group.  Chỉ có thể gán một group với một tài nguyên. Ví dụ: không thể xác định cách các user truy nhập 1 file chỉ nếu họ thuộc group 7 hoặc group 42.

pdf12 trang | Chia sẻ: candy98 | Lượt xem: 545 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bài giảng Nguyên lý Hệ điều hành - Chương 7: Security - Phạm Quang Dũng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Chương 7. Security Phạm Quang Dũng 2Mở đầu  Các HĐH ngày nay đều hỗ trợ đa người dùng và mạng. Điều này cũng làm tăng nguy cơ các user đọc, sửa đổi, xóa file của nhau, hoặc bởi các hacker.  Linux kernel cung cấp nhiều chức năng để đảm bảo rằng những sự mất an toàn trên không diễn ra. 37.1. Users and Groups  Mỗi Linux user được gán một số duy nhất được gọi là user ID hay UID.  Username mà người sử dụng đăng nhập được HĐH chuyển đổi thành UID tương ứng.  Các username tương ứng với cùng UID có quyền như nhau.  Có thể kiểm soát truy nhập file hoặc các tài nguyên khác bằng cách gán nó cho một UID riêng. 4Users and Groups (tiếp)  Khi muốn chia sẻ 1 tài nguyên giữa nhiều người sử dụng, ko thể gán tài nguyên đó cho tất cả các UID  tạo group  Mỗi group được gán một số duy nhất, được gọi là group ID hoặc GID.  Group chỉ chứa được các user, không chứa các group khác.  Một user có thể là thành viên của nhiều group.  Chỉ có thể gán một group với một tài nguyên. Ví dụ: không thể xác định cách các user truy nhập 1 file chỉ nếu họ thuộc group 7 hoặc group 42. 5Superuser  Là user đặc biệt, có thể thực hiện bất kỳ việc gì: đọc tất cả các file, xóa chúng, thêm user, tắt kết nối mạng  Có UID 0 và thường có username root. 67.2. UID và GID của tiến trình  Tất cả tiến trình được gán vào một UID và GID.  Khi bạn gọi 1 lệnh, nó thường chạy trong 1 tiến trình có UID và GID giống như UID và GID của bạn.  Khi cần sử dụng UID và GID trong chương trình:  sử dụng kiểu uid_t và gid_t xác định trong  dùng hàm geteuid() và getegid() được khai báo trong  Listing 10.1 (simpleid.c): lấy UID và GID của tiến trình hiện tại. 77.3. File System Permissions  Mỗi file có chính xác một user và một group sở hữu. Khi bạn tạo 1 file mới, file được sở hữu bởi user và group của tiến trình tạo file.  Các thao tác cơ bản với các file: đọc từ file, ghi lên file, và thực hiện chúng (read, write, execute).  Lệnh xem quyền: % ls –l tên_file hoặc ls –o tên_file  Lệnh thiết lập quyền: % chmod o+x tên_file // thêm quyền thực thi cho other % chmod g-w tên_file // bớt quyền ghi của group 8File System Permissions (tiếp)  Trong lập trình, để lấy thông tin quyền đối với 1 file, sử dụng system call: stat(filename, biến kiểu struct stat)  chmod(“tên_file”, danh sách quyền) để thiết lập quyền đối với file:  S_IWUSR: quyền write đối với owner  S_IRGRP: quyền read đối với group  S_IXOTH: quyền execute đối với other  Vd: chmod(“hello”, S_IRUSR | S_IXUSR)  Muốn lưu quyền vào 1 biến, sử dụng biến kiểu mode_t  Listing 10.2 (stat-perm.c): xác định quyền ghi file của owner. 9Sticky bit  Là một “magic bit” chỉ áp dụng cho thư mục.  Thư mục có thiết lập sticky bit chỉ cho phép bạn xóa file nếu bạn là chủ sở hữu của file đó, nhưng vẫn cho phép truy nhập ghi lên file.  Một số ít thư mục của hệ thống GNU/Linux có thiết lập sticky bit, ví dụ như /tmp. Thư mục này được thiết kế cho tất cả các user, vì vậy mọi người đều có thể ghi, nhưng không được xóa file của nhau. 10 Sticky bit (tiếp)  Xem thiết lập sticky bit (chữ t ở cuối các bit chỉ quyền): % ls –ld /tmp (hãy thử dòng lệnh này)  Lệnh thiết lập sticky bit: % chmod o+t thư_mục  Trong lập trình: chmod(dir_path, S_IRWXU | S_IRWXG | S_IRWXO | S_ISVTX) (thiết lập quyền read, write, execute cho cả owner, group, others và thiết lập sticky bit đối với thư mục). 11 7.4. Xác thực người sử dụng  Khi quản trị một hệ thống an ninh cao, chống đăng nhập chỉ bằng password là không đủ.  GNU/Linux cung cấp thư viện Pluggable Authentication Modules (PAM), giúp người lập trình thực hiện việc xác thực người sử dụng.  Listing 10.4 (pam.c): xác thực password của user hiện tại  Biên dịch: phải liên kết chương trình với 2 thư viện như sau: % gcc –o pam pam.c –lpam –lpam_misc 12 Ví dụ chạy chương trình  Giả sử password của user hiện tại là 123456  Khi gõ đúng mật khẩu: % ./pam Password: 123456 Authentication OK.  Khi gõ sai: % ./pam Password: 654321 Authentication failed!