Expand description
PAM Service Module wrappers
§Usage
For example, here is a time based authentication module :
#[macro_use] extern crate pamsm;
extern crate time;
use pamsm::{PamServiceModule, Pam, PamFlags, PamError};
struct PamTime;
impl PamServiceModule for PamTime {
fn authenticate(pamh: Pam, _: PamFlags, args: Vec<String>) -> PamError {
let hour = time::OffsetDateTime::now_utc().hour();
if hour != 4 {
// Only allow authentication when it's 4 AM
PamError::SUCCESS
} else {
PamError::AUTH_ERR
}
}
}
pam_module!(PamTime);
Macros§
- pam_
module - Define entrypoints for the PAM module.
Structs§
- Pam
- Opaque PAM handle, with additional native methods available via
PamLibExt
. - PamFlags
- PamSend
Ref - This sendable reference to
Pam
can be created viaPam::as_send_ref
orFrom
/Into
.
Enums§
Traits§
- PamData
- Trait to implement for data stored with pam using
PamLibExt::send_data
in order to provide a cleanup callback. - PamLib
Ext - Extension trait over
Pam
, usually provided by thelibpam
shared library. - PamService
Module - Default service module implementation. All default functions return SERVICE_ERR. You can override functions depending on what kind of module you implement. See the respective pam_sm_* man pages for documentation.
Type Aliases§
- PamCleanup
Cb - Prototype of the callback used with
PamLibExt::send_bytes
- PamResult