diff options
-rw-r--r-- | libs/sys/luasrc/sys.lua | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua index 4bf2946788..0bf92e9da4 100644 --- a/libs/sys/luasrc/sys.lua +++ b/libs/sys/luasrc/sys.lua @@ -438,18 +438,18 @@ function user.checkpasswd(username, password) if account then local pwd = account.passwd - if pwd == "!" then - return true - elseif pwd == "x" then - pwd = nil + local shadowpw + if #pwd == 1 then for l in io.lines("/etc/shadow") do - pwd = l:match("^%s:([^:]+)" % username) - if pwd then + shadowpw = l:match("^%s:([^:]+)" % username) + if shadowpw then + pwd = shadowpw break end end - if not pwd then - return nil, "No shadow password for " .. username + + if pwd == "!" then + return true end end |