16 releases

Uses old Rust 2015

0.5.5 Jun 28, 2024
0.5.4 Feb 9, 2024
0.5.3 Sep 1, 2023
0.5.2 May 2, 2022
0.1.0 Jun 25, 2017

#154 in Authentication

Download history 43/week @ 2024-09-18 69/week @ 2024-09-25 204/week @ 2024-10-02 177/week @ 2024-10-09 226/week @ 2024-10-16 214/week @ 2024-10-23 150/week @ 2024-10-30 160/week @ 2024-11-06 36/week @ 2024-11-13 51/week @ 2024-11-20 80/week @ 2024-11-27 83/week @ 2024-12-04 214/week @ 2024-12-11 128/week @ 2024-12-18 62/week @ 2024-12-25 111/week @ 2025-01-01

528 downloads per month
Used in shavee_pam

GPL-3.0 license

31KB
550 lines

PAM SM

Crates.io version shield Crates.io license shield

Rust FFI wrapper to implement PAM service modules for Linux.

Documentation - Cargo - Repository

Features

This crate supports the following optional features:

  • libpam: this enables the extension trait PamLibExt and linking against libpam.so for its native implementation.

lib.rs:

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);

Dependencies

~110KB