Thứ sáu, 29/05/2015 | 00:00 GMT+7

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ờ -a cho 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ờ -a sẽ 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ờ -s sẽ 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:

RootDN và RootPW cho DIT
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 :

~ / newpasswd.ldif
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:

~ / newpasswd.ldif
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:

~ / newpasswd.ldif
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.


Tags:

Các tin liên quan

Cách thay đổi mật khẩu tài khoản trên server OpenLDAP
2015-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