PAM stack state table

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



(Previously sent before I joined - oops! - so, this topic should be new, but if it is redundant, please excuse me.)

Hi All,

I'm a hardware engineer and a computer architect, but a Linux newbie. I have a development contribution, if only to the man pages.

Background: I find some Linux man pages frustrating. I'm sure I'm not alone. Any logical process translated to English can introduce vagaries. But to just point people to .c and .h files puts a tremendous learning burden on them. I think I have a good way to portray PAM stacks. Please send me your opinions and corrections.

(Note: I included this in a message to Nalin Dahyabhai - with some errors - regarding pam_stack.so, so if you're reading this, Mr. Dahyabhai, you're off the hook if you choose to be.-)

The more I read the pam(5) man page the less I know for sure. So, being a hardware engineer, I prepared the following state table.


  prev.module-output   this.module          this.module-output   stack-output
  -------------------  -------------------  -------------------  ------------------
01: <prev.value>=bad     <this.value>=bad     <prev.value>=bad     (to be determined)  # could become <some.value>=die
02: <prev.value>=bad     <this.value>=die     <this.value>=die     <this.value>=die
03: <prev.value>=bad     <this.value>=done    <prev.value>=bad     (to be determined)  # could become <some.value>=die
04: <prev.value>=bad     <this.value>=ignore  <prev.value>=bad     (to be determined)  # could become <some.value>=die
05: <prev.value>=bad     <this.value>=ok      <prev.value>=bad     (to be determined)  # could become <some.value>=die
06: <prev.value>=bad     <this.value>=reset   (indeterminate)      (to be determined)  # could become <some.value>=bad, =die, =done, =ignore, or =ok

07: <prev.value>=die     (skipped)            <prev.value>=die     <prev.value>=die

08: <prev.value>=done    (skipped)            <prev.value>=done    <prev.value>=done

09: <prev.value>=ignore  <this.value>=bad     <this.value>=bad     (to be determined)  # could become <some.value>=die
10: <prev.value>=ignore  <this.value>=die     <this.value>=die     <this.value>=die
11: <prev.value>=ignore  <this.value>=done    <this.value>=done    <this.value>=done
12: <prev.value>=ignore  <this.value>=ignore  <this.value>=ignore  (to be determined)  # could become <some.value>=bad, =die, =done, or =ok
13: <prev.value>=ignore  <this.value>=ok      <this.value>=ok      (to be determined)  # could become <some.value>=bad or =die (or =done?)
14: <prev.value>=ignore  <this.value>=reset   (indeterminate)      (to be determined)  # could become <some.value>=bad, =die, =done, =ignore, or =ok

15: <prev.value>=ok      <this.value>=bad     <this.value>=bad     (to be determined)  # could become <some.value>=die
16: <prev.value>=ok      <this.value>=die     <this.value>=die     <this.value>=die
17: <prev.value>=ok      <this.value>=done    <this.value>=done    <this.value>=done
18: <prev.value>=ok      <this.value>=ignore  <prev.value>=ok      (to be determined)  # could become <some.value>=bad or =die (or =done?)
19: <prev.value>=ok      <this.value>=ok      <this.value>=ok      (to be determined)  # could become <some.value>=bad or =die (or =done?)
20: <prev.value>=ok      <this.value>=reset   (indeterminate)      (to be determined)  # could become <some.value>=bad, =die, =done, =ignore, or =ok

21: <prev.value>=reset   <this.value>=bad     <this.value>=bad     (to be determined)  # could become <some.value>=die
22: <prev.value>=reset   <this.value>=die     <this.value>=die     <this.value>=die
23: <prev.value>=reset   <this.value>=done    <this.value>=done    <this.value>=done
24: <prev.value>=reset   <this.value>=ignore  <this.value>=ignore  (to be determined)  # could become <some.value>=bad, =die, =done, or =ok
25: <prev.value>=reset   <this.value>=ok      <this.value>=ok      (to be determined)  # could become <some.value>=bad or =die (or =done?)
26: <prev.value>=reset   <this.value>=reset   (indeterminate)      (to be determined)  # could become <some.value>=bad, =die, =done, =ignore, or =ok

27: (indeterminate)      <this.value>=bad     <this.value>=bad     (to be determined)  # could become <some.value>=die
28: (indeterminate)      <this.value>=die     <this.value>=die     <this.value>=die
29: (indeterminate)      <this.value>=done    <this.value>=done    <this.value>=done
30: (indeterminate)      <this.value>=ignore  <this.value>=ignore  (to be determined)  # could become <some.value>=bad, =die, =done, or =ok
31: (indeterminate)      <this.value>=ok      <this.value>=ok      (to be determined)  # could become <some.value>=bad or =die (or =done?)
32: (indeterminate)      <this.value>=reset   (indeterminate)      (to be determined)  # could become <some.value>=bad, =die, =done, =ignore, or =ok

33: (indeterminate)      (stack exhausted)                         (indeterminate)

Notes.
In line 01, a subsequent "bad" does not trump a previous "bad".
In line 02, "die" trumps "bad". Is this true? The man page is unclear. (Also affects "could become <some.value>=die" comments.)
In lines 06, 14, 20, and 26-32, reset clears the stack, but is there some initial value? The man page says nothing.
In line 17, "done" trumps "ok". Is this true? The man page is unclear.
In line 18, a subsequent "ok" trumps a previous "ok".
In line 33, if there is no PAM auth stack (or if it ends with "reset"), is no-one authorized or is everyone authorized?

Thanks, and Ciao -- Mark Filipak, Mansfield, Ohio, U.S.A.

_______________________________________________
Pam-list mailing list
Pam-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/pam-list

[Index of Archives]     [Fedora Users]     [Kernel]     [Red Hat Install]     [Linux for the blind]     [Gimp]

  Powered by Linux