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ó băm password mới:
dn: olcDatabase={1}hdb,cn=config olcRootDN: cn=admin,dc=example,dc=com olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3
Băm 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 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 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 sử dụ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
với 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