Có thể thay đổi tệp cơ sở dữ liệu mật khẩu (/ etc / passwd) trong linux không?


8

Có thể thay đổi tệp cơ sở dữ liệu mật khẩu ( /etc/passwd) sang một số tệp khác. Làm thế nào để cơ chế xác thực này hoạt động nội bộ? Có phụ thuộc vào pam?


4
Chỉ muốn chỉ ra rằng mặc dù tên của nó, /etc/passwdtrên thực tế không chứa mật khẩu thực tế hoặc thậm chí là băm - mật khẩu bị che khuất đã là một tiêu chuẩn thực tế kể từ trước khi tôi bắt đầu sử dụng unix hai thập kỷ trước.
Shadur

Câu trả lời:


7

Bạn nói đúng: /etc/passwd/etc/shadowđược tư vấn bởi pam_unix.so, đó là một phần của PAM. Ít nhất là trên các Linux hiện đại. Bạn có thể thay đổi điều này bằng cách vá pam_unix.so. Nếu trang chủ được tin tưởng, bạn không thể thay đổi vị trí của cơ sở dữ liệu hệ thống.

Và bạn thực sự không muốn. /etc/passwdkhông chỉ được sử dụng để xác thực, nó cũng được sử dụng cho độ phân giải tên (đảo ngược) và để tìm kiếm những thứ như tên đầy đủ của người dùng, shell, et cetera. Tên và vị trí được chuẩn hóa đến mức việc di chuyển chúng gần như chắc chắn sẽ phá vỡ mọi thứ bên ngoài chỉ PAM. Bạn sẽ phải vá nhiều hơn bạn mặc cả.

Cập nhật: Nếu bạn đang cố gắng ẩn các /etc/{passwd,shadow,group}tệp để bảo mật, đừng lo lắng về nó. Bảo mật bằng cách tối nghĩa hiếm khi giúp như một chính sách. Để chúng ở nơi chúng đang ở và thắt chặt phần còn lại của chính sách của bạn.

Cập nhật: một giải pháp khả thi

Nếu bạn có một số phần mềm tùy chỉnh bạn cần truy cập vào một bộ cơ sở dữ liệu người dùng / nhóm khác nhau, bạn có thể tạo một bản sao của các mô-đun PAM và NSS có liên quan và vá chúng để sử dụng cơ sở dữ liệu tùy chỉnh của bạn. Các cơ sở dữ liệu unix ban đầu ở nơi chúng không bị lẫn lộn, nhưng bạn có thể đặt PAM và NSS để sử dụng các mô-đun tùy chỉnh của mình bất cứ nơi nào bạn cần và sử dụng bất kỳ chính sách nào có ý nghĩa với bạn.

Giữ cơ sở dữ liệu unix về cơ bản nguyên sơ và bạn có những gì bạn yêu cầu. Đây là khá nhiều những gì các mô-đun radiusldapPAM / NSS làm: chúng cung cấp một nguồn thông tin bổ sung (không thay thế) và thông tin người dùng / nhóm.

Đi thêm một bước nữa: bạn có thể quay lại PAM và NSS và vô hiệu hóa hoàn toàn việc tra cứu cơ sở dữ liệu unix. Để các tệp ở đó cho phần mềm cũ (một cách tự nhiên, quan điểm của họ về cơ sở dữ liệu người dùng / nhóm sẽ không chính xác, nhưng ít nhất họ sẽ không phá vỡ).


1
Phân giải tên và uid: khớp tên đang được thực hiện bởi nss subsytem, ​​đây cũng là mô-đun (= dễ hack). Nhưng bạn đã đúng một phần với nó - nó có thể phá vỡ một số tập lệnh đọc / etc / passwd trực tiếp thay vì sử dụng libnss.
rvs

1
Tính mô-đun được hoan nghênh nhưng không quan trọng: điều đó có nghĩa là bạn có nhiều mã hơn để vá và rất nhiều phần mềm (đặc biệt là mã cũ hơn) có thể đi thẳng vào các tệp. Điều này làm cho một trường hợp xấu nhất khá khó chịu.
Alexios

Nó cũng có thể được xử lý bởi bóng cũ hơn, vì không phải ai cũng bị buộc phải sử dụng pam.
lynxlynxlynx

6

Những gì bạn đang tìm kiếm là các pam_pwdfilemô-đun. Trên Debian / Ubuntu gói là libpam-pwdfile(không chắc chắn về các bản phát hành có nguồn gốc RedHat).

Các READMEkèm với gói giải thích làm thế nào để sử dụng nó.


2

Tôi không chắc liệu nó có thể ra khỏi hộp không, nhưng chắc chắn là có thể với một số hack. Để làm điều này, bạn sẽ cần:

  1. Điều chỉnh / hack thư viện nsswitch (/lib/libnss_files.so hoặc libnss_db.so - kiểm tra /etc/nsswitch.conf của bạn) để nó đọc một số tệp khác.
  2. Điều chỉnh / hack mô-đun pam_unix để nó đọc một số tệp khác.

5
3. dành phần còn lại của hệ thống đó để đối phó với sự phá vỡ thỉnh thoảng của những thứ ngẫu nhiên khác dự kiến /etc/passwdtồn tại ...
Shadur

1

Sử dụng NIS hoặc LDAP để xác thực người dùng của bạn. Mật khẩu của họ sẽ không được lưu trữ trong (các) tập tin / etc / {password / bóng}.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.