How to check user name and password for Linux accounts


#1

Can ruby check user name and password the same way as Linux OS? I use
“ypcat passwd” to list all users and its encrypted password. I want
users to input their user name and password to ruby and let ruby the
check its validation.

thanks.


#2

Zhao Yi wrote:

Can ruby check user name and password the same way as Linux OS? I use
“ypcat passwd” to list all users and its encrypted password. I want
users to input their user name and password to ruby and let ruby the
check its validation.

thanks.

You may be able to find a wrapper to crypt(3) or whatever your system
uses to generate the hashes in the passwd file. Or a pure ruby one.
-=r


#3

If you have the encrypted passwords from ypcat, then they are easy to
check.

irb(main):002:0> enc_pw = “aauZSSiXB7FbU”
=> “aauZSSiXB7FbU”
irb(main):003:0> “ruby”.crypt(enc_pw) == enc_pw
=> true

irb(main):005:0> enc_pw = “$1$aaaa$jM9byC6tzuk.OYACuTQrJ/”
=> “$1$aaaa$jM9byC6tzuk.OYACuTQrJ/”
irb(main):006:0> “ruby”.crypt(enc_pw) == enc_pw
=> true


#4

Zhao Yi wrote:

Can ruby check user name and password the same way as Linux OS? I use
“ypcat passwd” to list all users and its encrypted password. I want
users to input their user name and password to ruby and let ruby the
check its validation.

thanks.

If your system uses PAM, like most modern linux distros, you might want
to look at Ruby/PAM[1]

I haven’t tried it but a quick look through the examples seems like it
could work for you.

[1]http://ruby-pam.sourceforge.net/pam-ruby.html

HTH

Matt