我有一个.sh文件(比如adduser.sh),它是通过一个包含创建FTP用户命令的cronjob执行的。
adduser.sh文件看起来像......
#!/bin/bash
mkdir /var/www/vhosts/domain/path;
useradd -d /var/www/vhosts/domain/path -ou <uid> -g <group> -s /bin/false <username>;
echo <password> | passwd <username> --stdin;
现在这是我的问题。如果我使用...直接通过SSH运行它
sh adduser.sh
......没有问题,它按预期工作。
但是如果我让cronjob运行它,则会创建目录,但不会添加用户。
是什么给出了?
答案 0 :(得分:1)
目前,useradd
可以替代adduser
。在Debian或Ubuntu中,adduser
是一个perl脚本,执行顺序功能,例如使用adduser
创建用户,将其分配给组,创建主目录等。
根据adduser
手册页 -
adduser
和addgroup
是低级别工具的更友好的前端 比如useradd,groupadd和usermod程序,默认选择 Debian策略符合UID和GID值,创建主目录 使用骨架配置,运行自定义脚本等 特征
在Fedora,RedHat和CentOS中,adduser
只是useradd
的符号链接。
[root@hobbit ~]# which /usr/sbin/adduser
lrwxrwxrwx 1 root root 7 2012-09-20 20:20 /usr/sbin/adduser -> useradd
如果您使用上述操作系统,则可以尝试adduser
将2>
重定向到add_user.log
文件并检查文件以查看是否出现问题。
答案 1 :(得分:0)
我已经解决了这个问题,只需将 / usr / bin / 添加到useradd函数中。
#!/bin/bash
mkdir /var/www/vhosts/domain/path;
/usr/bin/useradd -d /var/www/vhosts/domain/path -ou <uid> -g <group> -s /bin/false <username>;
echo <password> | passwd <username> --stdin;
感谢大家帮助我走上正轨。希望这可以帮助那些人。