ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
------------------------
NGUYỄN KỶ TUẤN
NGHIÊN CỨU, TÌM HIỂU NHỮNG VẤN ĐỀ
AN NINH CỦA HỆ ĐIỀU HÀNH MẠNG
Ngành:
Công nghệ thông tin
Chuyên ngành:
Hệ thống thông tin
Mã số:
60480104
LUẬN VĂN THẠC SĨ HỆ THỐNG THÔNG TIN
Người hướng dẫn khoa học: TS. NGUYỄN NGỌC CƯƠNG
HÀ NỘI - 2014
LỜI CAM ĐOAN
Với mục đích học tập, nghiên cứu để nâng cao kiến thức, trình độ chuyên môn
nên tôi đã làm luận văn một cách nghiêm túc và hoàn toàn trung thực.
Trong toàn bộ nội dung của luận văn, những điều đã trình bày là của cá nhân tôi
hoặc là được tôi tổng hợp từ nhiều nguồn tài liệu. Đã nêu ra trong phần tài liệu tham
khảo ở cuối luận văn.
Tôi xin cam đoan những điều trên là đúng sự thật, nếu sai, tôi xin chịu hoàn
toàn trách nhiệm.
Hà Nội, ngày ...... tháng ........năm 2014
Học viên
Nguyễn Kỷ Tuấn
LỜI CẢM ƠN
Đầu tiên em xin gửi lời cảm ơn chân thành tới các thầy, cô trường Đại học
Công nghệ - Đại học Quốc gia Hà nội đã nhiệt tình giảng dạy và truyền đạt kiến thức
trong thời gian học tập và nghiên cứu tại trường.
Em xin bày tỏ lòng biết ơn sâu sắc tới thầy T.S Nguyễn Ngọc Cương,
Trưởng khoa Toán-Tin, Học viên An ninh Nhân dân. N gười đã định hướng,
dìu dắt và giúp đỡ em trong cả lĩnh vực nghiên cứu của luận văn cũng như trong
công tác chuyên môn và cuộc sống.
Em xin gửi lời cảm ơn tới các anh chị đồng nghiệp đã nhiệt tình hỗ trợ trong
thời gian làm luận văn.
Mặc dù đã rất cố gắng hoàn thiện luận văn này, xong luận văn sẽ khó tránh
khỏi những thiếu sót. Em rất mong nhận được sự góp ý, nhận xét, tận tình chỉ bảo từ
các thầy, cô.
Một lần nữa, Em xin chân thành cảm ơn tất cả mọi người!
Học viên
Nguyễn Kỷ Tuấn
MỤC LỤC
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
1.1. CÁC KÝ HIỆU
TT
1
2
Ký hiệu
Chú giải cho các ký hiệu sử dụng
Miền i
File J
1.2. CÁC CHỮ VIẾT TẮT
TT
1
2
3
4
5
6
7
8
Từ viết tắt
ACL
ACLs
Tiếng anh
Access control list
Access control list Solaris
Nghĩa tiếng việt
Quyền truy xuất
Solaris hỗ trợ các danh sách điều
Capability list
khiển truy nhập
Danh sách tiềm năng của miền
CSDL
DES
DAC
Data Encrypting Standard
Discretionary Access
bảo vệ
Cơ sở dữ liệu
Chuẩn mật mã dữ liệu
Điều khiển truy cập thư mục
EFS
SRM
Controls
Encrypting File System
Security Reference Monitor
Mã hóa hệ thống tệp
Trình giám sát tham chiếu bảo
File Allocation Table
mật
Bảng định vị thông tin file
General Security Services
Giao diện các dịch vụ bảo mật
Application Programming
chung
Interface
Pluggable Authentication
Module xác thực có thể tải thêm
C_List
9
FAT
10
GSSAPI
11
PAM
Module
DANH MỤC CÁC BẢNG BIỂU
DANH MỤC HÌNH VẼ
7
MỞ ĐẦU
1. Đặt vấn đề
Sự bùng nổ thông tin và mạng máy tính đã dẫn đến yêu cầu cấp thiết phải có
các biện pháp toàn diện nhằm đảm bảo An toàn, An ninh thông tin cho người dùng
đích thực. Đến nay, nhiều biện pháp đã được đưa ra và ứng dụng trong thực tế như:
Mật mã hóa, mật khẩu, Tường lửa và các phương pháp vật lý, v.v. Tuy nhiên, mỗi
Công nghệ được đưa vào ứng dụng trong thực tế đều tồn tại một số sơ hở mà người ta
thường gọi là "lỗ hổng". Ngay cả các hệ điều hành như: Windows, Unix, Sun Solaris
là những phần mềm được sử dụng rộng rãi nhất hiện nay đều có những lỗ hổng rất
nguy hiểm. Những kẻ truy cập trái phép (Intruders ) đã biết lợi dụng những lỗ hổng
đó để lấy cắp thông tin, sửa đổi thông tin, làm mất thông tin hoặc làm chậm lại quá
trình trao đổi thông tin của những người dùng hợp pháp tùy theo ý đồ của họ.
Trong phạm vi một Đề tài luận văn Cao học, một học viên không thể tìm hiểu,
nghiên cứu hết mọi vấn đề liên quan đến An toàn, An ninh của tất cả các Công nghệ
An toàn, Bảo mật thông tin được. Nhận thấy hệ điều hành luôn là mục tiêu cần được
ưu tiên bảo vệ do mức độ quan trọng của nó. Vì vậy, trong khuôn khổ Đề tài luận văn,
em đã chọn Đề tài "Nghiên cứu, tìm hiểu những vấn đề an ninh của hệ điều hành
mạng" làm đề tài luận văn tốt nghiệp của mình. Do các tài liệu mà em thu thập để
nghiên cứu chưa đầy đủ và cũng do trình độ năng lực còn nhiều hạn chế, chắc chắn
trong báo cáo luận văn còn nhiều thiếu sót. Kính mong các thầy, cô góp ý chỉ bảo để
luận văn của em có thể tiếp cận gần hơn với thực tiễn. Em xin chân thành cảm ơn.
2. Mục tiêu của đề tài
Mục tiêu của Đề tài luận văn là:
- Nghiên cứu tổng quan về hệ điều hành.
- Tập trung nghiên cứu, đánh giá 3 hệ điều hành phổ biến hiện nay là Windows, Unix,
-
Solaris.
Tìm hiểu hệ thống hóa các cơ chế an ninh, an toàn, cấu trúc, các cơ chế bảo vệ, bản
chất các cơ chế xác thực, cơ chế mật khẩu của các hệ điều hành này
Trên cơ sở đó, em đi sâu tìm hiểu, nghiên cứu và phân tích một số lỗ hổng và
cuối cùng là thử nghiệm phần mềm mã nguồn mở nhằm khai thác lỗ hổng của hệ
điều hành.
3. Đối tượng và phạm vi nghiên cứu
8
- Đối tượng: Là các hệ điều hành máy tính.
- Phạm vi nghiên cứu: Tìm hiểu về các hệ điều hành đang được sử dụng rộng
rãi nhất hiện nay ở Việt Nam. Đặc biệt là hệ điều hành Windows.
4. Nội dung nghiên cứu
Nội dung nghiên cứu của luận văn gồm 4 chương:
Chương 1: Tổng quan về hệ điều hành
Chương 2: Tìm hiểu một vài hệ điều hành thông dụng nhất hiện nay và cơ chế
An ninh, An toàn của chúng
Chương 3: Đi sâu tìm hiểu vấn đề An ninh, An toàn của hệ điều hành Windows
Chương 4: Thử nghiệm phần mềm mã nguồn mở nhằm khai thác lỗ hổng của
hệ điều hành.
Kết luận và hướng phát triển.
9
CHƯƠNG 1: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH
Để hiểu hệ điều hành là gì, trước tiên chúng ta phải hiểu chúng được phát triển
như thế nào. Trong chương này em khái quát về hệ điều hành; điểm lại lịch sử phát
triển hệ điều hành. Đưa ra 8 phân loại hệ điều hành. Tiếp đến, trình bày tiêu chuẩn
đánh giá mức độ an toàn hệ điều hành; cơ chế An ninh, An toàn hệ điều hành. Đi sâu
các vấn đề an toàn hệ thống, mối đe dọa từ các chương trình ảnh hưởng đến hệ thống,
xác thực thực thể, kiểm chứng, cài đặt ma trận quyền truy cập.
1.1. Khái quát về hệ điều hành
1.1.1. Định nghĩa hệ điều hành
Hệ điều hành là một tầng của hệ thống máy tính nằm giữa phần cứng và các
chương trình người dùng (hay các phần mềm người dùng). Hệ điều hành được xây
dựng trực tiếp trên giao diện phần cứng và cung cấp giao diện giữa phần cứng máy
tính và các chương trình người dùng. Thông thường, các phần mềm ứng dụng sẽ
không trực tiếp thực hiện trên phần cứng máy tính mà nó yêu cầu một hệ điều hành để
chạy trên đó. Hệ điều hành là lớp phần mềm gần nhất đối với bất kỳ phần mềm ứng
dụng nào đang được thực thi. Hệ điều hành cũng là chương trình đầu tiên được chạy
trên máy tính khi máy tính được khởi động.
Hệ điều hành chia sẻ các đặc trưng với cả phần cứng và phần mềm. Hệ điều
hành là phần mềm, nghĩa là nó là một chương trình đã được biên dịch, liên kết và
chạy trên máy tính. Tuy nhiên, nó lại giống phần cứng trong đó chỉ có một bản copy
của hệ điều hành chạy trên máy tính và nó mở rộng các khả năng của phần cứng.
Hình 1.1 Mô hình trừu tượng của hệ thống máy tính
1.1.2. Chức năng chính hệ điều hành
1.1.2.1. Quản lý chia sẻ tài nguyên
10
Tài nguyên của hệ thống (CPU, bộ nhớ, thiết bị ngoại vi,...) vốn rất giới hạn,
nhưng trong các hệ thống đa nhiệm, nhiều người sử dụng có thể đồng thời yêu cầu
nhiều tài nguyên. Để thỏa mãn yêu cầu sử dụng chỉ với tài nguyên hữu hạn và nâng
cao hiệu quả sử dụng tài nguyên, hệ điều hành cần phải có cơ chế và chiến lược thích
hợp để quản lý việc phân phối tài nguyên.
Ngoài yêu cầu dùng chung tài nguyên để tiết kiệm chi phí, người sử dụng còn
cần phải chia sẻ thông tin (tài nguyên phần mềm) lẫn nhau, khi đó hệ điều hành cần
đảm bảo việc truy xuất đến các tài nguyên này là hợp lệ, không xảy ra tranh chấp, mất
đồng nhất,.v.v.
1.1.2.2. Giả lập một máy tính mở rộng
Hệ điều hành làm ẩn đi các chi tiết phần cứng, người sử dụng được cung cấp
một giao diện đơn giản, dễ hiểu, dễ sử dụng và không phụ thuộc vào thiết bị phần
cứng cụ thể.
Thực tế, ta có thể xem hệ điều hành như là một hệ thống bao gồm nhiều máy
tính trừu tượng xếp thành nhiều lớp chồng lên nhau, máy tính mức dưới phục vụ cho
máy tính mức trên. Lớp trên cùng là giao diện trực quan nhất để điều khiển.
Ngoài ra có thể chia chức năng của hệ điều hành theo bốn chức năng sau:
Quản lý quá trình (process management)
Quản lý bộ nhớ (memory management)
Quản lý hệ thống lưu trữ
Giao tiếp với người dùng (user interaction)
1.1.3. Các thành phần của hệ điều hành
Hệ điều hành gồm ba thành phần sau:
- Bộ cấp phát tài nguyên (Resour allocator): Quản lý và cấp phát tài nguyên.
- Chương trình kiểm soát (Control program): Kiểm soát việc thực thi chương
trình và kiểm soát hoạt động của các thiết bị nhập/ xuất.
- Phần nhân: là chương trình “lõi” của hệ điều hành, được thực thi trước tiên và
tồn tại trong bộ nhớ cho đến khi tắt máy (các chương trình khác gọi là chương trình
ứng dụng).
Bộ cấp phát tài nguyên
Chương trình kiểm soát
Phần nhân
Hình 1.2 Các thành phần của hệ điều hành
1.1.4. Các dịch vụ hệ điều hành
- Thực hiện chương trình - hệ thống có khả năng nạp một chương trình vào bộ nhớ và
11
-
thi hành nó.
Thực hiện nhập xuất - Từ chương trình người dùng không thể thực hiện nhập xuất trực
-
tiếp, hệ điều hành phải cung cấp các cách thức để thực hiện nhập xuất.
Các thao tác trên hệ thống file - chương trình có khả năng đọc, ghi, tạo và xoá file.
Truyền thông - Trao đổi thông tin giữa các tiến trình đang thực hiện cùng lúc trên máy
tính hay trên các hệ thống trên mạng. Thực hiện bằng cách thông qua bộ nhớ dùng
-
chung hay qua các thông điệp.
Phát hiện lỗi - bảo đảm phát hiện lỗi trong CPU, bộ nhớ, thiết bị nhập xuất hoặc trong
chương trình người sử dụng.
1.1.5. Cấu trúc hệ điều hành
1.1.5.1. Cấu trúc đơn giản
- Các hệ điều hành đơn giản thường không có cấu trúc được định nghĩa tốt,
thường bắt đầu từ một hệ thống nhỏ, đơn giản và có giới hạn.
- MS-DOS là một hệ điều hành có cấu trúc đơn giản, nó cung cấp những chức
năng cần thiết nhất trong một không gian nhỏ nhất do sự giới hạn của phần cứng và
không chia thành những đơn thể rõ rệt.
- Các chương trình ứng dụng có thể truy cập trực tiếp các thủ tục nhập xuất cơ
bản và ghi trực tiếp lên màn hình hay bộ điều khiển đĩa.
12
Hình 1.3 Cấu trúc đơn giản hệ điều hành
1.1.5.2. Cấu trúc phân lớp
- Hệ điều hành chia thành nhiều lớp. Lớp dưới cùng là phần cứng, lớp trên cùng
là giao tiếp với người sử dụng.
- Một lớp của hệ điều hành bao gồm một số cấu trúc dữ liệu và các hàm có thể
được gọi bởi lớp ở phía trên và bản thân nó gọi những chức năng của lớp bên dưới.
Mỗi lớp cài đặt chỉ sử dụng những thao tác do lớp dưới cung cấp.
Lớp 6: Chương trình của người sử dụng
Lớp 5: Driver thiết bị và bộ lập lịch
Lớp 4: Bộ nhớ ảo
Lớp 3: Kênh nhập xuất
Lớp 2: Lập lịch CPU
Lớp 1: Thông dịch các chỉ thị
Lớp 0: Phần cứng
1.1.6. Nguyên lý thiết kế hệ điều hành
- Hệ điều hành cần dễ viết, dễ sửa đổi, dễ nâng cấp (nên viết hệ điều hành băng ngôn
-
ngữ cấp cao vì dễ viết và dễ sửa lỗi hơn là viết bằng ngôn ngữ Assembly).
Hệ điều hành cần dễ cài đặt, dễ bảo trì, không có lỗi và hiệu quả.
Hệ điều hành cần dễ sử dụng, dễ học, an toàn, có độ tin cậy cao và thực hiện nhanh.
13
- Hệ điều hành cần có tính khả chuyển cao (thực hiện được trên một nhóm các phần
-
cứng khác nhau).
Hệ điều hành cần có chương trình SYSGEN (System Generation) thu thập thông tin
liên quan đến phần cứng để thiết lập cấu hình hệ điều hành cho phù hợp với mỗi máy
tính.
1.2. Phân loại hệ điều hành
Có nhiều cách phân loại hệ điều hành, sau đây em xét một số phân loại hệ điều
hành sau:
1.2.1. Hệ điều hành xử lý theo lô đơn giản
- Khi một công việc chấm dứt, hệ thống sẽ thực hiện công việc kế tiếp mà không cần sự
-
can thiệp của người lập trình, do đó thời gian thực hiện sẽ mau hơn. Một chương trình
gọi là bộ giám sát thường trực được thiết kế để giám sát việc thực hiện dãy công việc
một cách tự động, chương trình này luôn thường trú trong bộ nhớ chính.
Hệ điều hành theo lô thực hiện các công việc lần lượt theo những chỉ thị định trước.
1.2.2. Hệ điều hành xử lý theo lô đa chương
- Đa chương làm gia tăng khai thác CPU bằng cách tổ chức các công việc sao cho CPU
-
luôn luôn phải trong tình trạng làm việc.
Cách thực hiện là hệ điều hành lưu trữ một phần của các công việc ở nơi lưu trữ trong
-
bộ nhớ. CPU sẽ lần lượt thực hiện các phần công việc này. Khi đang thực hiện, nếu có
yêu cầu truy xuất thiết bị thì CPU không nghỉ mà thực hiện tiếp các công việc tiếp
theo.
Mô hình tổ chức của bộ nhớ cho hệ điều hành đa chương:
Hình 1.4 Bộ nhớ cho hệ điều hành đa chương
14
Các đặc trương của hệ điều hành đa chương:
Việc nhập xuất phải thực hiện thường xuyên bởi hệ thống.
Quản lý bộ nhớ - hệ thống phải cấp phát bộ nhớ cho các công việc.
Lập lịch CPU - hệ thống phải chọn giữa các công việc nào thật sự được chạy.
Cấp phát các thiết bị.
1.2.3. Hệ điều hành đa nhiệm
- Hệ điều hành đa nhiệm là một sự mở rộng logic của hệ điều hành đa chương. Nhiều
-
công việc cùng được thực hiện thông qua cơ chế chuyển đổi CPU như hệ đa chương
nhưng thời gian mỗi lần chuyển đổi diễn ra rất nhanh.
Hệ điều hành đa nhiệm được phát triển để cung cấp việc sử dụng bên trong của một
-
máy tính có giá trị hơn.
Một chương trình khi thi hành được gọi là tiến trình. Trong khi thi hành một tiến trình
-
nó phải thực hiện các thao tác nhập xuất và trong khoảng thời gian đó CPU sẽ thi hành
một tiến trình khác.
Hệ điều hành đa nhiệm cho phép nhiều người sử dụng chia sẻ máy tính một cách đồng
-
bộ do thời gian chuyển đổi nhanh nên họ có cảm giác là các tiến trình đang chạy được
thi hành cùng lúc.
Hệ điều hành đa nhiệm phức tạp hơn hệ điều hành đa chương và nó phải có thêm các
-
chức năng: quản trị và bảo vệ bộ nhớ, sử dụng bộ nhớ ảo, …
Hệ điều hành đa nhiệm hiện nay rất thông dụng.
1.2.4. Hệ điều hành tương tác
- Hệ điều hành cung cấp cơ chế truyền thông trực tiếp giữa người sử dụng và hệ thống.
-
Khi hệ điều hành kết thúc thực hiện một lệnh, nó sẽ tìm ra lệnh kế tiếp từ người sử
dụng thông qua bàn phím.
Hệ thống cho phép người sử dụng truy cập dữ liệu và mã chương trình một cách trực
tiếp.
1.2.5. Hệ điều hành giao diện bàn giấy (Desktop)
- Hệ điều hành này có các giao diện với người sử dụng giống như một bàn làm việc, tức
trên màn hình trình bày rất nhiều biểu tượng chương trình, công cụ làm việc. Hệ điều
hành có đặc điểm là:
Cài đặt trên máy tính cá nhân - hệ thống máy tính được thiết kế cho một người sử
dụng đơn lẻ.
Các thiết bị hỗ trợ đắc lực là thiết bị nhập xuất - bàn phím, mouse, màn hình, máy in.
Thuận tiện cho người dùng và đáp ứng nhanh.
Có thể kế thừa kỹ thuật để phát triển hệ điều hành lớn hơn.
- Một số hệ điều hành khác nhau sử dụng bàn giấy hiện nay (Windows, UNIX, Linux)
1.2.6. Hệ thống song song
15
- Ngoài các hệ thống tín chỉ có một bộ xử lý còn có các hệ thống có nhiều bộ xử lý cùng
chia sẻ hệ thống đường truyền dữ liệu, đồng hồ, bộ nhớ và các thiết bị ngoại vi.
- Thuận lợi của hệ thống xử lý song song:
Xử lý nhiều công việc cùng lúc thật sự tăng độ tin cậy.
- Trong hệ thống xử lý song song được thành hai loại:
Đa xử lý đối xứng
o Mỗi bộ xử lý chạy một bản sao hệ điều hành.
o Nhiều tiến trình có thể chạy cùng lúc mà không gây hỏng.
o Hầu hết các thế hệ, hệ điều hành đều hỗ trợ đa xử lý đối xứng
Đa xử lý không đối xứng
o Mỗi bộ xử lý được gắn vào một công việc cụ thể; Bộ xử lý chủ lập lịch và cấp phát
công việc cho bộ xử lý phụ.
o Phổ biến nhiều trong hệ thống cực kỳ lớn.
- Kiến trúc hệ thống đa bộ xử lý đối xứng
Hình 1.5 Kiến trúc hệ thống đa bộ xử lý đối xứng
1.2.7. Hệ thống phân tán
- Hệ thống thực hiện phân tán việc tính toán giữa các bộ xử lý.
- Mỗi bộ xử lý có vùng nhớ riêng; các bộ xử lý truyền thông với nhau qua hệ thống
-
mạng tốc độ cao.
Thuận lợi của hệ thống phân tán:
Chia sẻ tài nguyên
Tăng tốc độ tính toán
Đáng tin cậy
Truyền thông
Trong hệ thống yêu cầu cơ sở hạ tầng về mạng. Mạng cục bộ (LAN) hoặc mạng diện
-
rộng (WAN), cũng có thể là hệ thống Client-Server hoặc Peer-to-Peer.
Mô hình hệ thống Client- Server:
16
Hình 1.6 Mô hình Clinet-Server
1.2.8. Hệ thống cầm tay
Máy trợ lý cá nhân kỹ thuật số (PDAs) (personal digital assistant - PDA)
Vấn đề cần giải quyết:
Bộ nhớ bị giới hạn.
Bộ xử lý chậm.
Màn hình hiển thị nhỏ.
1.3. Lịch sử phát triển hệ điều hành
1.3.1. Thế hệ 1 (1945 - 1955)
Vào khoảng giữa thập niên 1940, Howard Aiken ở Havard và John Von
Neumann ở Princeton, đã thành công trong việc xây dựng máy tính dùng ống chân
không. Những máy này rất lớn với hơn 10000 ống chân không nhưng chậm hơn nhiều
so với máy rẻ nhất ngày nay.
Mỗi máy được một nhóm thực hiện tất cả từ thiết kế, xây dựng lập trình, thao
tác đến quản lý. Lập trình bằng ngôn ngữ máy tuyệt đối, thường là bằng cách dùng
bảng điều khiển để thực hiện các chức năng cơ bản. Ngôn ngữ lập trình chưa được biết
đến và hệ điều hành cũng chưa nghe đến.
Vào đầu thập niên 1950, phiếu đục lỗ ra đời và có thể viết chương trình trên
phiếu thay cho dùng bảng điều khiển.
1.3.2. Thế hệ 2 (1955 - 1965)
Sự ra đời của thiết bị bán dẫn vào giữa thập niên 1950 làm thay đổi bức tranh
tổng thể. Máy tính trở nên đủ tin cậy hơn. Nó được sản xuất và cung cấp cho các
khách hàng. Lần đầu tiên có sự phân chia rõ ràng giữa người thiết kế, người xây dựng,
người vận hành, người lập trình và người bảo trì.
Để thực hiện một công việc (một chương trình hay một tập hợp các chương
trình), lập trình viên trước hết viết chương trình trên giấy (bằng hợp ngữ hay
17
FORTRAN) sau đó đục lỗ trên phiếu và cuối cùng đưa phiếu vào máy. Sau khi thực
hiện xong nó sẽ xuất kết quả ra máy in.
Hệ thống xử lý theo lô ra đời, nó lưu các yêu cầu cần thực hiện lên băng từ và
hệ thống sẽ đọc và thi hành lần lượt. Sau đó, nó sẽ ghi kết quả lên băng từ xuất và cuối
cùng người sử dụng sẽ đem băng từ xuất đi in.
Hệ thống xử lý theo lô hoạt động dưới sự điều khiển của một chương trình đặc
biệt là tiền thân của hệ điều hành sau này. Ngôn ngữ lập trình sử dụng trong giai đoạn
này chủ yếu là FORTRAN và hợp ngữ.
1.3.3. Thế hệ 3 (1965 - 1980)
Trong giai đoạn này, máy tính được sử dụng rộng rãi trong khoa học cũng như
trong thương mại. Máy IBM 360 là máy tính đầu tiên sử dụng mạch tích hợp (IC). Từ
đó kích thước và giá cả của các hệ thống máy giảm đáng kể và máy tính càng phổ biến
hơn. Các thiết bị ngoại vi dành cho máy xuất hiện ngày càng nhiều và thao tác điều
khiển bắt đầu phức tạp.
Hệ điều hành ra đời nhằm điều phối, kiểm soát hoạt động và giải quyết các yêu
cầu tranh chấp thiết bị. Chương trình hệ điều hành dài cả triệu dòng hợp ngữ và do
hàng ngàn lập trình viên thực hiện.
Sau đó, hệ điều hành ra đời khái niệm đa chương. CPU không phải chờ thực
hiện các thao tác nhập xuất. Bộ nhớ được chia làm nhiều phần, mỗi phần có một công
việc (job) khác nhau, khi một công việc chờ thực hiện nhập xuất CPU sẽ xử lý các
công việc còn lại. Tuy nhiên khi có nhiều công việc cùng xuất hiện trong bộ nhớ, vấn
đề là phải có một cơ chế bảo vệ tránh các công việc ảnh hưởng đến nhau. Hệ điều hành
cũng cài đặt thuộc tính spool.
Giai đoạn này cũng đánh dấu sự ra đời của hệ điều hành chia sẻ thời gian như
CTSS của MIT. Đồng thời các hệ điều hành lớn ra đời như MULTICS, UNIX và hệ
thống các máy mini cũng xuất hiện như DEC PDP-1.
1.3.4. Thế hệ 4 (1980 - đến nay)
Giai đoạn này đánh dấu sự ra đời của máy tính cá nhân, đặc biệt là hệ thống
IBM PC với hệ điều hành MS-DOS và Windows sau này. Bên cạnh đó là sự phát triển
mạnh của các hệ điều hành tựa UNIX trên nhiều hệ máy khác nhau như Linux. Ngoài
ra, từ đầu thập niên 90 cũng đánh dấu sự phát triển mạnh mẽ của hệ điều hành mạng
và hệ điều hành phân tán.
1.4. Một số tiêu chuẩn đánh giá mức độ an toàn hệ điều hành
Có thể nói, tất cả các hệ điều hành được tạo ra là không ngang bằng nhau.
Ngày nay người ta càng chú ý hơn đến vấn đề an toàn trong hệ điều hành. Bộ quốc
18
phòng Mỹ đã đề xuất một số tiêu chuẩn để đánh giá mức độ an toàn cho các hệ điều
hành bao gồm những nội dung cơ bản sau đây:
- Chính sách an toàn: Nhất thiết phải có chính sách an toàn một cách rõ ràng và hệ
-
thống thực thi được xác định.
Nhận biết: Nhất thiết phải là sự nhận biết duy nhất đáng tin cậy đối với mỗi chủ thể
-
nhằm thuận lợi trong việc kiểm tra yêu cầu khai thác của chủ thể và khách thể.
Tiêu chí: Mỗi một khách thể (đối tượng) nhất thiết phải được gán một “tiêu chí”
-
(nhãn), nói rõ cấp an toàn của khách thể để thuận tiện cho việc so sánh.
Tính có thể kiểm tra: Hoạt động của hệ thống phải được ghi chép đầy đủ, thường
-
xuyên và an toàn. Những hoạt động này bao gồm đưa khách hàng mới vào hệ thống,
sự phân phối và thay đổi cấp an toàn của chủ thể hoặc khách thể, cũng như chống lại
ý đồ khai thác khác.
Giải pháp đảm bảo: Hệ thống nhất thiết phải bao hàm cơ chế thực thi tính an toàn,
-
đồng thời có thể đánh giá tính hữu hiệu của nó.
Bảo hộ liên tục: Cơ chế thực thi tính an toàn nhất thiết phải được bảo hộ liên tục
nhằm phòng ngừa sự biến đổi khi chưa được phê chuẩn.
Căn cứ 6 yêu cầu trên “chuẩn tắc đánh giá hệ thống máy tính tin cậy” chia tính
an toàn của hệ thống máy tính thành 8 mức khác nhau của 4 cấp (A,B,C,D).
Cấp D: Đây là cấp bảo hộ an toàn thấp nhất. Hệ điều hành ở cấp này giống như
một căn phòng có cửa to được mở rộng, bất kỳ người nào cũng có thể tự do đi vào, nó
hoàn toàn không thể tin cậy được. Đối với phần cứng thì không có bất kỳ một giải
pháp bảo hộ nào, hệ điều hành rất dễ bị tổn hại. Không có sự hạn chế khai thác số
liệu, bất kỳ người nào, không cần tài khoản cũng có thể vào hệ thống khai thác số liệu
của người khác. Cấp này chỉ có một mức. Những hệ điều hành thuộc cấp này có:
DOS, Windows, Macintosh System 7.1 của Apple.
Cấp C: Cấp C có 2 mức an toàn C1 và C2.
Mức C1: Còn gọi là hệ thống bảo vệ an toàn mạng máy tính tuyển chọn. Hệ
thống thuộc loại mức này có sự bảo vệ ở mức độ nhất định đối với phần cứng, nhưng
tính có thể bị tổn hại của phần cứng vẫn tồn tại. Tất cả những tài khoản và mật khẩu
của thuê bao phải được đăng ký, qua đó hệ thống nhận dạng xem thuê bao có hợp
pháp không, đồng thời quyết định xem thuê bao có quyền khai thác như thế nào đối
với các tài nguyên của hệ thống. Khiếm khuyết của bảo vệ mức C1 là ở chỗ thuê bao
có thể khai thác trực tiếp thuê bao gốc của hệ điều hành. C1 không có khả năng khống
chế cấp khai thác của thuê bao đi vào hệ thống, cho nên có thể để cho số liệu trong hệ
thống di chuyển bất kỳ.
Mức 2: Cần thoải mãn các yêu cầu sau:
19
- Dễ dàng truy nhập an toàn (Secure login facility): Chỉ cần một user ID và một
-
password.
Điều khiển truy nhập tùy ý (Discuretionary access control): Mỗi user có thể quyết
-
định cho phép người khác truy nhập ở mức độ nào đối với các file của anh ta.
Kiểm soát (Auditing): Hệ điều hành phải phát hiện và ghi lại tất cả các sự kiện liên
-
quan đến tính an toàn của hệ thống.
Bảo vệ bộ nhớ (Memory protection): Bộ nhớ phải có thể được bảo vệ khỏi việc đọc ghi không xác thực. Toàn bộ bộ nhớ phải được khởi tạo lại trước khi chúng được tái
sử dụng, vì thế nội dung của các bản ghi trước đó sẽ không bị mất.
Hệ điều hành WindowsNT và Novell-Netware được xếp ở mức an toàn C2 còn hệ
điều hành Unix được xếp ở mức an toàn C1.
Cấp B: Còn gọi là cấp bảo vệ ủy quyền. Nó chứa tất cả các yêu cầu có trong
cấp C. Cấp B còn có 3 mức: Mức B1, B2 và mức B3.
Mức B1: Đó là tiêu chí bảo vệ an toàn. Nó như mức thứ nhất duy trì an toàn
nhiều mức, (ví dụ như bí mật và tuyệt mật), mức này chỉ rõ khi một đối tượng rơi vào
tình trạng khống chế khai thác mạng thì hệ thống không cho phép người có tệp (tức là
đối tượng) được thay đổi quyền hạn của nó.
Hệ thống máy tính có được giải pháp an toàn mức B1 là tùy theo hệ điều hành.
Các cơ quan chính phủ và các nhà cung cấp hệ thống là những người chủ yếu có hệ
thống máy tính mức B1.
Mức B2: Còn gọi là bảo vệ cấu trúc. Nó yêu cầu tất cả các đối tượng ở trong
hệ thống đều phải đánh dấu và cho thiết bị (đĩa từ, băng từ và trạm đầu cuối) nhận
một mức hoặc nhiều mức an toàn. Như vậy ở đây đưa ra mức thứ nhất của thông tin
giữa đối tượng có mức an toàn tương đối cao với một đối tượng khác có mức an
toàn thấp hơn.
Mức B3: Còn gọi là bảo vệ an toàn khu vực. Nó sử dụng phương thức lắp đặt
phần cứng để tăng cường bảo vệ an toàn khu vực. Mức này yêu cầu thuê bao thông
qua một đường có sự tín nhiệm nối với hệ thống.
Cấp A: Đó là cấp bảo vệ xác minh. Nó thường được gọi là an toàn được kiểm
chứng; nó bao gồm mức A và mức A1. Đó là cấp thiết kế nhận dạng và là cấp cao
nhất hiện nay; nó gồm thiết kế khống chế và quá trình nhận dạng chính xác. Cũng
giống như các cấp ở trên, nó bao gồm tất cả các đặc tính của các cấp thấp hơn. Thiết
kế phải từ góc độ số học và phải trải qua nhận dạng.
Trong 8 cấp được giới thiệu ở trên, B1 và B2 là chênh lệch nhau về cấp lớn
nhất, bởi vì chỉ có B2, B3 và A mới là các mức an toàn thực sự. Hiện nay, máy tính
được sử dụng một cách rộng rãi, hệ điều hành của chúng phần lớn là sản phẩm thuộc
20
mức C1 và mức C2, được nhập từ ngoài vào. Việc sáng tạo ra hệ điều hành an toàn và
cơ sở dữ liệu cao cấp là một nhiệm vụ cấp bách. Tuy nhiên đó là một công việc rất
khó khăn và nặng nề.
1.5. Cơ chế an ninh, an toàn của hệ điều hành
Mỗi hệ điều hành đề có một hệ thống an toàn được xây dựng sẵn. Tuy mỗi hệ
có cách cài đặt khác nhau nhưng chúng đều được tổ chức thành ba mức khác nhau:
- An toàn truy nhập mạng
- An toàn hệ thống
- An toàn file và thư mục
1.5.1. An toàn truy nhập mạng
An toàn truy nhập hệ thống là mức đầu tiên mà người dùng phải vượt qua để
truy nhập vào mạng. Chức năng của an toàn truy nhập mạng bao gồm
Xác thực tính chân thực của người dùng
Xác định thời gian mà người dùng truy cập vào mạng
Xác định trạm làm việc mà người dùng truy cập vào mạng từ đó
Xác định người lạ mặt
Ngày mãn hạn của khoản mục người dùng
Vô hiệu hóa khoản mục
Các ràng buộc
Tóm lại: An toàn truy cập mạng có chức năng trả lời các câu hỏi người dùng là
ai, anh ta được truy nhập vào mạng khi nào, ở đâu và truy nhập như thế nào
Như vậy điều cần thiết là xác thực người dùng đối với hệ thống, nhưng đôi khi
xác thực hệ thống với người dùng cũng rất quan trọng. Có thể lý giải điều này như
sau: Giả sử có một phòng công cộng, ở đó người ta có thể truy nhập vào hệ thống
thông qua các terminal. Khi người dùng đến một terminal, nó hiển thị của sổ hoặc
thống báo login và người dùng gõ tên và mật khẩu vào. Nếu có một người nào đó đã
viết một chương trình mà hiển thị của sổ hoặc thông báo login giống với giao diện
thật của hệ thống. Họ khởi động chương trình đó lên và rời khỏi terminal. Sau đó một
người dùng khác đến và nghĩ rằng đó là thông báo login của hệ thống và gõ tên và
mật khẩu vào. Khi đó chương trình sẽ lưu tên và mật khẩu rồi mới cho phép người
dùng login vào hệ thống bình thường. Hoặc chương trình sẽ thoát ra ngay lập tức và
người dùng chỉ nghĩ rằng có sự sai sót và login lại một lần nữa. Vấn đề ở đây là hệ
thống đã không xác thực được chính người dùng.
1.5.2. An toàn truy nhập hệ thống
Xác định quyền hạn người dùng đối với người dùng và quyền hạn của người
dùng đối với các thiết bị và các thao tác hệ thống.
21
Quyền của người dùng như tạo, xem, sửa xóa các khoản mục người dùng. Mỗi
hệ điều hành đều có một khoản mục đại diện cho người quản trị mạng là người có
quyền cao nhất trong hệ thống. Người quản trị mạng sẽ tạo ra các khoản mục người
dùng khác và gán quyền cho họ.
Các thao tác với khoản mục:
Tạo khoản mục người dùng, nhóm người dùng.
Xóa khoản mục người dùng, nhóm người dùng.
Xem thông tin về khoản mục người dùng, nhóm người dùng.
Xem, thêm, bớt thành viên của nhóm người dùng.
Vô hiệu hóa khoản mục.
Các thao tác đối với thiết bị như:
Truy nhập vào mạng từ máy chủ.
Tắt máy chủ.
Dùng máy in mạng.
Backup và khôi phục dữ liệu.
1.5.3. An toàn truy nhập file và thư mục
Mạng máy tính cho phép người dùng có những file và thư mục dùng chung
trên máy chủ. Từ một máy trạm bất kỳ người dùng có thể truy nhập đến các file và
thư mục nằm trên máy chủ. Chúng có thể là các file chương trình, file dữ liệu, file hệ
thống..Do chức năng quyền hạn của mỗi người dùng khác nhau nên nhu cầu truy nhập
đến các file dùng chung cũng khác nhau. Chính vì vậy các hệ điều hành mạng đều có
cơ chế gán quyền truy nhập đối với các file và thư mục cho mỗi người dùng.
Đối tượng được gán quyền
Đối tượng để gán quyền
Quyền thực sự
1.6. An toàn và bảo mật hệ thống
1.6.1. Các vấn đề về an toàn hệ thống
Hệ thống được gọi là an toàn nếu các tài nguyên được sử dụng đúng như quy
ước trong mọi hoàn cảnh. Kém may mắn là điều này hiếm khi đạt được trong thực tế.
Thông thường, an toàn bị vi phạm vì các nguyên nhân vô tình hay cố ý phá hoại. Việc
chống đỡ các phá hoại cố ý là rất khó khăn và gần như không thể đạt hiệu quả hoàn
toàn. Bảo đảm an toàn hệ thống ở cấp cao chống lại các tác hại từ môi trường ngoài
như hoả hoạn, mất điện, phái hoại...cần được thực hiện ở 2 mức độ vật lý (trang bị các
thiết bị an toàn cho vị trí đặt hệ thống...) và nhân sự (chọn lọc cẩn thận những nhân
viên làm việc trong hệ thống...). Nếu an toàn môi trường được bảo đảm khá tốt, an
toàn của hệ thống sẽ được duy trì tốt nhờ các cơ chế của hệ điều hành (với sự trợ giúp
của phần cứng).
22
Lưu ý rằng nếu bảo vệ hệ thống có thể đạt độ tin cậy 100%, thì các cơ chế an
toàn hệ thống được cung cấp chỉ với hy vọng ngăn chặn bớt các tình huống bất an hơn
là đạt đến độ an toàn tuyệt đối.
1.6.2. Kiểm định danh tính (Authentication)
Để đảm bảo an toàn, hệ điều hành cần giải quyết tốt vấn đề chủ yếu là kiểm
định danh tính (authentication). Hoạt động của hệ thống bảo vệ phụ thuộc vào khả
năng xác định các tiến trình đang xử lý. Khả năng này, đến lượt nó, lại phụ thuộc vào
việc xác định được người dùng đang sử dụng hệ thống để có thể kiểm tra người dùng
này được cho phép thao tác trên những tài nguyên nào.
Cách tiếp cận phổ biến nhất để giải quyết vấn đề là sử dụng password để kiểm
định đúng danh tính của người dùng. Mỗi khi người dùng muốn sử dụng tài nguyên,
hệ thống sẽ kiểm tra password của người dùng nhập vào với password được lưu trữ,
nếu đúng, người dùng mới được cho phép sử dụng tài nguyên. Password có thể được
để bảo vệ từng đối tượng trong hệ thống, thậm chí cùng một đối tượng sẽ có các
password khác nhau ứng với những quyền truy xuất khác nhau.
Cơ chế password rất dễ hiểu và dễ sử dụng do vậy được sử dụng rộng rãi, tuy
nhiên yếu điểm nghiêm trọng của phương pháp này là khả năng bảo mật password rất
khó đạt được sự hoàn hảo, những tác nhân tiêu cực có thể đoán ra password của người
khác nhờ nhiều cách thức khác nhau.
Phương pháp triển vọng nhất để cải thiện mức độ an toàn cho password là
Proaction password checking. Trong phương pháp này, người dùng được phép lựa
chọn password cho mình. Tuy nhiên, tại thời điểm lựa chọn, hệ thống sẽ kiểm tra xem,
nếu password là có thể cho phép thì nó được chấp nhận trong trường hợp ngược lại nó
bị loại bỏ. Vì các quá trình kiểm tra dựa trên một lý lẽ rằng, với sự chỉ dẫn đầy đủ của
hệ thống, các user có thể lựa chọn password dễ nhớ từ không gian mật khẩu khá lớn,
không giống với mật khẩu bị đoán ra trong tấn công từ điển.
1.6.3. Mối đe dọa từ các chương trình
Trong môi trường mà một chương trình được tạo lập bởi người này lại có thể
được người khác sử dụng, có thể xảy ra các tình huống sử dụng không đúng, từ đó dẫn
đến những hậu quả khó lường. Hai trường hợp điển hình là:
1.6.3.1. Ngựa thành Troy
Khi một người dùng X cho một chương trình do Y viết hoạt động dưới danh
nghĩa của mình (trong miền bảo vệ được gán tương ứng cho người dùng X), chương
trình này có thể trở thành một « con ngựa thành Troy » vì khi đó các đoạn lệnh trong
chương trình có thể thao tác trên các tài nguyên với những quyền tương ứng của người
23
X (mà có thể người Y vốn bị cấm!), nhiều chương trình như thế đã « lợi dụng hoàn
cảnh » để gây ra các tác hại đáng tiếc.
1.6.3.2. Cửa sập (Trap-door)
Một mối đe dọa đặc biệt nguy hiểm và khó chống đỡ đến từ sự vô tình hay ý
nghĩ bất chính của các lập trình viên. Khi xây dựng chương trình, các lập trình viên có
thể để lại một « Trap-door » trong phần mềm mà chỉ có họ là có khả năng sử dụng,
qua đó thâm nhập và phá hoại hệ thống (ví dụ làm tròn các số lẻ trong những tài
khoản, và thu lợi riêng từ phần dư này...). Vấn đề này rất khó đối phó vì cần phải tiến
hành phân tích chương trình nguồn để tìm ra chỗ sơ hở.
1.6.4. Miền bảo vệ
1.6.4.1. Khái niệm
Một hệ thống máy tính được xem như một tập các đối tượng (objects). Một
đối tượng có thể là một bộ phận phần cứng (CPU, bộ nhớ, ổ đĩa...) hay một thực thể
phần mềm (tập tin, chương trình, semaphore...). Mỗi đối tượng có một định danh duy
nhất để phân biệt với các đối tượng khác trong hệ thống và chỉ được truy xuất đến
thông qua các thao tác được định nghĩa chặt chẽ và được qui định ngữ nghĩa rõ ràng.
Các thao tác có thể thực hiện được trên một đối tượng được xác định cụ thể tùy vào
đối tượng.
Để có thể kiểm soát được tình hình sử dụng tài nguyên trong hệ thống, hệ điều
hành chỉ cho phép các tiến trình được truy xuất đến các tài nguyên mà nó có quyền sử
dụng, hơn nữa tiến trình chỉ được truy xuất đến các tài nguyên cần thiết trong thời
điểm hiện tại để nó hoàn thành tác vụ (nguyên lý need-to-know) nhằm hạn chế các lỗi
truy xuất mà tiến trình có thể gây ra trong hệ thống.
Mỗi tiến trình trong hệ thống đều hoạt động trong một miền bảo vệ (protection
domain) nào đó. Một miền bảo vệ sẽ xác định các tài nguyên (đối tượng) mà những
tiến trình hoạt động trong miền bảo vệ này có thể sử dụng và các thao tác hợp lệ các
tiến trình này có thể thực hiện trên những tài nguyên đó.
Ví dụ: <File F, {read, write}>
1.6.4.2. Cấu trúc của miền bảo vệ
Các khả năng thao tác trên một đối tượng được gọi là quyền truy xuất (access
right). Một miền bảo vệ là một tập các quyền truy xuất, mỗi quyền truy xuất được định
nghĩa bởi một bộ hai thứ tự <đối tượng, {quyền thao tác} >.
Các miền bảo vệ khác nhau có thể giao nhau một số quyền truy xuất:
24
Hình 1.7 Hệ thống với 3 miền bảo vệ
Mối liên kết giữa một tiến trình và một miền bảo vệ có thể tĩnh hay động:
Liên kết tĩnh: Trong suốt thời gian sống của tiến trình, tiến trình chỉ hoạt động
trong một miền bảo vệ. Trong trường hợp tiến trình trải qua các giai đoạn xử lý khác
nhau, ở mỗi giai đoạn tiến trình có thể thao tác trên những tập tài nguyên khác nhau
bằng các thao tác khác nhau. Tuy nhiên, nếu sử dụng liên kết tĩnh, rõ ràng là ngay từ
đầu miền bảo vệ đã phải đặc tả tất cả các quyền truy xuất qua các giai đoạn cho tiến
trình, điều này có thể khiến cho tiến trình có dư quyền trong một giai đoạn nào đó và
vi phạm nguyên lý need-to-know. Để có thể tôn trọng nguyên lý này, khi đó cần phải
có khả năng cập nhật nội dung miền bảo vệ để có thể phản ánh các quyền tối thiểu của
tiến trình trong miền bảo vệ tại một thời điểm.
Liên kết động: Cơ chế này cho phép tiến trình chuyển từ miền bảo vệ này sang
miền bảo vệ khác trong suốt thời gian sống của nó. Để tiếp tục tuân theo nguyên lý
need-to-know, thay vì sửa đổi nội dung của miền bảo vệ, có thể tạo ra các miền bảo vệ
mới với nội dung thay đổi qua từng giai đoạn xử lý của tiến trình và chuyển tiến trình
sang hoạt động trong miền bảo vệ phù hợp theo từng thời điểm.
Một miền bảo vệ có thể được xây dựng cho:
Một người sử dụng: Trong trường hợp này, tập các đối tượng được phép truy
xuất phụ thuộc vào định danh của người sử dụng, miền bảo vệ được chuyển khi thay
đổi người sử dụng.
Một tiến trình: Trong trường hợp này, tập các đối tượng được phép truy xuất
phụ thuộc vào định danh của tiến trình, miền bảo vệ được chuyển khi quyền điều khiển
được chuyển sang tiến trình khác.
Một thủ tục: Trong trường hợp này, tập các đối tượng được phép truy xuất là
các biến cục bộ được định nghĩa bên trong thủ tục, miền bảo vệ được chuyển khi thủ
tục được gọi.
25
1.6.5. Cài đặt ma trận quyền truy xuất
1.6.5.1. Bảng toàn cục
Cách đơn giản nhất để cài đặt ma trận truy xuất là sử dụng một bảng bao gồm
các bộ ba thứ tự < miền bảo vệ, đối tượng, các quyền truy xuất >. Mỗi khi thực hiện
thao tác M trên đối tượng Oj trong miền bảo vệ Di, cần tìm trong bảng toàn cục một bộ
ba < Di, Oj, Rk > mà M ∈ Rk. Nếu tìm thấy, thao tác M được phép thi hành, nếu
không, xảy ra lỗi truy xuất.
Bảng 1.1 Bảng toàn cục
Object
F1
Domain
D1
D2
D3
F2
Real
Laser
D1
Real
D2
D3
D4
Switch
Switch
Switch
Print
Real
Real
Writ
e
D4
F3
Real
Write
Switch
1.6.5.2. Danh sách quyền truy xuất (Access control list - ACL)
Có thể cài đặt mỗi cột trong ma trận quyền truy xuất như một danh sách quyền
truy xuất đối với một đối tượng. Mỗi đối tượng trong hệ thống sẽ có một danh sách
bao gồm các phần tử là các bộ hai thứ tự <miền bảo vệ, các quyền truy xuất>, danh
sách này sẽ xác định các quyền truy xuất được qui định trong từng miền bảo vệ có thể
tác động trên đối tượng. Mỗi khi thực hiện thao tác M trên đối tượng Oj trong miền
bảo vệ Di, cần tìm trong danh sách quyền truy xuất của đối tượng Oj một bộ hai <
Di,Rk > mà M ∈ Rk. Nếu tìm thấy, thao tác M được phép thi hành, nếu không xảy ra
lỗi truy xuất.
Ví dụ: Một miền bảo vệ trong hệ thống UNIX được xác định tương ứng với một
người sử dụng (uid) trong một nhóm (gid) nào đó. Giả sử có 4 người dùng: A,B,C,D
thuộc các nhóm tương ứng là system, staff, student, student. Khi đó các tập tin trong
hệ thống có thể có các ACL như sau:
File0: (A,* ,RWX)
File1: (A,system,RWX)
File2: (A,* ,RW-),(B,staff,R--),(D,* ,RW-)