Mercurial > crates > nonstick
comparison src/lib.rs @ 60:05cc2c27334f
The Big Refactor: clean up docs and exports.
- Brings the most important symbols in the library to the root
with `pub use` statements.
- Expands and updates documentation.
- Rearranges things extensively to make the external interface nicer
and make the structure easier to understand.
- Renames a few things (e.g. `Result`).
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Wed, 21 May 2025 19:00:51 -0400 |
parents | 2a5c83d04b93 |
children | d83623951070 |
comparison
equal
deleted
inserted
replaced
59:3f4a77aa88be | 60:05cc2c27334f |
---|---|
1 //! Interface to the pluggable authentication module framework (PAM). | 1 //! A safe, nonstick interface to PAM. |
2 //! | 2 //! |
3 //! The goal of this library is to provide a type-safe API that can be used to | 3 //! This implements a type-safe library to interact with PAM. |
4 //! interact with PAM. The library is incomplete - currently it supports | 4 //! Currently, it implements the subset of PAM useful for implementing a module. |
5 //! a subset of functions for use in a pam authentication module. A pam module | |
6 //! is a shared library that is invoked to authenticate a user, or to perform | |
7 //! other functions. | |
8 //! | 5 //! |
9 //! For general information on writing pam modules, see | 6 //! To write a new PAM module using this crate: |
7 //! | |
8 //! 1. Create a `dylib` crate. | |
9 //! 2. Implement a subset of the functions in the [PamModule] trait | |
10 //! corresponding to what you want your module to do. | |
11 //! In the simplest case (for a password-authentication system), | |
12 //! this will be the [PamModule::sm_authenticate] function. | |
13 //! 3. Export your PAM module using the [pam_hooks!] macro. | |
14 //! 4. Build and install the dynamic library. | |
15 //! This usually entails placing it at | |
16 //! `/usr/lib/security/pam_your_module.so`, | |
17 //! or maybe | |
18 //! <code>/usr/lib/<var>your-architecture</var>/security/pam_your_module.so</code>. | |
19 //! | |
20 //! For general information on writing PAM modules, see | |
10 //! [The Linux-PAM Module Writers' Guide][module-guide] | 21 //! [The Linux-PAM Module Writers' Guide][module-guide] |
11 //! | 22 //! |
12 //! [module-guide]: https://www.chiark.greenend.org.uk/doc/libpam-doc/html/Linux-PAM_MWG.html | 23 //! [module-guide]: https://www.chiark.greenend.org.uk/doc/libpam-doc/html/Linux-PAM_MWG.html |
13 //! | |
14 //! A typical authentication module will define an external function called | |
15 //! `pam_sm_authenticate()`, which will use functions in this library to | |
16 //! interrogate the program that requested authentication for more information, | |
17 //! and to render a result. | |
18 //! | |
19 //! Note that constants that are normally read from pam header files are | |
20 //! hard-coded in the `constants` module. The values there are taken from | |
21 //! a Linux system. That means that it might take some work to get this library | |
22 //! to work on other platforms. | |
23 | |
24 extern crate libc; | |
25 | 24 |
26 pub mod constants; | 25 pub mod constants; |
27 pub mod conv; | 26 pub mod conv; |
28 pub mod items; | 27 pub mod items; |
29 #[doc(hidden)] | |
30 pub mod macros; | |
31 pub mod module; | 28 pub mod module; |
29 | |
30 mod memory; | |
31 mod pam_ffi; | |
32 | |
33 #[doc(inline)] | |
34 pub use crate::{ | |
35 constants::{ErrorCode, Flags, MessageStyle, Result}, | |
36 conv::Conversation, | |
37 module::{PamHandle, PamModule}, | |
38 }; |