我有一个.sh文件(比如adduser.sh),它通过一个cronjob执行,该cronjob包含创建FTP用户的命令。
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运行它,则会创建目录,但不会添加用户。
给什么?

最佳答案

就目前的情况来看,有一种称为useraddadduser替代方案。在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

如果您在上述操作系统上的任何一个上,那么您可以尝试将adduser重定向到2>文件,并检查该文件是否出错。

关于linux - 通过bash脚本添加FTP用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12521829/

10-10 23:55