Expand description
Simplified PAM module creation in Rust.
use pam::constants::{PamFlag, PamResultCode};
use pam::module::{PamHandle, PamHooks};
use std::ffi::CStr;
struct AliceOnly;
pam::pam_hooks!(AliceOnly);
impl PamHooks for AliceOnly {
fn sm_authenticate(pamh: &mut PamHandle, _args: Vec<&CStr>, _flags: PamFlag) -> PamResultCode {
let username = match pamh.get_user(None) {
Ok(username) => username,
Err(e) => {
eprintln!("failed to get username, error code: {e:?}");
return e;
}
};
match username.as_str() {
"alice" => PamResultCode::PAM_SUCCESS,
_ => PamResultCode::PAM_AUTH_ERR,
}
}
}§Introduction
The Pluggable Authentication Modules (PAM) framework enables systems to authenticate users and perform other functions by composing PAM modules, which are distributed as shared libraries.
The goal of this library is to provide a simple, type-safe API to write these modules.
Modules§
- constants
- conv
- items
- module
- Functions for use in pam modules.
- secret
- Owned, zeroize-on-drop containers for sensitive byte material.