|
Packit |
06dd63 |
(*
|
|
Packit |
06dd63 |
Module: Gshadow
|
|
Packit |
06dd63 |
Parses /etc/gshadow
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
Author: Lorenzo M. Catucci <catucci@ccd.uniroma2.it>
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
Original Author: Free Ekanayaka <free@64studio.com>
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
About: Reference
|
|
Packit |
06dd63 |
- man 5 gshadow
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
About: License
|
|
Packit |
06dd63 |
This file is licensed under the LGPL v2+, like the rest of Augeas.
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
About:
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
Each line in the gshadow files represents the additional shadow-defined
|
|
Packit |
06dd63 |
attributes for the corresponding group, as defined in the group file.
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
*)
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
module Gshadow =
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
autoload xfm
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
(************************************************************************
|
|
Packit |
06dd63 |
* USEFUL PRIMITIVES
|
|
Packit |
06dd63 |
*************************************************************************)
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
let eol = Util.eol
|
|
Packit |
06dd63 |
let comment = Util.comment
|
|
Packit |
06dd63 |
let empty = Util.empty
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
let colon = Sep.colon
|
|
Packit |
06dd63 |
let comma = Sep.comma
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
let sto_to_spc = store Rx.space_in
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
let word = Rx.word
|
|
Packit |
06dd63 |
let password = /[A-Za-z0-9_.!*-]*/
|
|
Packit |
06dd63 |
let integer = Rx.integer
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
(************************************************************************
|
|
Packit |
06dd63 |
* Group: ENTRIES
|
|
Packit |
06dd63 |
*************************************************************************)
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
(* View: member *)
|
|
Packit |
06dd63 |
let member = [ label "member" . store word ]
|
|
Packit |
06dd63 |
(* View: member_list
|
|
Packit |
06dd63 |
the member list is a comma separated list of
|
|
Packit |
06dd63 |
users allowed to chgrp to the group without
|
|
Packit |
06dd63 |
being prompted for the group's password *)
|
|
Packit |
06dd63 |
let member_list = Build.opt_list member comma
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
(* View: admin *)
|
|
Packit |
06dd63 |
let admin = [ label "admin" . store word ]
|
|
Packit |
06dd63 |
(* View: admin_list
|
|
Packit |
06dd63 |
the admin_list is a comma separated list of
|
|
Packit |
06dd63 |
users allowed to change the group's password
|
|
Packit |
06dd63 |
and the member_list *)
|
|
Packit |
06dd63 |
let admin_list = Build.opt_list admin comma
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
(* View: params *)
|
|
Packit |
06dd63 |
let params = [ label "password" . store password . colon ]
|
|
Packit |
06dd63 |
. admin_list? . colon
|
|
Packit |
06dd63 |
. member_list?
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
let entry = Build.key_value_line word colon params
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
(************************************************************************
|
|
Packit |
06dd63 |
* LENS
|
|
Packit |
06dd63 |
*************************************************************************)
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
let lns = (comment|empty|entry) *
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
let filter
|
|
Packit |
06dd63 |
= incl "/etc/gshadow"
|
|
Packit |
06dd63 |
. Util.stdexcl
|
|
Packit |
06dd63 |
|
|
Packit |
06dd63 |
let xfm = transform lns filter
|