2011-03-07 49 views
0

我只知道如何读取密码。但是我在如何设置用户输入的文件密码时遇到问题。我只走了这么远。请帮助:如何在使用UNIX/LINUX的文件上保存密码?

if [ -d "$1" ] 
then 
    #reads password 
    read -s -p "Enter Password: " password 
    stty -echo 
    stty echo 
    echo "" 
    echo "" 
    #checks whether the password is valid or not 
    echo $mypassword" == "$PASS" ] && echo "Password accepted" || echo "Access denied" 
else 
    echo "Directory not found." 
fi 
+4

那么,准确的问题是什么?请注意,UNIX/Linux通常只使用rwxrwxrwx风格的文件访问控制:您的帐户是决定您是否有权访问文件的唯一因素。 – MSalters 2011-03-07 15:26:23

+0

要扩展MSalters评论,您需要说明您使用什么机制来解密/解密文件或文件系统。只有这样我们才能知道密码(或希望他们的哈希值)是如何存储的。如果你不知道这个问题的答案,那么你的系统可能甚至没有内置的容量。你可能不得不推出自己的产品,并且*这是一个完整的蠕虫。 – dmckee 2011-03-07 15:46:19

回答

1

如果我没有得到你错了,尝试这样的事:

#!/bin/bash 

EXPECTED_PASS="FooBar" 

if [ -d "$1" ] 
then 
    read -s -p "Enter Password: " password 
    stty -echo 
    stty echo 
    echo "" 
    echo "" 

    #Save password to a temporary file 
    echo "${password}" > /tmp/password.txt 

    #Load password from file 
    password=`cat /tmp/password.txt` 

    if [ "${password}" == "${EXPECTED_PASS}" ] 
    then 
     echo "Access granted" 
    else 
     echo "Access denied" 
    fi 


else 
    echo "Directory not found." 
fi 

通常它不是密码保存为纯文本是一个好主意。加密它们或者至少对它们执行散列操作会更好:

EXPECTED_PASS=`echo "FooBar" | md5sum | cut -f1 -d" "` 
... 
#Save password to a temporary file 
echo "${password}" | md5sum | cut -f1 -d" " > /tmp/password.txt 

#Load password from file 
password=`cat /tmp/password.txt` 

希望它有帮助。

问候。

+0

你能说明如何保存用户输入的密码吗? – Penguin 2011-03-07 15:35:11

+0

非常感谢你! – Penguin 2011-03-07 15:55:22

+0

@企鹅:你理解*为什么* redent84提示存储密码?特别是你是否理解'md5sum'的目的以及如何检查用户以后输入的比赛? – dmckee 2011-03-07 16:00:30

相关问题