0

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

是什么赋予了?

4

2 回答 2

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文件并检查文件以查看是否出现问题。

于 2012-09-21T01:20:44.763 回答
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;

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

于 2012-09-21T16:42:37.733 回答