Carlos
Carlos

Reputation: 160

Adding FTP user via bash script issue

I have a .sh file (lets say adduser.sh) that is executed via a cronjob that contains the commands to create an FTP user.

The adduser.sh file looks like so...

#!/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;

Now here is my problem. If I run it directly through SSH using...

sh adduser.sh

...no problems and it works as intended.

But if I let the cronjob run it the directory is created but the user is not added.

What gives?

Upvotes: 0

Views: 1952

Answers (2)

Carlos
Carlos

Reputation: 160

I have resolved this simply adding /usr/bin/ to the useradd function.

#!/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;

Thanks everyone for helping me get on the right track. Hope this helps someone out there.

Upvotes: 0

Anjan Biswas
Anjan Biswas

Reputation: 7912

As it stands, there is an alternative to useradd known as adduser. In Debian or Ubuntu, adduser is a perl script and performs sequential functions like create the user using adduser, assign it to a group, create home directory etc.

As per adduser man page-

adduser and addgroup are friendlier front ends to the low level tools like useradd, groupadd and usermod programs, by default choosing Debian policy conformant UID and GID values, creating a home directory with skeletal configuration, running a custom script, and other features.

In Fedora, RedHat, and CentOS, adduser is just a symbolic link to useradd.

[root@hobbit ~]# which /usr/sbin/adduser
lrwxrwxrwx 1 root root 7 2012-09-20 20:20 /usr/sbin/adduser -> useradd

If you are on any on the above OS then you can try adduser redirect 2> to a add_user.log file and check the file to see if something goes wrong.

Upvotes: 1

Related Questions