我正在研究我认为是一个非常简单的脚本,使用'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
Run Code Online (Sandbox Code Playgroud)
笔记
话题:
让我知道,如果我说这一切都错了,或者我想要做的事情是不可能的,或者我是否对我在此陈述的任何事情都有所误导.感谢您提供任何帮助.:d
eph*_*ent 26
关于密码生成:
32.3加密密码
功能:char*crypt(const char*key,const char*salt)
该
crypt
函数接受密码,密钥,字符串和下面描述的salt字符数组,并返回一个以另一个salt开头的可打印ASCII字符串.据认为,鉴于该函数的输出,找到一个最好的方式键,将产生的输出是猜测的值键直到原值关键发现.该盐参数做了两两件事.首先,它选择使用哪种算法,基于MD5的算法或基于DES的算法.其次,对于试图根据包含许多密码的文件猜测密码的人来说,它会变得更加艰难; 没有盐,入侵者可以猜测,运行
crypt
一次,并将结果与所有密码进行比较.对于盐,入侵者必须crypt
为每种不同的盐运行一次.对于基于MD5的算法,salt应该由字符串组成
$1$
,后跟最多8个字符,由另一个$
或字符串的结尾终止.地穴的结果将是盐,然后是盐,$
如果盐没有以一个结束,接着是字母表中的22个字符./0-9A-Za-z
,总共最多34个字符.密钥中的每个字符都很重要.对于基于DES的算法,盐应该由字母表中的两个字符组成,
./0-9A-Za-z
结果crypt
将是这两个字符,后面是来自同一字母表的11个字符,总共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的用户,我建议使用支持glftpd,Pure-FTPd,ProFTPD,vsftpd等虚拟用户的FTP守护进程......实际上看起来所有普通用户都可以.这样,FTP帐户不需要真正的系统帐户.