1. Giới thiệu:
Samba là chƣơng trình tiện ích hỗ trợ việc chia sẻ tài nguyên cho những máy khác nhƣ Linux, Windows.
Phần mềm Samba gồm nhiều thành phần. Daemon mang tên smbd cung cấp dịch vụ in ấn và tập tin. Tập tin cấu hình của Daemon này là smb.conf, còn daemon nmbd thì hỗ trợ dịch vụ tên NETBIOS.
2. Cài đặt:
Chúng ta có thể cài đặt Samba trong quá trình cài CentOS hoặc cài sau bằng tiện ích RPM. Các tập tin cài đặt bao gồm:
Samba-3.0.33-3.14.el5.i386.rpm Samba-client-3.0.33-3.14.el5.i386.rpm Samba-common-3.0.33-3.14.el5.i386.rpm System-config-samba Samba-swat Khởi tạo dịch vụ:
Khởi tạo dịch vụ tại thời điểm hệ thống khởi động
Khởi tạo dịch vụ thông qua lệnh
# service smb start|stop|restart
Kiểm tra hoạt động của dịch vụ Samba
# pgrep smb
Cấu hình samba:
/etc/samba/smb.conf: là tập tin cấu hình chính của Samba. Tập tin này có nhiều phần, mỗi phần bắt đầu bằng dấu […] và tiếp tục đến bắt đầu của phần mới.
Cú pháp của mỗi dòng: Paramater = value.
Các thành phần trong tập tin cấu hình chính
Thành phần Giải thích
[global] Chứa các tham số cấu hình chung của Samba server
[printers] Chứa các tham số sử dụng cho việc cấu hình máy in.
[home] Chỉ định SMB chia sẻ thƣ mục home directory của user.
[netlogon] Chia sẻ logon script.
[profile] Chia sẻ profile
Đoạn [global]
workgroup = MYGROUP; chỉ ra nhóm mà máy sẽ tham gia. server string = Samba Server; chỉ tên dịch vụ
hosts allow = 172.31.0.1 173.31.0.3; chỉ định các địa chỉ đƣợc phép truy cập đến samba server.
guest account = pcguest; cung cấp username cho 1 account khách trên server. Account này nhận diện những user đƣợc dùng dịch vụ samba dành cho khách. log file = /var/log/samba/smb.%m; xác định vị trí tập tin log của từng client truy cập samba.
max log size = 50; kích thƣớc tối đa của tập tin log (KB). encrypt password = yes; mã hóa mật khẩu.
smb passwd file = /etc/samba/smbpasswd; tập tin lƣu trữ những user đƣợc phép truy cập đến server smb.
Đoạn [homes]
comment = Home Directory; chỉ định dòng chú thích. path = %H; chỉ định thƣ mục gốc cho user.
read only = no; chỉ đƣợc quyền đọc trong thƣ mục path.
valid users = %S; chỉ định tên user đƣợc phép truy xuất. Nếu ta cho phép group ta dùng cú pháp @group_name hoặc + group_name
browseable = no; hiển thị trên danh sách duyệt mạng. writeable = yes; chỉ định quyền ghi.
create mask = 0750; kiểm tra xem trong số những tập tin tạo ra trong thƣ mục chia sẻ, thì tập tin nào đƣợc phép làm gì.
Đoạn [printers]
comment = All Printer path = /var/spool/samba browseable = no
public = yes guest ok = no writable = no
printable = yes ; cho phép in. create mask = 0700
Chia sẻ thƣ mục [dirshare] [soft]
comment = “chia sẻ thƣ mục” path = /usr/local/share
valid users = tuandq browseable = yes public = no writable = yes
Đoạn trên đã tạo ra một thƣ mục chia sẻ mang tên soft, ánh xạ đến thƣ mục /usr/local/share.
Samba SWAT:
Samba SWAT là công cụ cho phép cấu hình Samba qua giao diện Web. Tập tin cấu hình Samba SWAT:
Thiết lập một số thông số trong tập tin /etc/xinetd.d/swat
service swat { disable = no port = 901 socket_type = stream wait = no only_from = 172.31.0.0/24 user = root server = /usr/sbin/swat log_on_failure += USERID }
Truy xuất SWAT từ Internet Explorer:
- Từ trình duyệt Web, truy xuất SMB SWAT thông qua địa chỉ http://<IP- Samba-Server>:<Port>
- Ví dụ: http://172.31.0.1:901
Hình 28: Đăng nhập samba thành công
Cấu hình samba swat:
Thành phần Giải thích
Cung cấp các tài liệu tham khảo về Samba.
Quản lý thông tin cấu hình.
Quản lý tài nguyên chia sẻ.
Quản lý việc chia sẻ máy in.
Quản lý Server Type, Wins và các tham số khác.
Quản lý trạng thái SAMBA, theo dõi connection.
Xem các thông tin cấu hình trong file smb.conf
Sử dụng samba client:
Từ dấu nhắc lệnh, sử dụng smbclient để truy xuất thƣ mục chia sẻ trên SMB Server theo cú pháp sau:
$smbclient <//SMB_Server/Sharename><option> <user>
Ví dụ: #smbclient //samba-svr/data -U tuandq Password:
smb: \>
Từ dấu nhắc smb: \>, có thể ra bất kỳ lệnh nào để truy xuất tài nguyên.
Mount tài nguyên:
Ta có thể ánh xạ một thƣ mục chia sẻ trên Samba Server vào ổ đĩa cục thông qua lệnh smbmount.
Cú pháp :
#mount –t smbfs <//Server/Sharename> <mount_point> -o
username=<user>,password=<pass>
Ví dụ : #mount –t smbfs //smb_server/data /mnt/smb -o username=tuandq,password=123456
Mount tự động:
Để tự động mount một tài nguyên chia sẻ ta thực hiện các bƣớc sau: Bƣớc 1: tạo thƣ mục mount_point (Ví dụ: /mnt/smb)
Bƣớc 2: mô tả dòng lệnh trong tập tin /etc/fstab
//SMB_Server/ShareName /mnt/smb smbfs credential=/etc/cred 0 0
Bƣớc 3: tạo tập tin /etc/cred để lƣu thông tin username và mật khẩu usermane = <username>
password = <password>
Bƣớc 4: dùng lệnh mount –a để update tập tin /etc/fstab và kiểm tra.
Mã hóa mật khẩu:
Tạo ra mật khẩu của ngƣời dùng riêng cho samba server quản lý. Các bƣớc tạo mật khẩu
Bƣớc 1: Tạo một tập tin mật khẩu riêng cho Samba
#cat /etc/passwd | mksmbpasswd.sh >/etc/samba/smbpasswd
Bƣớc 2: Cấp quyền đọc ghi cho root và cấp mật khẩu cho user
#chmod 600 /etc/samba/smbpasswd #smbpasswd <username>
Bƣớc 3: Chỉnh tập tin smb.conf
encrypt passwd = yes
smb passwd file = /etc/samba/smbpasswd
CHƢƠNG IV: CƠ SỞ LÝ THUYẾT LDAP I. Giới thiệu về LDAP:
1. Khái niệm cơ bản:
Thƣ mục (Directory): là nơi dùng để chứa và cho phép thực hiện các thao tác truy xuất thông tin.
Nghi thức truy cập thƣ mục (LDAP):
LDAP (Lightweight Directory Access Protocol) là một chuẩn mở rộng cho nghi thức truy cập thƣ mục, hay là một ngôn ngữ để LDAP client và severs sử dụng để giao tiếp với nhau.
LDAP là một nghi thức “lightweight ” có nghĩa là đây là một giao thức có tính hiệu quả, đơn giản và dể dàng để cài đặt. trong khi chúng sử dụng các hàm ở mức cao. Điều này trái ngƣợc với nghi thức “heavyweight” nhƣ là nghi thức truy cập thƣ mục X.500 (DAP). Nghi thức này sử dụng các phƣơng thức mã hoá quá phức tạp.
LDAP sử dụng các tập các phƣơng thức đơn giản và là một nghi thức thuộc tầng ứng dụng.
LDAP đã phát triển với phiên bản LDAP v2 đƣợc định nghĩa trong chuẩn RFC 1777 và 1778, LDAP v3 là một phần trong chuẩn Internet, đƣợc định nghĩa trong RFC 2251 cho đến RFC 2256, do chúng quá mới nên không phải tất cả mọi thứ các nhà cung cấp hổ trợ hoàn toàn cho LDAP v3.
Ngoài vai trò nhƣ là một thủ tục mạng, LDAP còn định nghĩa ra bốn mô hình, các mô hình này cho phép linh động trong việc sắp đặt các thƣ mục:
Mô hình LDAP information - định nghĩa ra các loại dữ liệu mà bạn cần đặt vào thƣ mục.
Mô hình LDAP Naming - định nghĩa ra cách bạn sắp xếp và tham chiếu đến thƣ mục.
Mô hình LDAP Functional - định nghĩa cách mà bạn truy cập và cập nhật thông tin trong thƣ mục của bạn.
Mô hình LDAP Security - định nghĩa ra cách thông tin trong trong thƣ mục của bạn đƣợc bảo vệ tránh các truy cập không đƣợc phép.
Ngoài các mô hình ra LDAP còn định nghĩa ra khuôn dạng để trao đổi dữ liệu LDIF (LDAP Data Interchange Format), ở dạng thức văn bản dùng để mô tả thông tin về thƣ mục. LDIF còn có thể mô tả một tập hợp các thƣ mục hay các cập nhật có thể đƣợc áp dụng trên thƣ mục.
II.Phƣơng thức hoạt động của LDAP:
1. Một nghi thức client/sever:
Là một mô hình giao thức giữa một chƣơng trình client chạy trên một máy tính gởi một yêu cầu qua mạng đến cho một máy tính khác đang chạy một chƣơng trình sever (phục vụ), chƣơng trình này nhận lấy yêu cầu và thực hiện sau đó nó trả lại kết quả cho chƣơng trình client. Ví dụ những nghi thức client/server khác là nghi thức truyền siêu văn bản (Hypertext transfer protocol ) viết tắt là HTTP, nghi thức này có những ứng dụng rộng rãi phục vụ những trang web và nghi thức Internet Message Access Protocol (IMAP), là một nghi thức sử dụng để truy cập đến các thƣ thông báo điện tử.
Ý tƣởng cơ bản của nghi thức client/server là công việc đƣợc gán cho những máy tính đã đƣợc tối ƣu hoá để làm thực hiện công việc đó. Ví dụ tiêu biểu cho một máy server LDAP có rất nhiều RAM(bô nhớ) dùng để lƣu trữ nội dung các thƣ mục cho các thao tác thực thi nhanh và máy này cũng cần đĩa cứng và các bộ vi sử lý ở tốc độ cao.
2. LDAP Là một nghi thức hƣớng thông điệp:
Do client và sever giao tiếp thông qua các thông điệp, Client tạo một thông điệp (LDAP message) chứa yêu cầu và gởi nó đến cho server. Server nhận đƣợc thông điệp và sử lý yêu cầu của client sau đó gởi trả cho client cũng bằng một thông điệp LDAP.
Ví dụ: khi LDAP client muốn tìm kiếm trên thƣ mục, client tạo LDAP tìm kiếm và gởi thông điệp cho server. Sever tìm trong cơ sở dữ liệu và gởi kết quả cho client trong một thông điệp LDAP.
Hình 29: Thao tác tìm kiếm cơ bản
Nếu client tìm kiếm thƣ mục và nhiều kết quả đƣợc tìm thấy, thì các kết quả này đƣợc gởi đến client bằng nhiều thông điệp.
Hình 30: Những thông điệp Client gửi cho Server
Do nghi thức LDAP là nghi thức thông điệp nên, client đƣợc phép phát ra nhiều thông điệp yêu cầu đồng thời cùng một lúc. Trong LDAP, message ID dùng để phân biệt các yêu cầu của client và kết quả trả về của server.
Việc cho phép nhiều thông điệp cùng xử lý đồng thời làm cho LDAP linh động hơn các nghi thức khác ví dụ nhƣ HTTP, với mỗi yêu cầu từ client phải đƣợc trả lời trƣớc khi một yêu cầu khác đƣợc gởi đi, một HTTP client program nhƣ là Web browser muốn tải xuống cùng lúc nhiều file thì Web browser phải thực hiện mở từng kết nối cho từng file, LDAP thực hiện theo cách hoàn toàn khác, quản lý tất cả thao tác trên một kết nối.
3. Các thao tác của nghi thức LDAP:
LDAP có 9 thao tác cơ bản, chia thành 3 nhóm thao tác chính:
Thao tác thẩm tra (interrogation) : search, compare. Hai thao tác này cho phép chúng ta thực hiện thẩm tra trên thƣ mục.
Thao tác cập nhật (update): add, delete, modify, modify DN ( rename ). Những thao tác này cho phép chúng ta thực hiện cập nhật thông tin trên thƣ mục.
Thao tác xác thực và điều kiển(authentiaction and control) : bind, unbind, abandon. Thao tác bind cho phép client tự xác định đƣợc mình với thƣ mục, thao tác này cung cấp sự xác nhận và xác thực chứng thƣ; unbind cho phép client huỷ bỏ phân đoạn làm việc hiện hành; và cuối cùng là thao tác abandon cho phép client chỉ ra các thao tác mà kết quả client không còn quan tâm đến nữa.
4. Các thao tác mở rộng:
Ngoài 9 thao tác cơ bản. LDAP version 3 đƣợc thiết kế mở rộng thông qua 3 thao tác.
Thao tác mở rộng LDAP(LDAP extended operations) – đây là một nghi thức thao tác mới. Trong tƣơng lai nếu cần một thao tác mới, thì thao tác này có thể định nghĩa và trở thành chuẩn mà không yêu cầu ta phải xây dựng lại các thành phần cốt lõi của LDAP. Ví dụ một thao tác mở rộng là StarTLS, nghĩa là báo cho sever rằng client muốn sử dụng transport layer security(TLS) để mã hoá và tuỳ chọn cách xác thực khi kết nối. LDAP control - Những phần của thông tin kèm theo cùng với các thao tác LDAP, thay đổi hành vi của thao tác trên cùng một đối tƣợng.
Xác thực đơn giản và tầng bảo mật (Simple Authentication and Security Layer SASL) là một mô hình hổ trợ cho nhiều phƣơng thức xác thực. Bằng cách sử dụng mô hình
xác thực mới khác, SASL còn hổ trợ một mô hình cho client và server có thể đàm phán trên hệ thống bảo mật diển ra ở các tầng thấp(dẫn đến độ an toàn cao). Mặt dù nhƣ vậy nhƣng các mô hình này của SASL đều thích nghi với các nghi thức của internet.
5. Mô hình kết nối Client – Server:
Sau đây là một là một tiến trình hoạt động trao đổi giữa LDAP client/server:
Hình 32: Mô hình kết nối giữa client và server
LDAP client và server thực hiện theo các bƣớc sau:
Client mở một kết nối TCP đến LDAP server và thực hiện một thao tác bind. Thao tác bind bao gồm tên của một directory entry ,và uỷ nhiệm thƣ sẽ đƣợc sử dụng trong quá trình xác thực, uỷ nhiệm thƣ thông thƣờng là pasword nhƣng cũng có thể là chứng chỉ điện tử dùng để xác thực client.
Sau khi thƣ mục có đƣợc sự xác định của thao tác bind, kết quả của hao tác bind đƣợc trả về cho client.
Client phát ra các yêu cầu tìm kiếm.
Server thực hiện sử lý và trả về kết quả cho client. Server thực hiện sử lý và trả về kết quả cho client. Server gởi thông điệp kết thúc việc tìm kiếm.
Client phát ra yêu cầu unbind, với yêu cầu này server biết rằng client muốn huỷ bỏ kết nối.
III. Các mô hình LDAP
LDAP định nghĩa ra 4 mô hình gồm có LDAP informmation, LDAP Naming, LDAP Functional, LDAP Security.
1. LDAP Information Model:
Mô hình LDAP Information định nghĩa ra các kiểu của dữ liệu và các thành phần cơ bản của thông tin mà bạn có thể chứa trong thƣ mục. Hay chúng ta có thể nói rằng LDAP Information mô tả cách xây dựng ra các khối dữ liệu mà chúng ta có thể sử dụng để tạo ra thƣ mục.
Thành phần cơ bản của thông tin trong một thƣ mục gọi là entry đây là một tập hợp chứa các thông tin về đối tƣợng (Object). Thƣờng thì các thông tin trong một entry mô tả một đối tƣợng thật nhƣ là thông tin về ngƣời, nhƣng đây không phải là qui định bắt buộc với mô hình. Ví dụ nhƣ trên thƣ mục dƣới đây.
Một entry là tập hợp của các thuộc tính, từng thuộc tính này mô tả một nét đặt trƣng tiêu biểu của một đối tƣợng. Mỗi thuộc tính có kiểu một hay nhiều giá trị, kiểu của thuộc tính mô tả loại thông tin đƣợc chứa, giá trị là dữ liệu thực sự.
Ví dụ một entry mô tả một ngƣời với các thuộc tính: tên họ, tên, số điện thoại, và địa chỉ email.
Atrribute type Atrribute values
cn : Barbara jensen Bads jensen
sn : jensen
telephone number : +1 408 555 1212
mail : bads@arius.com
LDAP Data Interchange Format (LDIF):
LDAP định nghĩa ra LDIF là dạng văn bản để mô tả thông tin thƣ mục. LDIF có thể mô tả một tập hợp các entry thƣ mục hay là tập hợp các cập nhật lên thƣ mục dữ liệu của các thƣ mục có thể trao đổi cho nhau bằng cách dùng LDIF
Ví dụ thông tin thƣ mục ở dạng văn bản LDIF, đây là dạng chuẩn dành cho việc nhập và xuất thông tin trên thƣ mục, và các tập tin LDIF đều ở dạng ASCII điều này làm cho chúng dễ dàng chuyền tải trên hệ thống email.
Một entry thƣ mục ở dang LDIF:
dn:uid=bjensen,dc=airius,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: Barbara Jensen cn: Babs Jensen sn: Jensen mail:bjensen@airius.com telephoneNumber:+14085551212 description: A big sailing fan.
Dạng một entry LDIF bao gồm nhiều dòng, đầu tiên là distinguished name (dn) là tên của entry thƣ mục tất cả đƣợc viết trên một dòng, sau đó lần lƣợt là các thuộc tính của entry, mỗi thuộc tính trên một dòng theo thứ tự là: kiểu thuộc tính : giá trị thuộc tính.
Thứ tự các thuộc tính không quan trọng tuy nhiên để dễ đọc đƣợc thông tin chúng ta nên đặt các giá trị objectclass trƣớc tiên và nên làm sao cho các giá trị của các thuộc tính cùng kiểu ở gần nhau.
KiểuThuộc tính dữ liệu qui định, mô tả dữ liệu đƣợc đặt vào và cách thƣ mục so sánh giá trị khi dò tìm. Ví dụ nhƣ cú pháp caseIgnoreString: qui định trong trong một ngữ cảnh nào đó thì chúng ta xem nhƣ nhau và không cần thực hiện so sánh nhƣ là Tom và