mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
Import the upstream lens for the shadow file, just with a different identifier and not matching /etc/shadow by default. Instead, apply a transformation to have it match /etc/shadow only if the version of augeas is at least 1.2.1 [1]. [1] While the last upstream version is 1.2.0, all the development seems to happen in master, so whatever the next version is going to be numbered (e.g. 1.2.1 or 1.3.0), the check will be fine anyway.
73 lines
2.1 KiB
Plaintext
73 lines
2.1 KiB
Plaintext
(*
|
|
Module: Shadow
|
|
Parses /etc/shadow
|
|
|
|
Author: Lorenzo M. Catucci <catucci@ccd.uniroma2.it>
|
|
|
|
Original Author: Free Ekanayaka <free@64studio.com>
|
|
|
|
About: Reference
|
|
|
|
- man 5 shadow
|
|
- man 3 getspnam
|
|
|
|
About: License
|
|
This file is licensed under the LGPL v2+, like the rest of Augeas.
|
|
|
|
About:
|
|
|
|
Each line in the shadow files represents the additional shadow-defined attributes
|
|
for the corresponding user, as defined in the passwd file.
|
|
|
|
*)
|
|
|
|
module Guestfs_Shadow =
|
|
|
|
autoload xfm
|
|
|
|
(************************************************************************
|
|
* USEFUL PRIMITIVES
|
|
*************************************************************************)
|
|
|
|
let eol = Util.eol
|
|
let comment = Util.comment
|
|
let empty = Util.empty
|
|
let dels = Util.del_str
|
|
|
|
let colon = Sep.colon
|
|
|
|
let word = Rx.word
|
|
let integer = Rx.integer
|
|
|
|
let sto_to_col = Passwd.sto_to_col
|
|
let sto_to_eol = Passwd.sto_to_eol
|
|
|
|
(************************************************************************
|
|
* Group: ENTRIES
|
|
*************************************************************************)
|
|
|
|
(* View: entry *)
|
|
let entry = [ key word
|
|
. colon
|
|
. [ label "password" . sto_to_col? . colon ]
|
|
. [ label "lastchange_date" . store integer? . colon ]
|
|
. [ label "minage_days" . store integer? . colon ]
|
|
. [ label "maxage_days" . store integer? . colon ]
|
|
. [ label "warn_days" . store integer? . colon ]
|
|
. [ label "inactive_days" . store integer? . colon ]
|
|
. [ label "expire_date" . store integer? . colon ]
|
|
. [ label "flag" . store integer? ]
|
|
. eol ]
|
|
|
|
(************************************************************************
|
|
* LENS
|
|
*************************************************************************)
|
|
|
|
let lns = (comment|empty|entry) *
|
|
|
|
let filter
|
|
= incl "/shadow"
|
|
. Util.stdexcl
|
|
|
|
let xfm = transform lns filter
|