Đề tài Tìm hiểu về hệ điều hành Linux

Linux là một hệ điều hành. Về mặt nguyên tắc , hệ điều hành cũng là một ứng dụng máy tính, nhưng đây là một ứng dụng đặc biệt – được dùng để quản lý , điều phối các tài nguyên của hệ thống bao gồm cả phần cứng và phần mềm khác. Linux được phát triển bởi Linus Torvalds , bản đầu tiên được đưa ra vào năm 1991 tại đại học Helsinki , Phần Lan ,dựa trên hệ điều hành Minix – một hệ điều hành có cấu trúc tương tự Unix với các chức năng tối thiểu được dùng trong dạy học. Về cơ bản thì Linux là một clone Unix . Ngoài ra ,Linux cũng là một hệ điều hành với các khả năng đa nhiệm ,đa tác vụ, đa người dùng . Thêm nữa, Linux còn có khả năng chạy được trên hầu như tất cả các loại máy tính từ PC, Mac cho đến những hệ thống Alpha,Amiga.

doc77 trang | Chia sẻ: Dung Lona | Lượt xem: 1158 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đề tài Tìm hiểu về hệ điều hành Linux, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
oader. · Cấu hình Firewall. Minh họa 2.10 Cấu hình Firewall · Hỗ trợ ngôn ngữ Minh họa 2.11 Thiết lập hỗ trợ ngôn ngữ. · Cấu hình thời gian. Minh họa 2.12 Thiết lập múi giờ. · Thiết lập mật khẩu Root : Tài khoản root là tài khoản có quyền cao nhất trong hệ thống. Với tài khoản này , người dùng có thể cài đặt, cấu hình hay làm mọi chuyện một khi đăng nhập vào hệ thống . Minh họa 2.13 Màn hình thiết lập mật khẩu Root · Xác lập các gói cài đặt . Minh họa 2.14 Màn hình xác lập gói cài đặt · Bắt đầu cài đặt Minh họa 2.15 Màn hình bắt đầu cài đặt. Minh họa 2.16 Quá trình cài đặt Fedora Core Minh họa 2.17 Kết thúc quá trình cài đặt · Thiết lập User. Minh họa 2.18 Màn hình Welcome Minh họa 2.19 Thỏa thuận bản quyền . Minh họa 2.20 Tạo Account. Minh họa 2.21 Hoàn tất quá trình cài đặt. CHƯƠNG 3 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH LINUX 3.1 ĐĂNG NHẬP Sau khi cài đặt thành công , người dùng có thể đăng nhập vào Linux bằng tài khoản của mình được tạo ra lúc cài đặt. Trong HĐH Linux , mỗi account cung cấp cho từng người sử dụng một thư mục ngầm định , gọi là home directory , đối với root là root’Home . Nhiều account được cấu hình sao cho người sử dụng chỉ được thao tác trong phạm vi một số thư mục nào đó trên hệ thống , chỉ có root với tư cách là superuser là có quyền hạn tối đa. Minh họa 3.1 Hình nền của Fedora Core 1 3.2 MỘT SỐ LỆNH CƠ BẢN CỦA LINUX. Các lệnh về khởi tạo + rlogin : Dùng để điều khiển hoặc thao tác lệnh trên một máy khác. + exit : Thoát khỏi hệ thống Bourne - Shell + logout : Thoát khỏi hệ thống C-Shell + id : Chỉ danh của người dùng. + logname : Tên người sử dụng login. + man : Lệnh trợ giúp + newgrp : Chuyển người sử dụng sang một nhóm mới. + psswd : Thay đổi password của người sủ dụng. + set : Xác định các biến môi trường. + tty : Đặt các thông số terminal. + uname : Tên của hệ thống host. + who : Cho biết những ai đang thâm nhập hệ thống. Lệnh về trình bày màn hình + echo : Hiển thị dòng kí tự hay biến. + setcolor : Đặt mầu nền và chữ của màn hình. Lệnh về Desktop + bc : Tính biểu thức số học. + cal: Máy tính cá nhân. + date : Hiển thị và đặt ngày. + mail : Gửi – nhận thư điện tử. + mesg : Cấm /cho phép hiển thị thông báo trên màn hình ( bởi write / hello ) + spell : Kiểm tra lỗi chính tả. + vi : Soạn thảo văn bản. + write/hello : Cho phép gửi dòng thông báo đến những người dùng trong hệ thống Lệnh về thư mục. + cd : Đổi thư mục + cp : Sao chép hai thư mục. + mkdir [Tham số] : Tạo thư mục. + rm [Tham số] : Loại bỏ thư mục. + pwd : Trình bày thư mục hiện hành. Lệnh về tệp tin. + more : Trình bày nội dung tệp tin. + cp [Tham số] : Sao chép một hay nhiều tệp tin. + find – name : Tìm vị trí của tệp tin. + grep : Tìm vị trí của kí tự trong tệp tin. + ls : Trình bày tên và thuộc tính của tệp tin trong thư mục. + mv [Tham số] : Di chuyển / đổi tên một tập tin. + sort [Tham số] : Sắp thứ tự nội dung tệp tin. + wc [Tham số] : Đếm số từ trong tệp tin. + cat : Hiển thị nội dung tệp tin. + vi [Tham số] : Soạn thảo hay sửa đổi nội dung tệp tin. Lệnh về quản lý tiến trình. + kill : Hủy bỏ một tiến trình. + ps : Trình bày tình trạng của các tiến trình. + sleep : Ngưng hoạt động một thời gian. Các lệnh về phân quyền. + chgrp : Chuyển chủ quyền tệp tin , thư mục từ một nhóm sang một nhóm khác. + chmod : Thay đổi quyền sở hữu của tệp tin hay thư mục. + chown : Thay đổi người sở hữu tệp tin hay thư mục. + su : Chuyển thành root ( phải nhập password ). Lệnh về kiểm soát in. + cancel : Ngừng in + lp : In tài liệu ra máy in. 3.3 FILE SYSTEM. Các tệp tin trong Linux được tổ chức theo cấu trúc cây thư mục , với root nằm trên cùng .Từ điểm này các thư mục và tệp tin mới mọc nhánh lan dần xuống phía dưới . Thư mục cao nhất , được kí hiệu bằng vạch “ / “ , được gọi là root directory . Minh họa 3.2 Tổ chức thư mục trong Linux. Với người sủ dụng thông thường thì cây thư mục này là một dải những tệp tin và thư mục nối liền nhau. Trên thực tế , nhiều thư mục trong cây thư mục này nằm ở nhiều vị trí vật lý khác nhau ,trên các partition khác nhau .Khi một trong các partition ấy được nối kết với cấu trúc cây tai một thư mục gọi là mount point(điểm kết nối ) , thì mount point này và tất cả các thư mục cấp dưới được gọi là file system . Hệ điều hành Linux hình thành từ nhiều thư mục và tệp tin khác nhau . Các thư mục có thể lập thành nhiều file system khác nhau, tùy vào cách cài đặt của người dùng . Nhìn chung , đa phần hệ điều hành nằm ở hai file system : root file system ( file system gốc ) được kí hiệu là / , và một file system khác được nối kết theo /usr. Để mount ( lắp ) một file system vào cây thư mục Linux , cần phải có một partition vật lý , một CDROM hoặc đĩa mềm và thư mục gắn vào file system phải là thư mục có thật. Mount một file system không có nghĩa là tạo ra thư mục mount point . Mount point phải có trước khi mount file system . Chẳng hạn mount CDROM tại /dev/sr0 theo mount point /mnt thì thư mục mang tên /mnt phải sẵn có , nếu không động tác mount sẽ thất bại . Sau khi mount file system bên dưới thư mục này ,tất cả các tập tin và thư mục con của file system đều xuất hiện bên dưới thư mục /mnt. Mount file system có tính tương tác. Vì lý do an ninh nên trong hệ thống Linux chỉ có superuser mới có quyền ra lệnh mount. Cú pháp của lệnh mount : mount thiết_bị ,mount_point thiết_bị : là thiết bị vật lý mà ta muốn mount mount_point : là vị trí trong file system , nơi mà ta muốn đặt thiết bị. Các đối số dòng lệnh cho lệnh mount -f Làm cho tất cả mọi thứ đều diễn ra “như thật”, song đối số này chỉ gây động tác giả -v Chế độ chi tiết , cung cấp thêm thông tin về những gì mà mount định thực hiện -w Mount file system với các permission ( quền hạn ) đọc và ghi. -r Mount file system với tính năng chỉ đọc mà thôi. -n Mount file system nhưng không ghi mục nào và tệp tin /etc/mtab. -t loại Xác định loại file system đang được mount . Những loại hợp lệ là minux , ext , ext2 , xiafs , msdos , hpfs, proc , nfs , umsdos , sysv ,và iso9660 ( mặc định ) -a Bảo mount cố gắng mount tất cả các file system đã khai báo trong /etc/fstab -o danh_sách_các_tùy_chọn Khi phía sau lệnh mount có một loạt các tùy chọn được cách nhau bằng dấu phẩy , mount sẽ áp dụng các tùy chọn ấy vào file system đang được mount. Mount file system khi khởi động. Khi làm việc ổn định , Linux sẽ sử dụng một số file system hay dùng và ít khi thay đổi. Do vậy , ta có thể xác định danh sách các file system nào mà Linux cần phải mount khi khởi động, và cần phải unmount ( tháo ) khi đóng tắt . Các file system này được liệt kê trong một tệp tin cấu hình đặc biệt gọi là /etc/fstab , viết tắt của chữ file system table. Tệp tin /etc/fstab liệt kê các file system cần được mount theo từng dòng , mỗi dòng một file system. Những trường ở mỗi dòng đựơc phân cách bằng khoảng trống hay khoảng tab. Các trường trong tệp tin /etc/fstab : File system specifier Xác định thiết bị block đặc biệt hoặc file system ở xa cần được mount. Mount point Xác định mount point cho file system . Đối với các file system đặc biệt như tệp tin swap , ta dùng chữ none, có tác dụng làm cho tệp tin swap hoạt động bình thường nhưng nhìn vào cây tệp tin thì không thấy. Type Thông báo loại file system . Những loại file system sau được chấp nhận: Minix : một loại file system tại chỗ hỗ trợ tệp tên tin dài từ 14 đến 30 kí tự. ext , file system tại chỗ có tệp tin dài hơn và inode lớn hơn. ext2 , file system tại chỗ có tệp tin dài hơn và inode lớn hơn, cùng với những đặc điểm khác. xiafs , một file system tại chỗ. msdos , file system tại chỗ cho các partition MS-DOS. hpfs , một file system tại chỗ cho các partition High Performance File System của OS/2. iso9660 :một file system tại chỗ cho ổ CDROM nfs , một file system tại chỗ để mount các partition từ các hệ thống ở xa. swap , một partition hoặc các tệp tin đặc biệt để swap. umsdos , một file system dạng UMSDOS sysv, một file system dạng System V. ext3 một dạng file system mới của Redhat. Mount options Danh sách các tùy chọn để mount file system được ngăn cách bằng dấu phẩy. Dump frequency Xác định khoảng thời gian để lệnh dump backup file system . Nếu trường hợp này trống , dump sẽ giả định rằng file system không cần backup. Pass number Khai báo cho lệnh fsck biết thứ tự kiểm tra các file system khi khởi động hệ thống File system gốc phải có trị 1. Tất cả các file system khác phải mang trị 2 . Nếu không khai báo , khi khởi động ,máy sẽ không kiểm tra tính thống nhất của file system. Unmount một file system. Trong quá trình hoạt động , đôi lúc chúng ta cần umount một file system như: Để kiểm tra , sửa chữa bằng lệnh fsck ,hay gặp các vấn đề về mạng. Lệnh umount có ba dạng cơ bản : + umount thiết_bị | mountpoint + umount -a + umount -t loại fs Các tham số : thiết-bị : là tên của thiết bị vật l‏‎‏ý cần được umount. Mountpoint : là tên thư mục mountpoint. -a : để mount tất cả các file system. -t loại fs để xử lý các file system nào được chọn. 3.4 HỆ THỐNG TỆP TIN VÀ THƯ MỤC. 3.4.1 Hệ thống tệp tin Linux gom tất cả mọi thứ vào bốn loại tệp tin cơ bản : tệp tin thông thường , thư mục , kết nối , và tệp tin đặc biệt . Mỗi loại như thế lại có nhiều thứ , chưa kể có rất nhiều thư mục chuẩn . Để có thể xác định loại của một tệp tin , ta có thể sử dụng lệnh file với cú pháp sau : file [ -vczL ] [ - f têntệptin] [ -m tệptinmagic ] danhsáchtệptin Để có thể liệt kê các tệp tin , ta sử dụng lệnh ls vói các tham số : - a Liệt kê tất cả các mục ghi. - F Đánh dấu thư mục bằng dấu gạch chéo / , đánh dấu tệp tin thi hành bằng dấu * , các kết nối tượng trưng dấu @ - r Đảo ngược thứ tự sắp xếp abc hoặc thời gian. - s Hiển thị kích thước tệp tin. Tệp tin thông thường. Tệp tin thông thường là những tệp tin mà người sử dụng hay thao tác nhất . tệp tin thông thường có thể chứa văn bản , mã nguồn ngôn ngữ C , shell , script , chương trình khả thi nhị phân , và nhiều loại dữ liệu khác nhau . Cho dù nội dung chứa gì đi nữa thì Linux xem mọi tệp tin là như nhau, và chỉ để ý một đặc điểm duy nhất xem tệp tin đó có phải là loại thi hành hay không. Tệp tin thư mục. Thư mục là những tệp tin chứa tên của các tệp tin và thư mục cấp dưới , cùng với những đường dẫn đến tệp tin và thư mục cấp dưới ấy . Trong toàn bộ hệ thống , Linux chỉ chứa tên của tệp tin trong tệp tin thư mục mà thôi. Khi dùng lệnh ls liệt kê nội dung thư mục , tức là ta đang liệt kê nội dung tệp tin thư mục mà không đụng chạm gì đến bản thân các tệp tin. Các kết nối. Linux chỉ định cho mỗi tệp tin trong hệ thống một con số duy nhất gọi là inode, được lưu trong một bảng gọi là bảng inode . Bảng này được thành lập khi định dạng đĩa. Mỗi đĩa hoặc partition vật lý đều có bảng inode của riêng mình . Inode chứa tất cả thông tin của tệp tin , bao gồm địa chỉ của dữ liệu trên đĩa , và loại tệp tin. Các kết nối thông thường ( kết nối cứng ) không thực sự là những tệp tin , chúng là các mục ghi thư mục trỏ về cùng một inode. Bảng inode theo dõi xem một tệp tin có bao nhiêu kết nối , và chỉ khi nào kết nối cuối cùng với một thư mục được xóa đi , thì inode ấy mới được đánh dấu là trống . Hiển nhiên là các kết nối thông thường không thể nào vượt qua giới hạn của thiết bị , bởi vì tất cả các mục tham chiếu của thư mục đều trỏ về cùng inode. Muốn tạo ra kết nối , ta có thể sử dụng lện ln với cú pháp : ln [ tùy chọn ] nguồn đích Tệp tin đặc biệt Mọi thiết bị kết hợp với Linux , bao gồm đĩa , terminal , và máy in đều hiện diện trong file system . Hầu hết các thiết bị này đều nằm trong thư mục /dev. Máy in và terminal được gọi là các thiết bị đặc biệt kí tự . Chúng có khả năng tiếp nhận và sản xuất hàng loạt các ký tự . Trong khi đó, đĩa hay băng từ lại lưu trữ dữ liệu thành từng đơn vị block .Những thiết bị này được gọi là thiết bị đặc biệt block. 3.4.2 Hệ thống thư mục · /bin : Đây là thư mục chứa các chương trình thi hành được , còn gọi là các binaries (nhị phân ). Nhiều tệp lệnh của Linux nằm trong thư mục này. · /sbin : Đây là thư mục chứa các tệp tin nhị phân của hệ thống. · /etc : Thư mục chứa các tệp tin cấu hình Linux · /lib : Thư mục chứa các tệp tin thư viện dung chung . · /dev : Thư mục chứa các tệp tin đặc biệt gọi là device files ( tệp tin thiết bị ) được hệ thống dung để chạy các thiết bị phần cứng. · /proc : Thư mục này là một file system ảo , dùng để đọc thông tin từ bộ nhớ. · /tmp : Thư mục chứa các temp files mà chương trình tạo ra khi chạy. · /var : Thư mục này lưu các tệp tin có thể thay đổi kích thước theo thời gian. · /home : Thư mục chứa tất cả thư mục con được cấp cho user. · /usr : Thư mục này chứa nhiều thư mục con cần thiết cho hệ thống. 3.5 CÀI ĐẶT PHẦN MỀM TRONG LINUX. 3.5.1 Cài Đặt Phần Mềm. So với Windows , thì cài đặt phần mềm trong Linux phức tạp hơn , nguyên nhân là do hầu hết các chương trình đòi hỏi lập cấu hình cho phù hợp với hệ thống trước khi sử dụng. Để thuận tiện cho việc cài đặt , Redhat đã phát triển tiện ích Redhat Package Manager(RPM ) , nhằm quản lý các gói phần mềm. Tính dễ dùng của RPM là một trong các yếu tố góp phần giúp Redhat Linux trở nên phổ cập và khác biệt so với các bản Linux khác. RPM làm việc theo sáu chế độ khác nhau đó là : xây dựng ( built ), cài đặt ( install ), tháo cài đặt ( erase ), truy vấn ( query ), cập nhật ( update ) và kiểm soát ( verify ). Cài đặt gói phần mềm bằng RPM : rpm - ivh tên_gói_phần_mềm.rpm Một số tùy chọn khác khi cài đặt. - vv Cung cấp thông tin đầy đủ. -- percent Tùy chọn này hiển thị tỷ lệ % của quá trình cài đặt. -- force Lệnh cho RPM bỏ qua các lỗi do xung đột , và tiếp tục cài đặt. -- test Không cài đặt gói phần mềm , nhưng kiểm tra và báo cáo lỗi RPM thực hiện quá trình cài đặt qua các bước sau : Kiểm tra tính phụ thuộc : Mỗi gói có khả năng phụ thuộc vào phần mềm khác cài sẵn trên máy. Kiểm tra tiềm năng xung đột : RPM xét xem một thành phần đã cài đặt sẵn hay chưa , hoặc thành phần ấy có cũ hơn thành phần đang trong tiễn trình cài đặt hay không. Xủ lý các tệp tin cấu hình : RPM sẽ thử cung cấp một tệp tin cấu hình thích hợp , và nếu phát hiện một tệp tin cấu hình đã có sẵn , RPM sẽ lưu tệp tin này lại để đối chiếu trong tương lai. Cài đặt tệp tin : RPM mở gói các thành phần và cài đặt chúng vào thư mục thích hợp. Xử lý sau khi cài đặt : Sau khi cài đặt các thành phần xong rồi , RPM tiến hành các công viêc cần thiết để lập cấu hình hệ thống cho đúng đắn. Cập nhật căn cứ dữ liệu : RPM ghi chép lại hành trình của mình vào một cơ sở dữ liệu. 3.5.2 Tháo Cài Đặt Phần Mềm. Để tháo cài đặt một gói phần mềm ra khỏi hệ thống : rpm – e tên_gói_phần_mềm.rpm RPM phải trải qua các bước sau đây : Kiểm tra tính phụ thuộc : RPM kiểm tra cơ sở dữ liệu xem có gói phần mềm nào khác phụ thuộc vào gói ấy hay không . Nếu có , RPM sẽ không xóa , trừ khi người dùng khẳng định là phải xóa. Thực thi các chỉ lệnh script : RPM sẽ thi hành một script cho việc tháo cài đặt. Kiểm tra các tệp tin cấu hình : RPM luu bản sao cảu tất cả các tệp tin cấu hình thay đổi Xóa các tệp tin : RPM sẽ xóa tất cả các tệp tin kết hợp với gói được xác định. Thực thi script : RPM thực thi một script liên quan đến giai đoạn sau khi tháo cài đặt. Cập nhật căn cứ dữ liệu : RPM gỡ bỏ tất cả mọi chỉ mục tham chiếu đến gói phần mềm đã gỡ bỏ. 3.5.3 Cập Nhật Phần Mềm. Để cập nhật gói phần mềm đã cài đặt : rpm – Uvh tên_gói_phần_mềm.rpm 3.5.4 Truy vấn gói phần mềm bằng RPM. Muốn biết những gói phần mềm nào đã cài đặt vào hệ thống , sử dụng lệnh: rpm –qa Lệnh này sẽ hiển thị danh sách các gói hiện có trên hệ thống Các tùy chọn truy vấn rpm : -q tên Cung cấp tên , phiên bản số phát hành của gói phần mềm. -qa Liệt kê tất cả các gói đã cài đặt trên hệ thống. -qf tệp_tin Truy vấn gói liên kết với tệp_tin -qp gói Truy vấn gói -qi gói Cung cấp tên , mô tả , bản phát hành , kích cỡ , ngày tạo ra , ngày cài đặt và các thong tin khác về gói. -ql gói Liệt kê tất cả các tệp tin lien kết với gói. 3.5.5 Kiểm tra gói phần mềm bằng RPM Để kiểm tra tính nhất quán của một tệp tin trên hệ thống : rpm -V tên_gói_phần_mềm Nếu không có gì thay đổi , rpm sẽ không hiển thị thông báo , còn ngược lại thông báo sẽ xuất hiện . Mã báo lỗi khi kiểm tra : c Tệp tin này là tệp tin cấu hình 5 Tệp tin này không qua được trắc nghiệm tổng kiểm MD5 S Kích cỡ tệp tin đã thay đổi sau khi cài đặt L Có vấn đề với các mối lien kết tượng trưng. T Thời gian chỉnh sửa tệp tin không trùng với nguên thủy. D Thuộc tính thiết bị. U Các thiết lập cho user đã thay đổi. G Các thiết lập cho nhóm đã thay đổi. M Chế độ đã thay đổi ,hoặc ở loại tệp tin hoặc ở permission 3.5.6 Cài đặt phần mềm phi-Linux. Trong thực tế thì không phải gói phần mềm nào cũng ở dạng rpm , mà đa phần chúng ở các dạng nén khác nhau. Thông thường thì cây thư mục chứa tệp tin nguồn , thư viện , tư liệu , tệp tin thi hành , và các tệp tin khác gộp chung thành tệp tin gộp ( tar file ) bằng chương trình tar. Sau đó tệp tin gộp được nén lại để chiếm ít dung lượng đĩa.Căn cứ vào đuôi mở rộng của gói phần mềm để xem chúng được nén bằng chương trình nào. Nếu đó là .gz thì tệp tin được nén bằng chưong trình gzip của GNU . Đây là dạng thức nén phổ biến cho các gói phần mềm Linux. Nếu đuôi mở rộng là .z , thì tệp tin đó được nén bằng chương trình compress. + Để cài đặt những gói phần mềm dạng này trước hết cần giải nén chúng. Nếu tệp tin được nén bằng chương trình gzip: Giải nén : gzip –d tệp_tin.tar.gz Các flag cho lệnh gzip -a ascii Văn bản dạng ASCII ; chuyển đổi các kí tự cuối dòng bằng cách sử dụng những quy ước tại chỗ. -c stdout Ghi vào stdout ( xuất tiêu chuẩn ) ; giữ các tệptin nguyên thủy không thay đổi. -d decompress Giải nén -f force Khẳng định ghi chồng lên tệp tin xuất và nén các mối liên kết -h help Liệt kê phần trợ giúp. -l list Liệt kê nội dung tệp tin nén. -L license Hiển thị bản quyền phần mềm. -n no-name Không lưu và không phục hồi tên và ngày giờ nguyên thủy. -N name Lưu và phục hồi tên và ngày giờ nguyên thủy. -q quite Bỏ qua tất cả các nhắc nhở cảnh báo. -s hậu tố suffix.suf Sử dụng suffix.suf vào các tệp tin nén. -t test Trắc nghiệm tính toàn vẹn của tệp tin nén. -v verbose Chuyển sang chế độ chi tiết. -V version Hiển thị số phiên bản -1 fast Nén nhanh hơn. -9 best Nén chặt hơn tệp tin Xác định tệp tin nào cần thao tác ; nếu bỏ trống máy sẽ sử dụng stdin. Nếu tệp tin đựơc nén bằng lệnh compress. Giải nén : uncompress tệp_tin.tar.z + Sau khi bung tệp tin nén xong , ta bung tệp tin tar vào cây thư mục . Để bung tệp tar ta dùng lệnh : tar zxvf tên_tệp_tin.tar + Hiệu chỉnh tập tin Makefile để chỉnh sửa các thư mục đích + Thực hiện lệnh make và install. 3.6 BACKUP DỮ LIỆU Có nhiều nguyên nhân gây hỏng hóc hay mất mát dữ liệu như tập tin rủi ro bị xóa mất , hỏng hóc các thiết bị phần cứng , thông tin ở các tệp tin không còn truy xuất được Chính vì thế việc backup ( sao lưu ) dữ liệu thường xuyên là hết sức cần thiết. Trong Linux có nhiều tiện ích giúp cho người dùng dễ dàng thực hiện thao tác này . + tar : Là tiện ích vốn có từ trong Unix , đựơc thiết kế để tạo ra bản sao niêm trữ trên băng từ . Ta có thể dùng tar để chép sang bất kỳ thiết bị nào , tar có nhiều thuận lợi như dễ sử dụng , ổn định , có thể đọc tệp tin niêm trữ trên mọi hệ thống Linux hoặc Unix. Bên cạnh đó thì tar cũng còn một số nhược điểm : không thể backup các tệp tin đặc biệt như tệp tin thiết bị , và bản thân tar chỉ có thể backup toàn bộ mà thôi. Một số tùy chọn dùng với lệnh tar. c Tạo ra tệp tin niêm trữ. x Khai thác hoặc phục hồi tệp tin từ tệp tin niêm trữ trên thiết bị mặc định ,hoặc trên thiết bị được xác định bằng tùy chọn f f tên Tạo ra hoặc đọc tệp tin niêm trữ tên , với tên là tên của tệp tin hoặc tên của thiết bị được xác định ở /dev. Z Nén hoặc bung tập tin tar. z Nén hoặc tung tệp tin tar bằng gzip M Tạo ra bản backup tar nhiều tập. t Tạo ra chỉ mục tất cả các tệp tin lưu trong bản niêm trữ. v Chọn chế độ chi tiết. + cpio : Là lệnh tổng quát để sao chép các tệp tin niêm trữ , sẵn có trên mọi hệ thống UNIX . Lệnh cpio sẽ lấy nhập liệu từ đầu vào tiêu chuẩn ( stdin ) và gửi xuất liệu đến đầu ra tiêu chuẩn ( Stdout ). So với tar thì cpio dễ dùng và mạnh hơn. cpio có khả năng backup bất kỳ bộ tập tin nào kể cả tập tin đặc biệt , lưu trữ hiệu quả hơn tar. Khi phục hồi , cpio bỏ qua các bad sector và bad block . Bản backup của cpio có thể phục hồi được trên hầu hết các hệ thống Linux hoặc Unix. Một số tùy chọn dùng với lệnh cpio -o Chép và tạo ra một tệp tin niêm trữ ở đầu ra tiêu chuẩn -i Phục hồi tệp tin -t Tạo bảng mục lục của nhập liệu. -B Hạn chế xuất liệu và nhập liệu ở mức 5120 byte cho từng mẩu tin. -I Khai thác và chép các tệp tin từ stdin. CHƯƠNG 4 ỨNG DỤNG LINUX 4.1 LILO VÀ GRUB LILO và GRUB là các trình quản lý khởi động trong Linux . Như chúng ta đã biết , khi một máy tính bắt đầu khởi động , bộ vi xử lý sẽ tìm đến cuối vùng nhớ hệ thống của BIOS và thực hiện các chỉ thị ở đó. BIOS sẽ kiểm tra hệ thống , tìm và kiểm tra các thiết bị , tìm kiếm đĩa chứa trình khởi động . Thông thường , BIOS sẽ kiểm tra ổ đĩa mềm , hoặc CDROM xem có thể khởi động từ chúng được không , rồi sau đó đến đĩa cứng . Thứ tự của việc kiểm tra các ổ đĩa phụ thuộc vào các cài đặt trong BIOS. Khi kiểm tra ổ cứng , BIOS tìm đến MBR (Master Boot Record – sector đầu tiên của ổ đĩa đầu tiên ) và nạp vào vùng nhớ hoạt động chuyển quyền điều khiển cho nó. MBR chứa các chỉ dẫn cho biết cách nạp các trình quản lý khởi động (LILO/GRUB cho Linux ). MBR sau khi nạp trình quản lý khởi động, sẽ chuyển quyền điều khiển cho trình quản lý khởi động .Trình quản lý khởi động sẽ cho hiện trên màn hình một danh sách các tùy chọn để người dùng xử lý xem nên khởi động hệ điều hành nào. Các chỉ dẫn cho việc nạp hệ điều hành thích hợp được ghi rõ trong các tệp tin cấu hình tương ứng với các trình quản lý khởi động: + LILO lưu cấu hình trong tệp tin /etc/lilo.conf + GRUB lưu cấu hình trong tệp tin /boot/grub/grub.conf · LILO là một boot manager nằm trọn gói chung với các bản phát hành Redhat và Caldera , và là boot manager mặc định cho các bản Linux Redhat từ 7.1 trở về trước , từ phiên bản 7.2 trở đi trình boot manager mặc định là GRUB. Tệp tin cấu hình LILO : prompt timeout=50 default=DOS boot = /dev / hda map = / boot / map install = / boot / boot . b linear image = / boot /vmlinuz-2.4.22-1.2115.nptl label = linux initrd = boot /initrd-2.4.22-1.2115.npt1.img read-only append= ”rhgb root=LABEL=/” other = / dev /hda1 optional label=DOS · GRUB ( Grand Unified Bootloader – trình khởi động thống nhất tổng quát ). Đây là trình quản lý khởi động tương tự như LILO , được nạp vào MBR để khởi động hệ điều hành mà người dùng chọn . Trong Fedora Core 1 , đây là trình khởi động mặc định. Tệp tin cấu hình GRUB # grub.conf generated by anaconda # Note that you do not have to reru grub after making changes to this file # NOTICE : You have a /boot partition . This means that # all kernel and initrd paths are relative to /boot ,eg. # root ( hd0 ,4) # kernel /vmlinuz-version ro root=/dev/hda8 # initrd /initrd-version.img # boot=dev/had default = 1 timeout = 10 splashimage = ( hd0, 4 ) / grub /splash.xpm.gz title Fedora Core ( 2.4.22-1.2115.nptl) root ( hd0 , 4 ) kernel /vmlinuz-2.4.22-1.2115.nptl ro root = LABEL= / rhgb initrd / initrd-2.4.22-1.2115.nptl.img boot title DOS rootnoverify ( hd0 , 0 ) chainloader +1 · Tiến trình khởi động : Redhat và phần lớn các bản phát hành sau này của Linux đều sủ dụng tiến trình khởi động mang tên SysV init thay vì kiểu BSD init cũ. init là chương trình đầu tiên mà kernel thực thi ngay từ lúc khởi động máy , do đó init được mang chỉ số tiến trình ( PID ) số 1 , trở thành tiến trình “ mẹ “ của tất cả các tiến trình khác chạy với Linux. PID của một tiến trình là con số mà hệ điều hành dùng để nhận diện tiến trình ấy . Nhiều lệnh của Linux dùng PID ấy làm tham số . Để khởi động , Linux theo những bước sau : + Kernel chạy init , chương trình này nằm trong thư mục /sbin + init chạy shell script /etc/rc.d/rc.sys‏‎init. + rc.s‏‎init lập các biến hệ thống khác nhau và thực hiện các động tác vận hành ban đầu. + init chạy shell script /etc/rc.d/rc.serial. + rc.serial sử dụng một số lệnh set serial để thiết lập cấu hình của các cổng serial cho hệ thống + init chạy tất cả các script được xác định ở cấp độ chạy mặc định. + init chạy script /etc/rc.d/rc.local. Chương trình này khởi động nhiều tiến trình khác , đồng thời chuyển thông tin cho thiết bị và cho tệp tin đăng nhập hệ thống /var/log/messages biết về trạng thái của từng tiến trình đã khởi động. 4.2 QUẢN LÝ ACCOUNT CỦA CÁC USER Mỗi một user có một tên đăng nhập đặc trưng .Tên này giúp nhận dạng từng user và tránh được tình trạng người này xóa dữ liệu của người kia .Mỗi user phải có một mật khẩu riêng . Trong Linux chỉ có root mới có quyền thêm , thay đổi các User . Để thêm vào một User ta dùng lệnh adduser. Khi thêm một user , tệp tin mật khẩu nằm trong thư mục/etc/passwd sẽ có thêm một mục ghi theo dạng thức sau: logname:encrpt_paswd:userID:grroupID:userInfo:login_directory:login_shell Danh sách các trường logname Tên dùng khi đăng nhập encrpt_passwd Mật khẩu nhận dạng từng user ; đây là biện pháp đầu tiên để ngăn chặn việc vi phạm an ninh . Trong trường hợp này , mật khẩu được mã hóa. userID Con số đặc trưng mà hệ điều hành dùng để nhận dạng user. ( chỉ số user ) groupID Con số hoặc tên đặc trưng dùng để nhận dạng nhóm sơ cấp cho user . Nếu thuộc về nhiều nhóm , một user có thể chuyển qua lại các nhóm khác khi được quản trị viên cho phép.( chỉ số nhóm ). userInfo Thông tin về user , chẳng hạn như tên họ chức vụ. login_directory Home directory của user , nơi user được chỉ định hoạt động sau khi đăng nhập. login_shell Shell được user dùng sau khi đăng nhập Trong chế độ đồ họa GNOME , ta có thể dùng trình Red Hat User Manager để quản lý Account của các User. Minh học 4.1 Trình quản lý Account các User. 4.3 CÀI ĐẶT FONTS TIẾNG VIỆT Cũng giống như Windows , để đọc được các văn bản bằng tiếng Việt thì Linux cần phải có các font chữ tiếng Việt dùng trong văn bản. Để làm được điều này cần phải cài font vào hệ thống . Các fonts sau khi cài đặt sẽ nằm trong thư mục /usr/share/fonts/ Các bộ fonts được đặt trong thư mục \data\fontvn Cài đặt : [duong@localhost duong]$ cd [duong@localhost duong]$ cd /data/ [duong@localhost data]$ su password: [root@localhost data]# cp –r fontvn /usr/share/fonts/ [root@localhost data]# fc-cache /usr/share/fonts/fontvn [root@localhost data]# exit Minh họa 4.2 Các fonts chữ sau khi cập nhật 4.4 NHẬP LIỆU TIẾNG VIỆT TRONG LINUX. Hiện nay phổ biến trong Linux hai tiện ích nhập liệu Tiếng Việt đó là X-Unikey của tác giả Phan Kim Long và xvnkb của Đào Hải Lâm .Cả hai chương trình đều xuất sắc và giải quyết gần như trọn vẹn các vấn đề bảng mã .Hai chương trình này đều hỗ trợ các phương thức nhập liệu quen thuộc như VNI và Telex . Hai tiện ích này không tích hợp sẵn trong Linux , muốn sử dụng được người dùng cần phải cài đặt. Cài đặt bộ gõ X-Unikey từ mã nguồn . Bộ gõ X-Unikey được nén đặt trong thư mục /data [duong@localhost duong]$ cd [duong@localhost duong]$ cd /data [duong@localhost data]$ tar xvjf x-unikey-0.9.1d.tar.bz2 [duong@localhost data]$ cd x-unikey-0.9.1d [duong@localhost x-unikey-0.9.1d]$ ./configure [duong@localhost x-unikey-0.9.1d]$ make [duong@localhost x-unikey-0.9.1d]$ su password : [root@localhost x-unikey-0.9.1d]# make install [root@localhost x-unikey-0.9.1d]# exit exit [duong@localhost x-unikey-0.9.1d]$ cd [duong@localhost duong]$ cat >> .bashrc export LANG=en_US.UTF-8 export XMODIFIERS=”@im=unikey” export GTK_IM_MODULE=”xim” [duong@localhost duong]$ 4.5 LẬP TRÌNH C/C++ BẰNG GCC Gcc ( GNU Compiler Collection ) là một tập hợp các thư viện ( glibc , libgcc , ) , preprocessor ( cpp0 ) , assembler ( as ) , compiler ( cc1 ) , linker ( collect2 or /usr/bin/ld ), dùng để phát triển các chương trình C/C++. Biên dịch chương trình viết bằng C. Dùng Emacs , Vim hoặc gEdit soạn một chương trình hello.c , được lưu vào thư mục /data # include main ( ) { printf ( “ hello world !! \n “); } Biên dịch : Dùng lệnh cc để biên dịch các file C. [duong@localhost duong]$ cd /data [duong@localhost data]$ cc hello.c [duong@localhost data]$ ./a.out hello world !! [duong@localhost data]$ Có thể thay lệnh cc bằng lệnh gcc vì thực chất thì cc là một link của gcc . Theo mặc định , output file sẽ là một file executable tên là a.out . Muốn tạo một file khác cần thêm tùy chọn –o file_name . Biên dịch chương trình viết bằng C++. Dùng Emacs , Vim hoặc gEdit soạn một chương trình hello.cpp , được lưu vào thư mục /data # include using namespace std ; main ( ) { cout<<”\n Hello C++ !! “; } Biên dịch : Dùng lệnh g++ để biên dịch các file ++ [duong@localhost duong]$ cd /data [duong@localhost data]$ g++ -o hi hello.cpp [duong@localhost data]$ ./hi Hello C++ !! [duong@localhost data]$ CHƯƠNG 5 BẢO MẬT TRONG LINUX 5.1 TĂNG CƯỜNG AN NINH CHO HỆ THỐNG LINUX. Cùng với sự phát triển không ngừng của truyền thông kỹ thuật số, Internet và sự phát triển nhảy vọt của nền công nghiệp phần mềm, bảo mật máy tính là một vấn đề ngày càng trở nên quan trọng. Cần phải hiểu rằng không có hệ thống máy tính nào là an toàn tuyệt đối. Tất cả những gì chúng ta có thể làm là giúp cho hệ thống máy tính của mình trở nên an toàn hơn. Kể từ khi Linux được phát triển một cách rộng rãi và nhanh chóng, đặc biệt là trong các giao dịch kinh doanh quan trọng, an ninh là một vấn đề quyết định sự sống còn của Linux. Với hàng trăm công cụ bảo vệ sẵn có, người dùng Linux được trang bị tốt hơn để ngăn chặn và duy trì một hệ thống an toàn. Linux không những hoạt động tốt mà còn có những tính năng và sản phẩm liên quan cho phép xây dựng một môi trường tương đối an toàn. 5.1.1 NHỮNG NGUY CƠ AN NINH TRÊN LINUX. Theo quan điểm của một số chuyên gia máy tính, Linux có tính an toàn cao hơn các hệ điều hành của Microsoft, vì các sản phẩm của Microsoft không được xem xét kỹ lưỡng và chặt chẽ bằng các sản phẩm mã nguồn mở như Linux. Hơn nữa, Linux dường như là "miễn nhiễm" với virus máy tính (hiện tại đã có xuất hiện một vài loại virus hoạt động trên môi trường Linux nhưng không ảnh hưởng gì mấy đến người dùng Linux). Nhưng một hệ thống Linux được cấu hình không tốt sẽ tệ hơn nhiều so với một hệ thống của Microsoft được cấu hình tốt !!! Khi có được một chính sách an ninh tốt và hệ thống được cấu hình theo đúng chính sách đó thì sẽ giúp người dùng tạo được một hệ thống an toàn. Nhưng sự an toàn không phải là thứ có thể đạt được như một mục tiêu cuối cùng. Đúng hơn đó là tập hợp của những cách cài đặt, vận hành và bảo trì một hệ điều hành, mạng máy tính, ... Nó phụ thuộc vào các hoạt động hàng ngày của hệ thống, người dùng và người quản trị. 5.1.2 TĂNG CƯỜNG AN NINH CHO KERNEL. Mặc dù thừa hưởng những đặc tính của hệ thống UNIX và khá an ninh hơn một số hệ điều hành khác, hệ thống GNU/Linux hiện nay vẫn tồn tại những nhược điểm sau: Quyền của user ‘root’ có thể bị lạm dụng. User ‘root’ có thể dễ dàng thay đổi bất kỳ điều gì trên hệ thống. Nhiều file hệ thống có thể dễ dàng bị sửa đổi. Nhiều file hệ thống quan trọng như /bin/login có thể bị sửa đổi bởi hacker để cho phép đăng nhập không cần mật khẩu. Nhưng những file loại này lại hiếm khi nào thay đổi trừ khi nâng cấp hệ thống. Các module có thể được dùng để chặn kernel. “Loadable Kernel Module” là một thiết kế tốt để tăng cường tính uyển chuyển, linh hoạt cho kernel. Nhưng sau khi một module được nạp vào kernel, nó sẽ trở thành một phần của kernel và có thể hoạt động như kernel nguyên thủy. Vì vậy, các chương trình với mục đích xấu có thể được viết dạng module và nạp vào kernel, rồi sau đó hoạt động như một virus. Các process không được bảo vệ. Các process như web server có thể trở thành mục tiêu bị tấn công của hacker sau khi thâm nhập hệ thống. Để cải thiện tính an ninh cho các server Linux, chúng ta cần có một kernel an toàn hơn. Điều này có thể thực hiện được bằng cách sửa đổi kernel nguyên thuỷ bằng các ‘patch’ ( miếng vá )tăng cường tính an ninh cho hệ thống. Các patch này có các tính năng chính yếu sau: Bảo vệ – Bảo vệ các file hệ thống quan trọng khỏi sự thay đổi ngay cả với user root. Bảo vệ các process quan trọng khỏi bị ngừng bởi lệnh ‘kill’. Chặn các tác vụ truy cập IO mức thấp (RAW IO) của các chương trình không được phép. Phát hiện – Phát hiện và cảnh báo với người quản trị khi server bị scan. Cũng như khi có các tác vụ trên hệ thống vi phạm các luật (rules) định trước. Đối phó – Khi phát hiện sự vi phạm trên hệ thống, các ghi nhận chi tiết sẽ được thực hiện cũng như có thể ngừng lập tức phiên làm việc gây ra . 5.1.3 LINUX FIREWALL An toàn hệ thống luôn luôn là một vấn đề sống còn của mạng máy tính và firewall ( bức tường lửa ) là một thành phần cốt yếu cho việc đảm bảo an ninh. Một firewall là một tập hợp các qui tắc, ứng dụng và chính sách đảm bảo cho người dùng truy cập các dịch vụ mạng trong khi mạng bên trong vẫn an toàn đối với các kẻ tấn công từ Internet hay từ các mạng khác. Có hai loại kiến trúc firewall cơ bản là : Proxy/Application firewall và filtering gateway firewall. Hầu hết các hệ thống firewall hiện đại là loại lai (hybrid) của cả hai loại trên. Nhiều công ty và nhà cung cấp dịch vụ Internet sử dụng máy chủ Linux như một Internet gateway. Những máy chủ này thường phục vụ như máy chủ mail, web, ftp, hay dialup. Hơn nữa, chúng cũng thường hoạt động như các firewall, thi hành các chính sách kiểm soát giữa Internet và mạng của công ty. Khả năng uyển chuyển khiến cho Linux thu hút như là một thay thế cho những hệ điều hành thương mại. Tính năng firewall chuẩn được cung cấp sẵn trong kernel của Linux được xây dựng từ hai thành phần : ipchains và IP Masquerading. Linux IP Firewalling Chains là một cơ chế lọc gói tin IP. Những tính năng của IP Chains cho phép cấu hình máy chủ Linux như một filtering gateway/firewall dễ dàng. Một thành phần quan trọng khác của nó trong kernel là IP Masquerading, một tính năng chuyển đổi địa chỉ mạng (network address translation- NAT) mà có thể che giấu các địa chỉ IP thực của mạng bên trong. Để sử dụng ipchains, người dùng cần thiết lập một tập các luật mà qui định các kết nối được cho phép hay bị cấm. Ví dụ: # Cho phép các kết nối web tới Web Server : /sbin/ipchains -A your_chains_rules -s 0.0.0.0/0 www -d 192.16.0.100 1024: -j ACCEPT # Cho phép các kết nối từ bên trong tới các Web Server bên ngoài /sbin/ipchains -A your_chains_rules -s 192.168.0.0/24 1024: -d 0.0.0.0/0 www -j ACCEPT # Từ chối truy cập tất cả các dịch vu khác /sbin/ipchains -P your_chains_rules input DENY Ngoài ra, chúng ta cũng có thể sử dụng các sản phẩm firewall thương mại như Check Point FireWall-1, Phoenix Adaptive Firewall, Gateway Guardian, XSentry Firewall, Raptor, ... hay rất nhiều các phiên bản miễn phí, mã nguồn mở cho Linux như T.Rex Firewall, Dante, SINUS, TIS Firewall Toolkit, ... 5.2 AN TOÀN MẬT KHẨU TRÊN HỆ THỐNG MẠNG LINUX. 5.2.1 BẢO VỆ MẬT KHẨU NGAY TẠI HỆ THỐNG. Mật khẩu trên hệ thống Linux được lưu trong file /etc/passwd, một file chứa các tên người sử dụng, UIDs, GIDs, và các mật khẩu được mã hoá cho người sử dụng trên hệ thống. Ngoài ra, file này còn lưu các thông tin khác, như tên đầy đủ của người sử dụng, đường dẫn thư mục, hay hệ thống shell. Bất kỳ ai truy cập hệ thống cũng có thể hiển thị nội dung của file /etc/passwd.  Điều này tạo ra khả năng phá hoại với các user và những kẻ tấn công có thể tạo ra các lỗ hổng bảo mật để nhận được một bản sao của file mật khẩu này. Trong các hệ thống Linux thường sử dụng thuật toán mã hoá (như thuật toán DES) DES sử dụng thuật toán mã hoá 56 bit. Với thuật toán này, DES đã được sử dụng như thuật toán mã hoá phổ biến trước đây. Tuy nhiên, theo thời gian, khi phần cứng phát triển và giá thành thiết bị rẻ đi, thuật toán này đã trở nên dễ dàng giải mã và tạo lại mã. Vì vậy, với các hệ thống tốc độ nhanh thì việc phá các mật khẩu không phải quá khó. Việc phá mã có thể được cấu hình để tương thích với bất kỳ môi trường nào; các file cấu hình có thể được sửa đổi hỗ trợ cho các định dạng file mật khẩu khác nhau, loại thuật toán mã hoá khác nhau, ... Việc phá mã sử dụng danh sách từ điển được coi là nền tảng cho việc phá mã; các file từ điển này cũng có thể được cấu hình lại một cách dễ dàng. 5.2.2 TĂNG TÍNH AN TOÀN CỦA MẬT KHẨU. Một vài phương thức đã được sử dụng để cải thiện an toàn mật khẩu cho hệ thống Linux . Phương thức đầu tiên được giới thiệu là việc sử dụng loại mật khẩu bóng (shadow password). Các file mật khẩu bóng đã trở nên thông dụng và được sử dụng mặc định cho rất nhiều hệ thống Linux . Đối với Red Hat Linux, việc sử dụng mật khẩu bóng được lựa chọn trong các bước cài đặt hệ thống. Các mật khẩu tại hệ thống hiện tại có thể được bảo mật tốt hơn, nhưng các mối đe doạ vẫn tồn tại. Điều này đặc biệt đúng trong môi trường các hệ thống Linux, có rất nhiều mối đe doạ dựa trên các chương trình TCP/IP và các giao thức mà không xây dựng các thuật toán mã hoá hay cơ chế bảo vệ khác. Ví dụ: telnet và các lệnh r* (rsh, rlogin,..) gửi các mật khẩu dưới dạng text.  Việc bảo vệ các mật khẩu được mã hoá chứa trên hệ thống sẽ không còn ý nghĩa nhiều khi ta truyền các mật khẩu này dưới dạng text qua mạng. Các giao thức không bảo mật nên được thay bằng các giao thức có cơ chế bảo mật . Sử dụng secure shell - ssh, mà các thông tin được mã hoá truyền tới đầu cuối, được thiết kế thay đổi telnet và rsh; secure copy (scp) có thể được sử dụng để thay thế ftp và rcp. OpenSSH là một sản phẩm miễn phí được phát triển như một phần trong toàn bộ dự án OpenBSD. Nó gồm có ssh, scp và các công cụ ssh. Các giá trị BSD (OpenBSD, FreeBSD, BSDi) và một số các phiên bản Linux (Debian, SuSE, RedHat, Mandrake). Hiện tại, OpenSSH có thể được sử dụng như phần thêm vào cho mỗi hệ thống Linux. Do sự đa dạng đối với mật khẩu của các hệ thống Linux ngay cả trong hệ thống và khi truyền thông, một số phương pháp khác đã được thực hiện để làm tăng tính an toàn cho mật khẩu. Một trong những phương pháp thông dụng nhất là mô tả các mật khẩu sử dụng một lần và sau đó được hủy bỏ. Các hệ thống này có 2 thuận lợi sau: Chúng hướng tới thực thi các truyền thông mật khẩu mang tính bảo mật, hầu hết sử dụng việc mã hoá trong khuôn dạng của một giao thức dạng challenge/response, vì vậy các mật khẩu không bao giờ được truyền trên mạng.  Vì mật khẩu được sử dụng chỉ một lần, thậm chí nếu chúng bị lấy đi bởi kẻ tấn công, nó cũng không thể sử dụng lại. Các hệ thống mật khẩu sử dụng 1 lần (OTP - Once-Time Password) có thể được thực hiện bởi phần cứng - như là các thẻ smart card - hay trong phần mềm. Trong khi các giải pháp thương mại tồn tại, chúng ta hãy xét đến một số các chương trình dạng miễn phí. S/KEY, một trong những hệ thống dựa theo mô hình OPT, được viết bởi Bellcore (hiện tại viết bởi Telcordia) và được phát triển như một phần mềm mã nguồn mở. Bellcore gần đây đã bắt đầu phát triển phiên bản thương mại, nhưng phiên bản miễn phí vẫn được cung cấp. Khi S/KEY trở thành sản phẩm thương mại, phần mã nguồn mở của chương trình này vẫn được quan tâm và phát triển thành sản phẩm OPIE. Cả S/KEY và OPIE sử dụng một hệ thống challenge/response. Trong mỗi trường hợp, mật khẩu của người sử dụng được chứa, trong dạng mẫu được mã hoá, trên hệ thống máy chủ. Mỗi hệ thống sử dụng bộ mã tạo mật khẩu chung dựa theo thông tin người sử dụng cung cấp lúc ban đầu và liên kết với một số tuần tự. Mật khẩu đầu tiên của người sử dụng được tạo bằng cách đặt thông tin của người sử dụng đó qua một thuật toán bảng băm (như thuật toán MD4 cho S/KEY, MD5 cho OPIE) với số N mật khẩu được tạo. N là số lần trong dãy bảng băm để người sử dụng có thể truy cập. Mật khẩu kế tiếp được tạo bằng cách giảm N đi 1 và đặt thông tin đó trong bảng băm số N-1, và tiếp tục như vậy.  Với mục đich chứng thực, khi một người sử dụng đăng nhập vào hệ thống, anh ta sẽ gửi tên truy nhập của anh ta tới máy chủ. Máy chủ sẽ trả lời theo phương thức challenge, bao gồm tạo số tuần tự của người sử dụng. Sau khi người sử dụng gõ mật khẩu và gửi tới máy chủ, nếu mật khẩu trùng với mã mà máy chủ đã tạo trước đó một khoảng thời gian, người sử dụng đó được chấp nhận truy cập hệ thống. S/KEY và OPIE đã thực sự được thiết kế để bảo vệ các kẻ tấn công như replay attack, vì thông tin mật khẩu chỉ có giá trị cho mỗi phiên làm việc, nó không thể bị lây bởi một công cụ mạo danh hay sử dụng lại tại thời điểm khác. Tuy nhiên, một thông tin mã hoá yếu cũng có thể làm hệ thống như S/KEY hay OPIE có thể có lỗ hổng như một mật khẩu yếu. 5.3 BẢO MẬT HỆ THỐNG MẠNG LINUX. Hiện nay, trên môi trường máy chủ, Linux ngày càng chiếm một vị trí quan trọng. Nguyên nhân khiến Linux dần trở thành một đối thủ tiềm nǎng của hệ điều hành Microsoft Windows là do tính ổn định, độ linh hoạt và khả nǎng chịu tải lớn: đây là những đặc điểm quan trọng hàng đầu của một hệ thống máy phục vụ. Cách thức bảo mật hệ thống Linux : · Loại bỏ tất cả các account và nhóm đặc biệt Ngay sau khi cài đặt Linux, người quản trị có thể xoá bỏ tất cả các account và nhóm (group) đã được tạo sẵn trong hệ thống nhưng không có nhu cầu sử dụng, ví dụ như lp, sync, shutdown, halt, news, uucp, operator, games, gopher, v.v... Thực hiện việc xoá bỏ account với lệnh : # userdel # userdel lp: nếu không có nhu cầu về in ấn trên hệ thống. # groupdel : xóa bỏ nhóm. · Che giấu file chứa mật khẩu Khởi thủy của các hệ điều hành Unix và Linux, mật khẩu của toàn bộ các account đã từng được lưu ngay trong file /etc/password, file có quyền đọc bởi tất cả các account trong hệ thống! Đây là một kẽ hở lớn cho các kẻ phá hoại: Mặc dù các mật khẩu đều được mã hoá, nhưng việc giải mã ngược là có thể thực hiện được (và có thể thực hiện khá dễ dàng, đặc biệt vì cơ chế mã hoã mật khẩu không phải là khó phá và ngày nay khả nǎng tính toán và xử lý của máy tính rất mạnh). Vì lí do trên, gần đây các nhà phát triển Unix và Linux đã phải đặt riêng mật khẩu mã hoá vào một file mà chỉ có account root mới đọc được: file /etc/shadow. (Khi sử dụng phương pháp này, để đảm bảo tính tương thích, nơi vốn đặt mật khẩu trong file /etc/password người ta đánh dấu "x") · Tự động thoát khỏi shell Người quản trị có thể cài đặt tính nǎng tự động thoát ra khỏi shell khi không có sự truy xuất nào trong một khoảng thời gian định trước bằng cách đặt một tham số quy định khoảng thời gian hệ thống vẫn duy trì dấu nhắc shell. Muốn cài đặt tham số này, ta sử dụng biến môi trường TMOUT và gán cho nó một giá trị số thể hiện khoảng thời gian tính bằng giây hệ thống vẫn duy trì dấu nhắc. Để thực hiện điều này cho tất cả các account trong hệ thống, cách đơn giản nhất là đặt nó vào file /etc/profile dòng lệnh sau: (giả sử ta đặt khoảng thời gian là 600 giây) TMOUT=600 · Loại bỏ các dịch vụ không sử dụng Một điều khá nguy hiểm là sau khi cài đặt, hệ thống tự động bật chạy khá nhiều dịch vụ (và đa số là các dịch vụ không mong muốn), dẫn tới tốn tài nguyên và gây nên nhiều nguy cơ về bảo mật. Người quản trị có thể loại bỏ ngay lập tức các dịch vụ không dùng tới ngay sau khi cài máy. Hoặc đơn giản bằng cách xoá bỏ các gói phần mềm/dịch vụ không sử dụng (qua công cụ quản trị gói phần mềm rpm của RedHat) hoặc sử dụng công cụ ntsysv để duyệt xem tất cả các dịch vụ đang cài đặt rồi vô hiệu hoá những dịch vụ không cần thiết (bằng cách bỏ đánh dấu các dịch vụ không sử dụng với phím Space). Sau khi thoát ra khỏi ntsysv thì khởi động lại máy: các dịch vụ không mong muốn sẽ không chạy nữa. · Không tiết lộ thông tin về hệ thống qua telnet Dịch vụ cho phép truy xuất hệ thống từ xa telnet có khả nǎng tiết lộ thông tin về hệ thống, dễ tạo điều kiện cho những kẻ phá hoại tấn công dựa vào những điểm yếu đã biết. Điều này rất dễ nhận thấy: Mọi người dùng kết nối từ xa vào dịch vụ telnet đều nhận được thông tin về tên máy, phiên bản Linux và phiên bản của nhân (kernel) của máy chủ. · Tránh sử dụng các dịch vụ không mã hoá thông tin trên đường truyền · Cấm sử dụng account root từ consoles Ngay sau khi cài đặt RedHat, account root sẽ không có quyền kết nối telnet vào dịch vụ telnet trên hệ thống (chỉ những account thường mới có thể kết nối). Nguyên nhân là do file /etc/securetty quy định những console được phép truy nhập bởi root chỉ liệt kê những console "vật lý" (tức là chỉ truy xuất được khi ngồi trực tiếp tại máy chủ) mà bỏ qua những kết nối qua mạng. Dịch vụ ftp cũng sẽ bị hạn chế này: account root không được phép truy xuất ftp qua mạng. Để tǎng tính bảo mật hơn nữa, soạn thảo file /etc/securety và bỏ đi những console mà ta không muốn root truy nhập từ đó. · Cấm "su" lên root Trong Linux, lệnh su (Substitute User) cho phép người dùng chuyển sang một account khác. Nếu không muốn một người bất kỳ "su" thành root,ta có thể thêm hai dòng sau vào nội dung file /etc/pam.d/su auth sufficient /lib/security/pam_rootok.so debug auth required /lib/security/Pam_wheel.so group=wheel Như vậy, chỉ có những người có đǎng ký là thành viên của nhóm wheel mới có quyền "su" thành root. Để cho phép một người dùng có quyền này, người quản trị chỉ việc gán account của người này vào nhóm wheel (qua file /etc/group) · Hạn chế các thông tin ghi bởi bash shell Thông thường, tất cả các lệnh được thực hiện tại dấu nhắc shell của các account đều được ghi vào file ".bash_history" nằm trong thư mục cá nhân của các account. Điều này cũng gây nên những nguy hiểm tiềm ẩn, đặc biệt với những ứng dụng đòi hỏi phải gõ các thông mật như mật khẩu trên dòng lệnh. Người quản trị nên hạn chế nguy cơ này dựa trên 2 biến môi trường HISTFILESIZE và HISTSIZE: Biến môi trường HISTFILESIZE xác định số lệnh (gõ tại dấu nhắc shell) sẽ được lưu lại cho lần truy nhập sau, còn biến môi trường HISTSIZE xác định số lệnh sẽ được ghi nhớ trong phiên làm việc hiện thời. Ta có thể giảm giá trị của HISTSIZE và đặt bằng 0 giá trị HISTFILESIZE để giảm tối đa những nguy hiểm đã nêu trên. Để thực hiện việc này, chỉ cần đơn giản thay đổi giá trị hai biến này trong file /etc/profile như sau: HISTFILESIZE=0 HISTSIZE=20 Như vậy, tại phiên làm việc hiện thời, shell chỉ ghi nhớ 20 lệnh gần nhất, đồng thời không ghi lại các lệnh người dùng đã gõ khi người dùng thoát ra khỏi shell. · Cấm nhòm ngó tới những file script khởi động Linux. Khi khởi động Linux, các file script được đặt tại thư mục /etc/rc.d/init.d sẽ được thực hiện. Để tránh những sự tò mò không cần thiết, người quản trị nên hạn chế quyền truy xuất tới những file này chỉ cho account root bằng lệnh sau: # chmod -R 700 /etc/rc.d/init.d/* · Xoá bỏ những chương trình SUID/SGID không sử dụng. Thông thường, những ứng dụng được thực hiện dưới quyền của account gọi thực hiện ứng dụng. Tuy nhiên, Unix và Linux sử dụng một kỹ thuật đặc biệt cho phép một số chương trình thực hiện dưới quyền của người quản lý chương trình (chứ không phải người thực hiện). Đây chính là lý do tại sao tất cả mọi user trong hệ thống đều có thể đổi mật khẩu của mình trong khi không hề có quyền truy xuất lên file /etc/shadow: Nguyên nhân vì lệnh passwd có gán thuộc tính SUID và được quản lý bởi root, mà chỉ có root mới có quyền truy xuất /etc/shadow. Tuy nhiên, khả nǎng này có thể gây nên những nguy cơ tiềm tàng: Nếu một chương trình có tính nǎng thực thi được quản lý bởi root, do thiết kế tồi hoặc do được cài đặt cố tình bởi những kẻ phá hoại mà lại có thuộc tính SUID thì mọi điều tồi tệ đều có thể xảy ra. Thuộc tính SGID cũng tương tự như thuộc tính SUID: các chương trình được thực hiện với quyền nhóm là nhóm quản lý chương trình chứ không phải nhóm của người chạy chương trình. Như vậy, người quản trị sẽ phải thường xuyên kiểm tra xem trong hệ thống có những ứng dụng nào có thuộc tính SUID hoặc SGID mà không được phép không? Để tìm tất cả các file có thuộc tính SUID/SGID, sử dụng lệnh find như sau: # find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls ưlg {} \; Nếu phát hiện được một file có thuộc tính SUID/SGID một cách không cần thiết, có thể loại bỏ các thuộc tính này bằng lệnh: # chmod a-s · Tǎng tính bảo mật cho nhân (kernel) của Linux Thực tế cho thấy rằng, Linux không hẳn được thiết kế với các tính nǎng bảo mật thật chặt chẽ .Do đó, việc sử dụng một hệ điều hành với nhân được củng cố là rất quan trọng: Một khi nhân - phần cốt lõi nhất của hệ điều hành - được thiết kế tốt thì nguy cơ bị phá hoại sẽ giảm đi rất nhiều. KẾT LUẬN Có thể nói ,đối với người dùng thông thường việc chuyển từ Windows sang Linux trong ngày một ngày hai là chưa thể. Tuy nhiên đối với những người làm tin học, đặc biệt là đối với sinh viên chúng ta, việc tìm hiểu và nghiên cứu Linux và phần mềm mã nguồn mở là một điều kiện rất tốt để nâng cao hiểu biết của mình. Linux dẫu sao vẫn là một hệ điều hành rất có giá trị: chi phí thấp, linh hoạt, ổn đinh, và bảo mật cao. Bản thân tôi tin rằng, trong tương lai gần, Linux sẽ dần dần trở thành một trong những hệ điều hành hàng đầu trên thế giới. Một lần nữa , tôi xin chân thành cảm ơn cô giáo Nguyễn Thị Thúy và các thầy cô giáo trong khoa Tin học kinh tế đã quan tâm , giúp đỡ tôi hoàn thành đề án này . TÀI LIỆU THAM KHẢO Bùi Thế Ngũ , Hệ điều hành và máy vi tính , NXB Thống Kê 2000. Nguyễn Tiến , Đặng Xuân Hưởng , Cẩm nang Linux , NXB Giáo Dục 2000. Nguyễn Minh Hoàng ,Hoàng Đức Hải , Linux Lý thuyết & thực hành, NXB Lao động – Xã hội 2002. Stephen Smoogen , Bill Ball , Teach Yourseft Linux in 24 hours , SAMS Publishing 1998. Tim Parker , Linux System Administratior’s Survival Guide. Redhat Linux Unleashed , SAMS Publishing and Red Hat Press 2000 Một số bài viết trong tạp chí PC World VN . 8. Một số bài viết trên Internet.

Các file đính kèm theo tài liệu này:

  • doc3496.doc
Tài liệu liên quan