Cách thay đổi mật khẩu tài khoản trên server OpenLDAP
Hệ thống LDAP thường được sử dụng để lưu trữ thông tin account user . Trên thực tế, một số phương pháp xác thực LDAP phổ biến nhất liên quan đến thông tin account được lưu trữ trong các mục nhập LDAP.Cho dù các mục nhập LDAP của bạn được sử dụng bởi các dịch vụ bên ngoài cho thông tin account hay chỉ được sử dụng cho các ràng buộc ủy quyền dành riêng cho LDAP, việc quản lý password trở nên quan trọng cần hiểu. Trong hướng dẫn này, ta sẽ nói về cách sửa đổi password của mục nhập LDAP.
Thay đổi password user của bạn
Khả năng thay đổi password được quản lý bởi các điều khiển truy cập cho server LDAP. Thông thường, LDAP được cấu hình để cho phép các account có khả năng thay đổi password của chính họ. Điều này hoạt động tốt nếu bạn, với quyền là user , biết password trước đó của bạn .
  Ta  có thể sử dụng công cụ ldappasswd để sửa đổi password  account   user . Để thay đổi password   của bạn , bạn cần phải liên kết với mục nhập  user  LDAP và xác thực bằng password  hiện tại. Điều này tuân theo cú pháp chung giống như các công cụ OpenLDAP khác.
Ta sẽ phải cung cấp một số đối số ngoài các đối số ràng buộc thông thường để thay đổi password . Bạn nên chỉ định password cũ bằng một trong các tùy chọn sau:
-  -a [oldpassword]password cũ-a [oldpassword]: Cờ-acho phép bạn cung cấp password cũ như một phần của yêu cầu trên dòng lệnh.
-  -A: Cờ này là một thay thế cho cờ-asẽ nhắc bạn nhập password cũ khi nhập lệnh.
-  -t [oldpasswordfile]: Cờ này được dùng thay vì ở trên để đọc password cũ từ file .
Bạn cũng cần chỉ định password mới bằng một trong các tùy chọn sau:
-  -s [newpassword]: Cờ-sđược sử dụng để cung cấp password mới trên dòng lệnh.
-  -S: Biến thể này của cờ-ssẽ nhắc bạn nhập password mới khi nhập lệnh.
-  -T [newpasswordfile]: Cờ này được dùng thay vì ở trên để đọc password mới từ một file .
Sử dụng một tùy chọn từ mỗi group , cùng với các tùy chọn thông thường để chỉ định vị trí server , mục nhập liên kết và password , bạn có thể thay đổi password LDAP của bạn . Về mặt kỹ thuật, OpenLDAP không phải lúc nào cũng cần password cũ vì nó được sử dụng để liên kết với mục nhập, nhưng các triển khai LDAP khác yêu cầu điều này, vì vậy tốt nhất là bạn nên đặt bằng bất kỳ cách nào.
Thông thường, lệnh sẽ trông giống như sau:
- ldappasswd -H ldap://server_domain_or_IP -x -D "user_dn" -W -A -S 
Thao tác này sẽ kết nối với server LDAP được chỉ định, xác thực với mục nhập DN của user , sau đó đưa ra một loạt dấu nhắc . Bạn cần cung cấp và xác nhận password cũ, password mới, sau đó bạn cần cung cấp lại password cũ để ràng buộc thực sự diễn ra. Sau đó, password của bạn sẽ thay đổi.
Vì bạn sẽ thay đổi password của bạn , có thể dễ dàng hơn nếu bạn cung cấp password cũ trên dòng lệnh thay vì thông qua dấu nhắc . Bạn có thể làm như thế này:
- ldappasswd -H ldap://server_domain_or_IP -x -D "user's_dn" -w old_passwd -a old_passwd -S 
Thay đổi password của user bằng RootDN Bind
 Công cụ ldappasswd cũng cho phép bạn thay đổi password  của  user  khác nếu cần  với quyền  là  administrator  LDAP. Về mặt kỹ thuật, bạn có thể ràng buộc với bất kỳ account  nào có quyền truy cập ghi vào password  của account , nhưng quyền truy cập này thường bị giới hạn ở mục nhập rootDN (quản trị) và chính account .
Để thay đổi password của user khác, bạn cần liên kết với một mục nhập có quyền nâng cao và sau đó chỉ định mục nhập bạn muốn thay đổi. Thông thường, bạn sẽ bị ràng buộc với rootDN (xem phần tiếp theo nếu bạn cần tìm hiểu cách tìm account này).
 Lệnh ldappasswd cơ bản sẽ trông rất giống nhau, điểm khác biệt duy nhất là bạn phải chỉ định mục nhập để thay đổi ở cuối lệnh. Bạn có thể sử dụng tùy chọn -a hoặc -A nếu  bạn có  password  cũ, nhưng trường hợp này thường không xảy ra khi thay đổi password  cho  user . Nếu bạn không có password  cũ, chỉ cần bỏ nó đi.
 Ví dụ: nếu rootDN cho  server  LDAP của bạn là cn=admin,dc=example,dc=com và password  bạn muốn thay đổi là cho mục nhập uid=bob,ou=people,dc=example,dc=com , bạn có thể gõ cái này:
- ldappasswd -H ldap://server_domain_or_IP -x -D "cn=admin,dc=example,dc=com" -W -S "uid=bob,ou=people,dc=example,dc=com" 
Bạn sẽ được yêu cầu nhập password mới của Bob và sau đó bạn sẽ được yêu cầu nhập password cần thiết để liên kết với mục nhập quản trị để thực hiện thay đổi.
Thay đổi password RootDN
 Trong trường hợp bạn quên password  quản trị LDAP  của bạn , bạn cần có quyền truy cập root hoặc sudo trên  server  của hệ thống LDAP để đặt lại password  đó. Đăng nhập vào  server  của bạn để bắt đầu.
Tìm thông tin RootDN hiện tại
 Đầu tiên, bạn sẽ phải tìm account  RootDN và băm password  RootDN hiện tại. Điều này có sẵn trong cn=config hình cn=config đặc biệt DIT.  Ta  có thể tìm thấy thông tin mà  ta  đang tìm kiếm  bằng lệnh :
- sudo ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW | tee ~/newpasswd.ldif 
Thao tác này sẽ trả lại account rootDN và password cho DIT của bạn. Nó cũng sẽ cho bạn biết database cấu hình nơi điều này được xác định. Ta cũng đã ghi thông tin này vào một file trong folder chính của ta để ta có thể sửa đổi nó khi ta có hàm băm password mới:
dn: olcDatabase={1}hdb,cn=config olcRootDN: cn=admin,dc=example,dc=com olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3 Bắn password mới
 Tiếp theo,  ta  có thể  sử dụng trình  slappasswd để băm một password  mới.  Ta  muốn sử dụng cùng một hàm băm trong dòng olcRootPW mà  ta  đã truy vấn, được chỉ ra bởi giá trị có tiền tố bằng dấu ngoặc nhọn. Trong trường hợp của  ta , đây là {SSHA} .
  Sử dụng trình  slappasswd để tạo hàm băm chính xác cho password  mà  ta  muốn sử dụng.  Ta  sẽ thêm hàm băm mới  của bạn  vào cuối file  mà  ta  đã tạo bằng lệnh cuối cùng. Bạn  cần  chỉ định đường dẫn đầy đủ đến lệnh nếu bạn đang sử dụng account  không phải root:
- /usr/sbin/slappasswd -h {SSHA} >> ~/newpasswd.ldif 
Bạn sẽ được yêu cầu nhập và xác nhận password mới mà bạn muốn sử dụng. Giá trị băm sẽ được thêm vào cuối file của ta .
Thay đổi password trong cấu hình DIT
Bây giờ, ta có thể chỉnh sửa file để tạo một lệnh LDIF hợp lệ để thay đổi password . Mở file ta đã viết:
nano ~/newpasswd.ldif Nó trông giống như sau :
dn: olcDatabase={1}hdb,cn=config olcRootDN: cn=admin,dc=example,dc=com olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3  {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw Bạn có thể có nhiều giá trị tùy thuộc vào việc  server  LDAP của bạn có nhiều hơn một DIT hay không. Nếu đúng như vậy, hãy sử dụng giá trị olcRootDN để tìm đúng account  mà bạn muốn sửa đổi. Xóa các bộ ba dn , olcRootDN , olcRootPW nếu có.
 Sau khi bạn  xác nhận  dòng olcRootDN  trùng với  account  bạn đang cố gắng sửa đổi, hãy  comment . Bên dưới nó,  ta  sẽ thêm hai dòng. Dòng đầu tiên phải chỉ định changetype: modify và dòng thứ hai sẽ cho LDAP biết rằng bạn đang cố gắng replace: olcRootPW . Nó sẽ trông giống thế này:
dn: olcDatabase={1}hdb,cn=config #olcRootDN: cn=admin,dc=example,dc=com changetype: modify replace: olcRootPW olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3  {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw Bây giờ, hãy xóa hàm băm trong dòng olcRootPW và thay thế nó bằng mã bạn đã tạo bên dưới. Loại bỏ mọi dòng không liên quan. Bây giờ nó sẽ trông như thế này:
dn: olcDatabase={1}hdb,cn=config #olcRootDN: cn=admin,dc=example,dc=com changetype: modify replace: olcRootPW olcRootPW: {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw Lưu file khi bạn hoàn tất.
Bây giờ, ta có thể áp dụng thay đổi bằng lệnh :
- sudo ldapmodify -H ldapi:// -Y EXTERNAL -f ~/newpasswd.ldif 
Điều này sẽ thay đổi password  quản trị trong cn=config DIT.
Thay đổi password trong DIT thông thường
Điều này đã thay đổi password cho mục nhập trong DIT quản trị. Tuy nhiên, ta vẫn cần sửa đổi mục nhập trong DIT thông thường. Hiện tại, cả password cũ và mới đều hợp lệ. Ta có thể khắc phục điều này bằng cách sửa đổi mục nhập DIT thông thường bằng thông tin đăng nhập mới của ta .
Mở lại file LDIF:
- nano ~/newpasswd.ldif 
Thay thế giá trị trong dòng dn: bằng giá trị RootDN mà bạn đã  comment  trước đó. Mục này là mục tiêu mới của  ta  cho việc thay đổi password .  Ta  cũng  cần  thay đổi cả hai lần xuất hiện của olcRootPW bằng userPassword để  ta  đang sửa đổi giá trị chính xác. Khi bạn hoàn tất, file  LDIF sẽ giống như sau:
[output ~/newpasswd.ldif] dn: cn=admin,dc=example,dc=com changetype: modify replace: userPassword userPassword: {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw Lưu và đóng file .
Bây giờ, ta có thể sửa đổi password cho mục nhập đó bằng cách liên kết với nó bằng password mới mà ta đã đặt trong cấu hình DIT. Bạn cần phải liên kết với mục nhập RootDN để thực hiện thao tác:
- ldapmodify -H ldap:// -x -D "cn=admin,dc=example,dc=com" -W -f ~/newpasswd.ldif 
Bạn sẽ được yêu cầu nhập password mới mà bạn đã đặt trong cấu hình DIT. Sau khi xác thực, password sẽ được thay đổi, chỉ để lại password mới cho mục đích xác thực.
Kết luận
LDAP thường được sử dụng để lưu trữ thông tin account , vì vậy điều quan trọng là phải biết cách quản lý password đúng cách. Hầu hết thời gian quá trình này tương đối đơn giản, nhưng đối với các hoạt động chuyên sâu hơn, bạn vẫn có thể sửa đổi password với một chút thao tác.
Các tin liên quan
Cách thay đổi mật khẩu tài khoản trên server OpenLDAP2015-05-29
Cách chạy mail server và lưu trữ tệp của riêng bạn với PEPS trên Ubuntu 14.04
2015-05-22
Cách chạy mail server của riêng bạn với Mail-in-a-Box trên Ubuntu 14.04
2015-05-15
Thiết lập server ban đầu với Debian 8
2015-05-11
Cách thiết lập server Hexxit (Minecraft Mod Pack) trên Ubuntu 14.04
2015-05-07
Cách cấu hình BIND làm server DNS Mạng riêng trên CentOS 7
2015-04-29
Cách cấu hình BIND làm server DNS Mạng riêng trên CentOS 7
2015-04-29
Cách cài đặt server Bacula trên CentOS 7
2015-04-15
Cách cài đặt Bacula Server trên Ubuntu 14.04
2015-04-09
Thiết lập ban đầu của server Fedora 21
2015-03-31
 

