Công cụ quản lý LDAP tích hợp trong hệ thống
Sau khi cài đặt OpenLDAP, các công cụ quản lý phía client thường được lưu tại thư mục /usr/local/bin/. Người dùng có thể tra cứu thông tin sử dụng bằng lệnh man hoặc tham số --help. Tuy nhiên, do đầu ra của man quá dài, nên việc dùng --help là lựa chọn hiệu quả hơn.
Truy vấn dữ liệu
ldapsearch
Công cụ này dùng để tìm kiếm thông tin trong cơ sở dữ liệu LDAP. Cú pháp cơ bản:
ldapsearch [tùy chọn] [lọc] [trường]
Ví dụ đơn giản:
# Sau khi khởi động
ldapsearch -x -LLL -b '' -s base '(objectclass=*)' namingContexts
# Sau khi thêm entry gốc
ldapsearch -x -LLL -b 'dc=example,dc=com' '(objectclass=*)'
Các tùy chọn phổ biến:
-x: Sử dụng xác thực đơn giản (simple bind)-LLL: Dạng xuất tối giản, loại bỏ chú thích-b: Đặt điểm bắt đầu tìm kiếm-s: Phạm vi tìm kiếm:base,one,subhoặcchildren-H: Chỉ định địa chỉ máy chủ (mặc định là localhost qua giao thức ldap)
Phần lọc tuân theo chuẩn RFC 4515. Các trường kết quả có thể là danh sách riêng lẻ, dùng * để hiển thị tất cả, hoặc + để hiện thị các thuộc tính tùy chọn:
ldapsearch -x -LLL -b 'dc=example,dc=com' '(objectclass=*)' +
ldapwhoami
Dùng để kiểm tra danh tính người dùng đang đăng nhập:
# Xác thực đơn giản
ldapwhoami -x
# Kết quả trả về
anonymous
# Với DN và mật khẩu
ldapwhoami -x -w 123456 -D cn=Manager,dc=example,dc=com
# Kết quả:
dn:cn=Manager,dc=example,dc=com
# Sai mật khẩu hoặc DN sẽ báo lỗi:
ldap_bind: Invalid credentials (49)
Khác biệt giữa -w (nhập mật khẩu trực tiếp) và -W (nhập mật khẩu tương tác).
Thao tác chỉnh sửa dữ liệu
Thêm mới entry
Quy trình gồm hai bước: soạn file LDIF, sau đó tải lên LDAP.
Tạo file add_group.ldif:
dn: ou=group,dc=example,dc=com
objectclass: organizationalUnit
ou: group
Thực thi lệnh:
ldapadd -x -W -D "cn=Manager,dc=example,dc=com" -f add_group.ldif
Kết quả mong đợi:
adding new entry "ou=group,dc=example,dc=com"
Để kiểm tra, dùng:
ldapsearch -x -LLL -b 'dc=example,dc=com' '(objectclass=*)'
Chỉnh sửa thuộc tính
Thao tác chỉnh sửa chia thành ba loại: thêm, cập nhật, xóa thuộc tính. Lưu ý: chỉ áp dụng cho thuộc tính tùy chọn, không thể thay đổi ou hay dn.
Thêm thuộc tính – Tạo file edit_group.ldif:
dn: ou=group,dc=example,dc=com
changetype: modify
add: description
description: I'm first description!
Thực hiện:
ldapmodify -x -W -D "cn=Manager,dc=example,dc=com" -f edit_group.ldif
Kết quả:
modifying entry "ou=group,dc=example,dc=com"
Cập nhật thuộc tính – Sửa lại file:
dn: ou=group,dc=example,dc=com
changetype: modify
replace: description
description: I'm second description!
Chạy lại lệnh ldapmodify, kiểm tra kết quả bằng ldapsearch.
Xóa thuộc tính – Chỉnh sửa file:
dn: ou=group,dc=example,dc=com
changetype: modify
delete: description
Chạy lệnh, kiểm tra lại: thuộc tính description đã bị xóa.
Tổng quan về thao tác sửa
Mọi thao tác sửa đều cần:
dn: Xác định đối tượng cần sửachangetype: modify: Bắt buộc phải khai báoadd,replace,delete: Hành động muốn thực hiện- Giá trị thuộc tính (trừ hành động xóa)
Xóa entry hoàn toàn
Để xóa một entry (và các entry con nếu cần), dùng ldapdelete với tùy chọn -r để xóa đệ quy.
Tạo file add_sub_group.ldif:
dn: ou=tsd,ou=group,dc=example,dc=com
objectclass: organizationalUnit
ou: tsd
Thêm vào hệ thống:
ldapadd -x -W -D "cn=Manager,dc=example,dc=com" -f add_sub_group.ldif
Xóa:
ldapdelete -x -W -D "cn=Manager,dc=example,dc=com" -r ou=tsd,ou=group,dc=example,dc=com
Lệnh không trả về kết quả rõ ràng, nhưng sau khi kiểm tra lại bằng ldapsearch, entry đã biến mất.
Chế độ hỗ trợ nhiều giao thức
Người dùng có thể nhận thấy sự khác biệt giữa cách dùng -x -W và cách phổ biến trên mạng là -Q -Y EXTERNAL -H ldapi://.
Thử nghiệm:
ldapsearch -LLL -Q -Y EXTERNAL -H ldapi:// -b 'ou=group,dc=example,dc=com'
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
Lỗi xảy ra vì dịch vụ slapd chưa được cấu hình lắng nghe trên giao thức ldapi://.
Giải pháp: Khởi động lại slapd với cấu hình đầy đủ:
/usr/local/libexec/slapd -F /usr/local/etc/slapd.d -h "ldap:/// ldapi:/// "
Sau đó thử lại:
ldapsearch -x -LLL -H ldapi:// -b 'ou=group,dc=example,dc=com'
ldapsearch -Q -Y EXTERNAL -LLL -H ldapi:// -b 'ou=group,dc=example,dc=com'
Loại trừ quyền truy cập
Thử dùng SASL để thêm entry:
ldapadd -Q -Y EXTERNAL -H ldapi:// -f add_sub_group.ldif
Kết quả lỗi:
adding new entry "ou=tsd,ou=group,dc=example,dc=com"
ldap_add: Insufficient access (50)
additional info: no write access to parent
Lỗi này liên quan đến cấu hình quyền hạn trong file cấu hình slapd.d. Vấn đề sẽ được giải quyết ở phần tiếp theo.
Link tải file cấu hình tham khảo: Tải cấu hình OpenLDAP