def load_users(path=settings.LOGIN_FILE):
if not os.path.exists(path):<EOL><INDENT>return {}<EOL><DEDENT>data = "<STR_LIT>"<EOL>with open(path) as f:<EOL><INDENT>data = f.read().splitlines()<EOL><DEDENT>users = {}<EOL>cnt = <NUM_LIT:1><EOL>for line in data:<EOL><INDENT>line = line.split("<STR_LIT::>")<EOL>assert len(line) == <NUM_LIT:7>, "<STR_LIT>" % (<EOL>path,<EOL>cnt<EOL>)<EOL>users[line[<NUM_LIT:0>]] = {<EOL>"<STR_LIT>": line[<NUM_LIT:1>],<EOL>"<STR_LIT>": line[<NUM_LIT:2>],<EOL>"<STR_LIT>": line[<NUM_LIT:3>],<EOL>"<STR_LIT>": line[<NUM_LIT:4>],<EOL>"<STR_LIT>": line[<NUM_LIT:5>],<EOL>"<STR_LIT>": line[<NUM_LIT:6>]<EOL>}<EOL>cnt += <NUM_LIT:1><EOL><DEDENT>return users<EOL>
Read passwd file and return dict with users and all their settings.

Args:
    path (str, default settings.LOGIN_FILE): path of the file,
        which will be loaded (default :attr:`ftp.settings.LOGIN_FILE`).

Returns:
    (dict): username: {pass_hash, uid, gid, full_name, home, shell}

Example of returned data::

    {
        "xex": {
            "pass_hash": "$asd$aiosjdaiosjdásghwasdjo",
            "uid": "2000",
            "gid": "2000",
            "full_name": "ftftf",
            "home": "/home/ftp/xex",
            "shell": "/bin/false"
        }
    }