لطفا وارد شوید یا ثبت‌نام کنید تا به انجمن‌ها دسترسی کامل داشته باشید.



 
امتياز موضوع :
  • 0 رأي - معدل امتيازات : 0
  • 1
  • 2
  • 3
  • 4
  • 5
کار با etc/shadow/
2011-05-29, 08:46 AM,
ارسال : #1
کار با etc/shadow/
سلام
دارم یک اسکریپت می نویسم که کلا برنامه لاگین رو تغییر بدم ...
یعنی الان وقتی می خواهیم وارد سیستم بشیم (مثلا توی tty1) یک خط نوشته که از ما UserName رو می خواهد و بعد Password که اگه درست وارد کنیم به ما اجازه وارد شدن به سیستم و کار با اون رو میده .
حالا من با dialog یک برنامه نوشتم که این سیستم رو تغییر میده و دیگه چیزی تحت عنوان CLI نخواهیم داشت . در معنا بعد از وارد کردن Username و Password یک منو میاد که یک سری عملیات خواص رو میشه روش انجام داد ... البته من این برنامه رو توی فایل inittab گذاشتم پس دیگه اون دوتا خطی که از ما مشخصات کاربری رو می خواست رو هم دیگه نداریم ...
نکته : البته عملیات دریافت username و password هم در همین برنامه dialog انجام میشه .

حالا مشکل من سر فایل etc/shadow/ هستش ...
یک دستور یا برنامه می خواهم که کاربر وقتی password رو وارد میکنه . hash این پسورد رو بیاد با hash موجود در فایل etc/shadow/ مقایسه کنه و اگه این دو با هم برابر بودند اجازه ورود بده و در غیر این صورت وارد کردن مجدد username و password ....
من دستوراتی مثل mkpasswd رو برسی کردم ولی خروجیش خیلی با اون چیزی که توی فایل shadow هست فرق میکنه !
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2011-05-29, 03:07 PM,
ارسال : #2
 
دوست گرامی دستور chage محتویات shadow فایل رو تغییر می‌ده.

اعتراض به عملکرد دولت در زمینه IT
اینترنت حداقل 5M + یک laptop حق مسلم هر ایرانیست.
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2011-05-29, 03:32 PM,
ارسال : #3
 
نه ...
خودم به جواب رسیدم :
کد :
#!/bin/bash

while true
do
        read -p "Enter UserName : " u_name
        read -s -p "Enter Password : " u_pass

        username=$(grep $u_name /etc/passwd | awk -F ":" '{print $1}')
        salt=$(grep $u_name /etc/shadow | awk -F "$" '{print $3}')
        u_hash=$(mkpasswd -s -m sha-512 "$u_pass" $salt | awk -F "$" '{print $4}')
        s_hash=$(grep $u_name /etc/shadow | awk -F "$" '{print $4}' | awk -F ":" '{print $1}')

        if [ $u_name == $username ] && [ $u_hash == $s_hash ] ; then
                echo "Login Success ..."
                exit 0
        elif [[ $u_name != $username || $u_hash != $s_hash ]] ; then
                echo "Authentication Failure !"
        fi 2> /dev/null
done

Debian GNU/Linux System Administrator
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ


رفتن به انجمن :


کاربران در حال مشاهده موضوع : 1 مهمان