我正在研究我认为使用'useradd'动态创建FTP用户的非常简单的脚本。我不熟悉这个过程的几个部分,并且整整一天的研究都没有让我太过分。这就是我所拥有的:
password="pass"
pass=$(perl -e 'print crypt($ARGV[0], "wtf")' $password)
useradd -d HOME_DIR -s /bin/bash -g GROUP -p $pass -f -1 testing
注释
主题:
请告诉我,如果我说这一切都错了,或者我想做的事情是不可能的,或者我是否对我在此陈述的任何内容都有所误导。感谢您提供任何帮助。 :d
答案 0 :(得分:26)
关于密码生成:
32.3 Encrypting Passwords
功能:char * crypt ( const char * key,const char * salt )
crypt
函数将密码 key 作为字符串,以及 salt 字符数组(如下所述),并返回可打印的ASCII字符串从另一种盐开始。据信,给定函数的输出,找到将产生该输出的键的最佳方法是猜测键的值,直到<的原始值<找到了em> key 。salt 参数执行两项操作。首先,它选择使用哪种算法,基于MD5的算法或基于DES的算法。其次,对于试图根据包含许多密码的文件猜测密码的人来说,它会变得更加艰难;没有 salt ,入侵者可以猜测,在其上运行
crypt
一次,并将结果与所有密码进行比较。使用 salt ,入侵者必须为每种不同的盐运行crypt
一次。对于基于MD5的算法, salt 应包含字符串
$1$
,后跟最多8个字符,由另一个$
或结束字符串。 crypt的结果将是 salt ,如果salt不以1结尾,则后跟$
,后跟字母./0-9A-Za-z
中的22个字符,最多34个人物总数。 键中的每个字符都很重要。对于基于DES的算法, salt 应包含字母
./0-9A-Za-z
中的两个字符,crypt
的结果将是后面跟着的两个字符。更多来自同一个字母,共13个。只有键中的前8个字符才有意义。基于MD5的算法对使用的密码的有用长度没有限制,并且稍微更安全。因此,它优于基于DES的算法。
当用户第一次输入密码时,应将salt设置为合理随机的新字符串。要根据先前调用crypt的结果验证密码,请将上一次调用的结果作为salt传递。
根据您的系统,也可能还有Blowfish或SHA-2系列crypt
,并且传统的DES可能会因安全性而被禁用。 PAM也可以在这里添加自己的复杂功能。
ID | Method ------------------------------- 1 | MD5 (Linux, BSD) 2a | Blowfish (OpenBSD) md5 | Sun MD5 5 | SHA-256 (Linux, since glibc 2.7) 6 | SHA-512 (Linux, since glibc 2.7)
话虽如此,
root# useradd -d / -g users -p $(perl -e'print crypt("foo", "aa")') -M -N foo user$ su - foo Password: foo foo$ ^D root# userdel foo
在我的系统上运行得很好。
关于shell:
/sbin/nologin
对于禁用登录的用户来说是传统的。您必须仔细检查您的FTP守护程序的配置,看看是否将其从FTP访问中排除。
关于已停用的帐户:
如上所示,如果给出工作密码,对我来说就像预期一样。
关于其他解决方案:
您对替代解决方案有何了解?我觉得很清楚。
只需将“username:password
”导入“chpasswd
”。
如果您想要仅限FTP的用户,我建议您使用支持虚拟用户的FTP守护程序,例如glftpd,Pure-FTPd,ProFTPD,vsftpd,...实际上似乎所有常见的都有。这样,FTP帐户不需要真正的系统帐户。
答案 1 :(得分:1)
如果您想创建“仅限FTP”用户,请查看rssh 为发行版安装rssh,并将“仅限FTP”用户的shell设置为“/ usr / bin / rssh”
效果很好