通过bash脚本问题添加FTP用户

时间:2012-09-20 22:28:43

标签: linux bash ssh ftp sh

我有一个.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运行它,则会创建目录,但不会添加用户。

是什么给出了?

2 个答案:

答案 0 :(得分:1)

目前,useradd可以替代adduser。在Debian或Ubuntu中,adduser是一个perl脚本,执行顺序功能,例如使用adduser创建用户,将其分配给组,创建主目录等。

根据adduser手册页 -

  

adduseraddgroup是低级别工具的更友好的前端   比如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

如果您使用上述操作系统,则可以尝试adduser2>重定向到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;

感谢大家帮助我走上正轨。希望这可以帮助那些人。