Bài giảng Lập trình an toàn - Chương 2: Kiểm soát truy nhập - Lương Ánh Hoàng

2.1 Cơ chế kiểm soát truy nhập trên Unix/Linux

2.2 Cơ chế kiểm soát truy nhập trên Windows

2.3 Hạ thấp quyền truy nhập của tiến trình

2.4 Xóa file an toàn

2.5 Hạn chế quyền truy nhập trên file |

2.6 Khóa file

2.7 Tạo file tạm

2.8 Hạn chế truy nhập đến hệ thống file

 

pdf 17 trang yennguyen 5860
Bạn đang xem tài liệu "Bài giảng Lập trình an toàn - Chương 2: Kiểm soát truy nhập - Lương Ánh Hoàng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình an toàn - Chương 2: Kiểm soát truy nhập - Lương Ánh Hoàng

Bài giảng Lập trình an toàn - Chương 2: Kiểm soát truy nhập - Lương Ánh Hoàng
Lương	
  Ánh	
  Hoàng	
  
hoangla@soict.hut.edu.vn	
  
Chương	
  2.	
  Kiểm	
  soát	
  truy	
  nhập	
  
Access	
  Control	
  
2.1	
  Cơ	
  chế	
  kiểm	
  soát	
  truy	
  nhập	
  trên	
  Unix/Linux	
  2.2	
  Cơ	
  chế	
  kiểm	
  soát	
  truy	
  nhập	
  trên	
  Windows	
  2.3	
  Hạ	
  thấp	
  quyền	
  truy	
  nhập	
  của	
  tiến	
  trình	
  2.4	
  Xóa	
  }ile	
  an	
  toàn	
  2.5	
  Hạn	
  chế	
  quyền	
  truy	
  nhập	
  trên	
  }ile	
  2.6	
  Khóa	
  }ile	
  2.7	
  Tạo	
  }ile	
  tạm	
  2.8	
  Hạn	
  chế	
  truy	
  nhập	
  đến	
  hệ	
  thống	
  }ile	
  	
  
Nội	
  dung	
  
30	
  
•  Trên	
  Unix/Linux	
  tất	
  cả	
  các	
  tài	
  nguyên	
  đều	
  được	
  coi	
  là	
  }ile:	
  tệp	
  tin,	
  ổ	
  đĩa,	
  bộ	
  nhớ,	
  thiết	
  bị.	
  
•  Mỗi	
  }ile	
  kiểm	
  soát	
  bởi	
  user	
  id	
  và	
  group	
  id.	
  
•  Mỗi	
  tiến	
  trình	
  có	
  ba	
  quyền:	
  effective	
  user	
  id,	
  real	
  user	
  id,	
  saved	
  user	
  id.	
  Effective	
  user	
  id	
  được	
  sử	
  dụng	
  trong	
  phần	
  lớn	
  các	
  kiểm	
  tra.	
  	
  
•  Mỗi	
  tiến	
  trình	
  cũng	
  thuộc	
  về	
  ba	
  nhóm:	
  effective	
  group	
  id,	
  real	
  group	
  id,	
  saved	
  group	
  id.	
  
•  Có	
  ba	
  loại	
  quyền	
  
•  Đọc	
  (read)	
  
•  Ghi	
  (write)	
  
•  Thực	
  thi	
  (execute)	
  
2.1	
  Cơ	
  chế	
  kiểm	
  soát	
  truy	
  nhập	
  trên	
  Unix/
Linux	
  
31	
  
•  Mỗi	
  }ile	
  sẽ	
  có	
  ba	
  nhóm	
  quyền	
  tương	
  ứng	
  với:	
  user	
  id,	
  group	
  id,	
  và	
  other.	
  
-­‐rwxr-­‐xr-­‐x	
  1	
   	
  Luong	
  Anh	
  Hoang	
   	
  None	
   	
  17964	
   	
  Aug	
  28	
  23:45	
  test.exe	
  
•  Khi	
  tiến	
  trình	
  tạo	
  một	
  }ile	
  hoặc	
  tài	
  nguyên,	
  hệ	
  thống	
  sẽ	
  gán	
  user	
  id	
  và	
  group	
  id	
  cho	
  }ile	
  mới	
  đó	
  bằng	
  effective	
  user	
  id	
  và	
  effective	
  group	
  id	
  của	
  tiến	
  trình.	
  
•  Khi	
  tiến	
  trình	
  truy	
  nhập	
  một	
  }ile	
  hoặc	
  tài	
  nguyên,	
  hệ	
  thống	
  sẽ	
  lần	
  lượt	
  so	
  sánh	
  user	
  id,	
  group	
  id	
  của	
  tiến	
  trình	
  và	
  }ile	
  và	
  chọn	
  ra	
  tập	
  quyền	
  tương	
  ứng.	
  Nếu	
  không	
  khớp	
  thì	
  lớp	
  quyền	
  thứ	
  3	
  sẽ	
  được	
  sử	
  dụng.	
  
2.1	
  Cơ	
  chế	
  kiểm	
  soát	
  truy	
  nhập	
  trên	
  Unix/
Linux	
  
32	
  
•  Mỗi	
  }ile	
  cũng	
  có	
  thể	
  có	
  3	
  bit	
  đặc	
  biệt	
  
•  Sticky.	
  Nếu	
  bit	
  này	
  được	
  thiết	
  lập,	
  người	
  dùng	
  sẽ	
  không	
  thể	
  xóa	
  hay	
  đổi	
  tên	
  }ile	
  của	
  người	
  khác	
  nằm	
  trong	
  thưc	
  mục	
  mà	
  người	
  dùng	
  quản	
  lý.	
  Mặc	
  định	
  là	
  không	
  được	
  thiết	
  lập.	
  
•  Setuid:	
  Bit	
  này	
  liên	
  quan	
  đến	
  quá	
  trình	
  tạo	
  một	
  tiến	
  trình	
  mới.	
  Nếu	
  bit	
  này	
  được	
  thiết	
  lập,	
  tiến	
  trình	
  được	
  tạo	
  từ	
  }ile	
  này	
  sẽ	
  không	
  kế	
  thừa	
  quyền	
  từ	
  tiến	
  trình	
  cha,	
  mà	
  sẽ	
  có	
  quyền	
  từ	
  user	
  id	
  của	
  chính	
  }ile	
  đó.	
  
•  Setgid:	
  	
  
•  Đối	
  với	
  }ile	
  thực	
  thi,	
  nếu	
  bit	
  này	
  được	
  thiết	
  lập	
  thì	
  một	
  tiến	
  trình	
  mới	
  được	
  tạo	
  sẽ	
  có	
  quyền	
  từ	
  groupd	
  id	
  của	
  }ile	
  đó	
  chứ	
  không	
  kế	
  thừa	
  từ	
  tiến	
  trình	
  cha	
  (tương	
  tự	
  Setuid).	
  
•  Đối	
  với	
  thưc	
  mục,	
  nếu	
  bit	
  này	
  được	
  thiết	
  lập	
  thì	
  các	
  }ile	
  tạo	
  trong	
  thư	
  mục	
  này	
  sẽ	
  có	
  groupd	
  id	
  của	
  thư	
  mục	
  cha,	
  chứ	
  không	
  kế	
  thừa	
  từ	
  tiến	
  trình	
  tạo	
  ra	
  }ile	
  đó.	
  
2.1	
  Cơ	
  chế	
  kiểm	
  soát	
  truy	
  nhập	
  trên	
  Unix/
Linux	
  
33	
  
•  Windows	
  sử	
  dụng	
  ACL:	
  Access	
  Control	
  List	
  để	
  phân	
  quyền	
  tài	
  nguyên.	
  
•  Các	
  tài	
  nguyên	
  của	
  Windows:	
  }ile,	
  registry,	
  mutex,	
  event,	
  IPC	
  được	
  kiểm	
  soát	
  thông	
  qua	
  DACL	
  và	
  SACL.	
  
•  DACL	
  là	
  danh	
  sách	
  các	
  ACE,	
  mỗi	
  ACE	
  là	
  một	
  luật	
  quy	
  định	
  một	
  quyền	
  hạn	
  cụ	
  thể.	
  
•  DACL	
  rỗng	
  tương	
  đương	
  với	
  việc	
  tất	
  cả	
  mọi	
  người	
  có	
  toàn	
  quyền	
  truy	
  nhập	
  tới	
  đối	
  tượng.	
  
•  Mỗi	
  ACE	
  bao	
  gồm	
  3	
  thông	
  tin:	
  	
  
•  SID:	
  Đại	
  diện	
  cho	
  một	
  user	
  hay	
  một	
  group	
  trong	
  hệ	
  thống	
  
•  Quyền	
  truy	
  nhập	
  
•  Giá	
  trị	
  boolean	
  tương	
  ứng	
  với	
  cho	
  phép	
  hay	
  không	
  cho	
  phép.	
  
2.2	
  Cơ	
  chế	
  kiểm	
  soát	
  truy	
  nhập	
  trên	
  
Windows	
  
34	
  
•  Các	
  quyền	
  truy	
  nhập	
  	
  
2.2	
  Cơ	
  chế	
  kiểm	
  soát	
  truy	
  nhập	
  trên	
  
Windows	
  
35	
  
TÊN	
   Diễn	
  giải	
  DELETE	
   The	
  ability	
  to	
  delete	
  the	
  object	
  READ_CONTROL	
   The	
  ability	
  to	
  read	
  the	
  object's	
  security	
  descriptor,	
  not	
  including	
  its	
  SACL	
  
SYNCHRONIZE	
   The	
  ability	
  for	
  a	
  thread	
  to	
  wait	
  for	
  the	
  object	
  to	
  be	
  put	
  into	
  the	
  signaled	
  state;	
  not	
  all	
  objects	
  support	
  this	
  functionality	
  WRITE_DAC	
   The	
  ability	
  to	
  modify	
  the	
  object's	
  DACL	
  WRITE_OWNER	
   The	
  ability	
  to	
  set	
  the	
  object's	
  owner	
  GENERIC_READ	
   The	
  ability	
  to	
  read	
  from	
  or	
  query	
  the	
  object	
  GENERIC_WRITE	
   The	
  ability	
  to	
  write	
  to	
  or	
  modify	
  the	
  object	
  GENERIC_EXECUTE	
   The	
  ability	
  to	
  execute	
  the	
  object	
  (applies	
  primarily	
  to	
  }iles)	
  GENERIC_ALL	
   Full	
  control	
  
•  Ví	
  dụ	
  ACE	
  
•  DENY	
  	
  	
  	
  	
  	
  GENERIC_ALL	
  	
  	
  	
  	
  	
  	
  	
  	
  Everyone:	
  Cấm	
  mọi	
  quyền	
  với	
  group	
  Everyone	
  
•  ALLOW	
  	
  GENERIC_WRITE	
  	
  	
  Marketing:	
  Cho	
  phép	
  nhóm	
  group	
  Marketing	
  được	
  quyền	
  ghi	
  
•  Mỗi	
  đối	
  tượng	
  đều	
  có	
  một	
  Owner,	
  chính	
  là	
  người	
  tạo	
  ra	
  đối	
  tượng.	
  
•  Owner	
  có	
  toàn	
  quyền	
  với	
  đối	
  tượng	
  bất	
  kể	
  trong	
  DACL	
  có	
  cấm	
  hay	
  không.	
  
•  Owner	
  có	
  thể	
  bị	
  chiếm	
  bởi	
  user	
  khác.	
  	
  
2.2	
  Cơ	
  chế	
  kiểm	
  soát	
  truy	
  nhập	
  trên	
  
Windows	
  
36	
  
•  Nếu	
  một	
  tiến	
  trình	
  có	
  đặc	
  quyền	
  cao,	
  thực	
  hiện	
  các	
  thao	
  tác	
  nguy	
  hiểm	
  =>	
  cần	
  hạ	
  thấp	
  quyền	
  trước	
  khi	
  thực	
  hiện.	
  
•  Tiến	
  trình	
  có	
  thể	
  kiểm	
  tra	
  real	
  user	
  id,	
  real	
  group	
  id	
  bằng	
  lệnh	
  getuid	
  (),	
  getgid().	
  Đây	
  là	
  các	
  đặc	
  quyền	
  kế	
  thừa	
  từ	
  tiến	
  trình	
  cha.	
  
•  Tiến	
  trình	
  có	
  thể	
  kiểm	
  tra	
  effective	
  user	
  id	
  và	
  effective	
  group	
  id	
  bằng	
  lệnh	
  geteuid()	
  và	
  getegid().	
  Đây	
  thường	
  là	
  user	
  id	
  có	
  đặc	
  quyền	
  cao	
  hơn	
  (do	
  được	
  khởi	
  chạy	
  từ	
  super	
  user,	
  hoặc	
  các	
  bit	
  setuid	
  được	
  bật).	
  
•  Tiến	
  trình	
  từ	
  bỏ	
  đặc	
  quyền	
  bằng	
  việc	
  thiết	
  lập	
  group	
  mới	
  chính	
  là	
  real	
  user	
  id	
  qua	
  lệnh	
  	
  
•  setgroups():	
  Thiết	
  lập	
  lại	
  nhóm	
  của	
  tiến	
  trình.	
  	
  
•  setegid():	
  Thiết	
  lập	
  lại	
  effective	
  group	
  id	
  của	
  tiến	
  trình.	
  
•  seteuid():	
  Thiết	
  lập	
  lại	
  effective	
  user	
  id	
  của	
  tiến	
  trình.	
  	
  
2.3	
  Hạ	
  thấp	
  quyền	
  truy	
  nhập	
  của	
  tiến	
  trình	
  
37	
  
•  Thông	
  thường,	
  một	
  }ile	
  sau	
  khi	
  xóa	
  sẽ	
  được	
  hệ	
  điều	
  hành	
  đánh	
  dấu	
  là	
  xóa,	
  nội	
  dung	
  chưa	
  hoàn	
  toàn	
  bị	
  loại	
  bỏ	
  trên	
  đĩa.	
  
•  Giải	
  pháp	
  
•  Ghi	
  đè	
  thông	
  tin	
  khác	
  nhiều	
  lần	
  lên	
  đĩa.	
  
•  Ghi	
  đè	
  dữ	
  liệu	
  ngâu	
  nhiên	
  nhiều	
  lần	
  lên	
  đĩa.	
  
•  Ghi	
  đè	
  sử	
  dụng	
  mẫu	
  định	
  sẵn	
  lên	
  đĩa.	
  
•  Sau	
  mỗi	
  chu	
  kỳ	
  ghi,	
  sử	
  dụng	
  fsync	
  để	
  đồng	
  bộ	
  với	
  đĩa,	
  vô	
  hiệu	
  hóa	
  cơ	
  chế	
  cache.	
  Hoặc	
  lệnh	
  f}lush()	
  nếu	
  sử	
  dụng	
  thư	
  viện	
  C.	
  
•  Một	
  vài	
  mẫu	
  được	
  sử	
  dụng	
  
•  static	
  unsigned	
  char	
  single_pats[16]	
  =	
  {	
  0x00,	
  0x11,	
  0x22,	
  0x33,	
  0x44,	
  0x55,	
  0x66,	
  0x77,	
  0x88,	
  0x99,	
  0xaa,	
  0xbb,	
  0xcc,	
  0xdd,	
  0xee,	
  0xff	
  };	
  	
  
•  static	
  unsigned	
  char	
  triple_pats[6][3]	
  =	
  {	
  {	
  0x92,	
  0x49,	
  0x24	
  },	
  {	
  0x49,	
  0x24,	
  0x92	
  },	
  {	
  0x24,	
  0x92,	
  0x49	
  },	
  {	
  0x6d,	
  0xb6,	
  0xdb	
  },	
  {	
  0xb6,	
  0xdb,	
  0x6d	
  },	
  {	
  0xdb,	
  0x6d,	
  0xb6	
  }	
  };	
  	
  	
  
2.4	
  Xóa	
  qile	
  an	
  toàn	
  
38	
  
•  Unix/Linux	
  sử	
  dụng	
  umask	
  cho	
  mỗi	
  tiến	
  trình	
  để	
  vô	
  hiệu	
  hóa	
  một	
  vài	
  bit	
  khi	
  tiến	
  trình	
  tạo	
  }ile.	
  
•  Hàm	
  fopen,	
  open	
  luôn	
  luôn	
  tạo	
  }ile	
  với	
  quyền	
  666.	
  
•  Giả	
  sử	
  tiến	
  trình	
  muốn	
  tạo	
  }ile	
  với	
  quyền	
  666:	
  
requested_permissions	
  =	
  0666;	
  	
  
actual_permissions	
  =	
  requested_permissions	
  &	
  ~umask(	
  );	
  
•  Ứng	
  dụng	
  thay	
  đổi	
  umask	
  bằng	
  hàm	
  umask()	
  trước	
  khi	
  thực	
  hiện	
  lời	
  gọi	
  tạo	
  }ile.	
  
#include	
  	
  
#include	
  	
  	
  
mode_t	
   	
  umask(mode_t	
   	
  mask);	
  	
  	
  
2.5	
  Hạn	
  chế	
  quyền	
  truy	
  nhập	
  trên	
  qile	
  
39	
  
•  Tiến	
  trình	
  muốn	
  kiểm	
  soát	
  truy	
  nhập	
  trên	
  một	
  phần	
  của	
  }ile	
  hay	
  toàn	
  bộ	
  }ile	
  để	
  tránh	
  xung	
  đột	
  khi	
  có	
  nhiều	
  tiến	
  trình	
  cùng	
  truy	
  	
  nhập	
  trên	
  }ile.	
  
•  Unix/Linux	
  cung	
  cấp	
  cơ	
  chế	
  khóa	
  mềm:	
  Mọi	
  tiến	
  trình	
  đều	
  có	
  quyền	
  giành	
  được	
  khóa	
  và	
  thao	
  tác	
  trên	
  }ile,	
  tuy	
  nhiên	
  không	
  phải	
  tiến	
  trình	
  nào	
  cũng	
  tuân	
  thủ	
  theo	
  khóa	
  và	
  có	
  thể	
  phá	
  hỏng	
  dữ	
  liệu	
  của	
  tiến	
  trình	
  khác.	
  
•  Windows	
  thực	
  hiện	
  vấn	
  đề	
  này	
  tốt	
  hơn	
  bằng	
  khóa	
  cứng.	
  Có	
  hai	
  loại	
  khóa:	
  
•  Shared	
  Lock:	
  Cho	
  phép	
  các	
  tiến	
  trình	
  khác	
  (kể	
  cả	
  tiến	
  trình	
  giành	
  được	
  khóa)	
  đọc	
  nhưng	
  không	
  được	
  ghi	
  vào	
  một	
  phần	
  đã	
  khóa	
  của	
  }ile.	
  	
  
•  Exclusive	
  Lock	
  :	
  Cấm	
  tất	
  cả	
  các	
  tiến	
  trình	
  khác	
  không	
  được	
  đọc	
  hay	
  ghi	
  vào	
  phần	
  đã	
  khóa	
  của	
  }ile.	
  Tiến	
  trình	
  giành	
  được	
  khóa	
  có	
  quyền	
  đọc	
  hoặc	
  ghi	
  vào	
  }ile.	
  	
  
2.6	
  Khóa	
  qile	
  
40	
  
•  Các	
  hàm	
  khóa	
  }ile	
  trên	
  Windows	
  
•  LockFile,	
  UnlockFile:	
  Khóa	
  và	
  mở	
  khóa	
  đồng	
  bộ,	
  sẽ	
  không	
  trở	
  về	
  đến	
  khi	
  giành	
  được	
  khóa	
  hoặc	
  mở	
  được	
  khóa.	
  
•  LockFileEx,	
  UnlockFileEx:	
  Khóa	
  và	
  mở	
  khóa	
  đồng	
  bộ	
  hoặc	
  bất	
  đồng	
  bộ.	
  
•  Khóa	
  }ile	
  cũng	
  có	
  thể	
  xác	
  định	
  lúc	
  tạo	
  lập/truy	
  nhập	
  }ile	
  thông	
  qua	
  hàm	
  CreateFile.	
  
•  Đoạn	
  chương	
  trình	
  sau	
  sẽ	
  mở	
  một	
  }ile	
  để	
  đọc	
  với	
  chế	
  độ	
  Shared	
  Lock.	
  	
  char 	
  buff[1024];	
  
	
  DWORD 	
  bytesRead	
  =	
  0;	
  
	
  HANDLE 	
  fileHandle	
  =	
  NULL;	
  
	
  fileHandle	
  =	
  CreateFile(L"C:\\SecureProgramming\\Test.txt",	
  
	
   	
   	
   	
  GENERIC_READ|GENERIC_WRITE,	
  
	
   	
   	
   	
  FILE_SHARE_READ|FILE_SHARE_WRITE,	
  
	
   	
   	
   	
  0,	
  
	
   	
   	
   	
  OPEN_ALWAYS,	
  
	
   	
   	
   	
  FILE_ATTRIBUTE_NORMAL,	
  
	
   	
   	
   	
  0);	
  	
  	
  
2.6	
  Khóa	
  qile	
  
41	
  
•  VD	
  (tiếp)	
  	
  ReadFile(fileHandle,buff,128,&bytesRead,0);	
  
	
  buff[bytesRead]	
  =	
  0;	
  
	
  printf("File	
  content:%s\n",buff);	
  
	
  LockFile(fileHandle,0,0,100,0); 	
  //	
  Exclusive	
  Lock	
  
	
  printf("File	
  is	
  locked,	
  press	
  any	
  key	
  to	
  unlock...\n"); 	
  	
  
	
  getch();	
  
	
  UnlockFile(fileHandle,0,0,100,0);	
  
	
  printf("File	
  is	
  unlocked\n");	
  
	
  getch();	
  
	
  CloseHandle(fileHandle);	
  	
  	
  
2.6	
  Khóa	
  qile	
  
42	
  
•  Ứng	
  dụng	
  tạo	
  }ile	
  tạm	
  để	
  lưu	
  trữ	
  thông	
  tin	
  tạm	
  thời	
  của	
  chương	
  trình.	
  
•  File	
  tạm	
  nên	
  được	
  tạo	
  lập	
  một	
  cách	
  an	
  toàn,	
  và	
  xóa	
  khi	
  kết	
  thúc	
  chương	
  trình.	
  
•  Trên	
  unix/linux:	
  
•  Hàm	
  mkstemp()	
  có	
  thể	
  sử	
  dụng	
  để	
  tạo	
  }ile	
  tạm	
  với	
  tên	
  ngẫu	
  nhiên.	
  
•  Ứng	
  dụng	
  cần	
  xóa	
  }ile	
  theo	
  tên,	
  ngay	
  sau	
  lời	
  gọi	
  mkstemp	
  để	
  đảm	
  bảo	
  không	
  tiến	
  trình	
  nào	
  truy	
  nhập	
  được.	
  
•  Sau	
  khi	
  tiến	
  trình	
  kết	
  thúc	
  một	
  cách	
  bình	
  thường/không	
  bình	
  thường,	
  }ile	
  tạm	
  sẽ	
  không	
  thể	
  truy	
  nhập	
  được	
  nữa.	
  
•  VD	
  	
  char	
  	
  szPath[]	
  =	
  “fileXXXXXX";	
  
	
  int	
  fd; 	
  	
  
	
  fd	
  =	
  mkstemp(szPath);	
  
	
  unlink(szPath);	
  
	
  printf("Temperary	
  file	
  created,	
  press	
  any	
  key	
  to	
  continue...");	
  
	
  write(fd,"Hello",5);	
  
	
  close(fd);	
  
2.7	
  Tạo	
  qile	
  tạm	
  
43	
  
•  Trên	
  Windows:	
  
•  Không	
  có	
  hàm	
  tương	
  đương	
  mkstemp()	
  
•  GetTempFileName()	
  sinh	
  tên	
  }ile	
  ngẫu	
  nhiên	
  nhưng	
  dễ	
  đoán.	
  
•  GetTempPath()	
  lấy	
  đường	
  dẫn	
  đến	
  thư	
  mục	
  tạm	
  của	
  người	
  dùng	
  hiện	
  tại.	
  
•  Tạo	
  }ile	
  bằng	
  hàm	
  CreateFile	
  với	
  hai	
  thuộc	
  tính	
  FILE_ATTRIBUTE_TEMPORARY	
  và	
  FILE_FLAG_DELETE_ON_CLOSE	
  
•  VD	
  HANDLE 	
  }ileHandle	
  =	
  NULL;	
  }ileHandle	
  =	
  CreateFile(L"C:\\SecureProgramming\\Tmp.txt",	
  	
   	
  GENERIC_READ|GENERIC_WRITE,	
  	
   	
  FILE_SHARE_READ|FILE_SHARE_WRITE,	
  	
   	
  0,	
  	
   	
  OPEN_ALWAYS, 	
   	
  	
  	
  FILE_ATTRIBUTE_TEMPORARY|	
  	
  FILE_FLAG_DELETE_ON_CLOSE,	
  	
   	
   	
   	
  0);	
  	
  	
  	
  	
  	
  	
  	
  	
  
2.7	
  Tạo	
  qile	
  tạm	
  
44	
  
•  Trên	
  Unix/Linux,	
  ứng	
  dụng	
  có	
  thể	
  tự	
  giới	
  hạn	
  phạm	
  vi	
  truy	
  nhập	
  hệ	
  thống	
  tệp	
  tin	
  của	
  mình	
  bằng	
  lệnh	
  chroot()	
  
•  Sau	
  khi	
  gọi	
  chroot():	
  
•  Tiến	
  trình	
  không	
  thể	
  mở	
  rộng	
  phạm	
  vi	
  truy	
  nhập	
  bằng	
  lệnh	
  chroot	
  lần	
  nữa..	
  
•  Tiến	
  trình	
  chỉ	
  có	
  thể	
  thu	
  hẹp	
  hơn	
  nữa	
  phạm	
  vi	
  truy	
  nhập	
  của	
  mình.	
  
•  Tiến	
  trình	
  phải	
  chủ	
  động	
  gọi	
  thêm	
  chdir()	
  để	
  lệnh	
  chroot	
  có	
  hiệu	
  lực.	
  
•  VD:	
  	
  #include	
  	
  
	
  chroot("/new/root/directory");	
  
	
  chdir("/");	
  
2.8	
  Hạn	
  chế	
  truy	
  nhập	
  đến	
  hệ	
  thống	
  qile	
  
45	
  

File đính kèm:

  • pdfbai_giang_lap_trinhantoan_chuong_2_kiem_soat_truy_nhap_luong.pdf