htmpasswd
htmpasswd is a script to help create temporary users in files made with
htpasswd
.
This script assumes your htpasswd-files are stored in /etc/nginx/htpasswd
(you can change this with the variable $HTDIR
). It also needs access to
/var/spool/htmpasswd
, where the temporary users are stored until they expore.
htmpasswd
takes two arguments. $1
is the name of the password-file, and $2
is the name of the temporary user. $2
is optional. The script returns a
temprary username and password separated by a colon.
Example:
$ sudo htmlpasswd f.dnns.no
woeomu:aadscv
This would now be valid at https://woeomu:aadscv@f.dnns.no.
Installation
$ sudo git clone https://git.dnns.no/htmpasswd.git /usr/local/src/htmpasswd
$ sudo ln -s /usr/local/src/htmpasswd/htmpasswd /etc/cron.hourly/htmpasswd-cron
$ sudo ln -s /usr/local/src/htmpasswd/htmpasswd /usr/local/sbin/
Config
If you want to change the default configuration, check the script to see which variables are used, and change them in /etc/default/htmpasswd
, which will be sourced if it exists.
Working example
First, install the script as described above.
Then, install your preferred webserver (I use nginx), and set up a vhost to use basic auth.
My example vhost - /etc/nginx/sites-enabled/wiki.dnns.no
:
```
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name wiki.dnns.no;
ssl_certificate /etc/letsencrypt/live/wiki.dnns.no/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wiki.dnns.no/privkey.pem;
# ACL
auth_basic "wiki.dnns.no";
auth_basic_user_file /etc/nginx/htpasswd/wiki;
root /var/www/wiki.dnns.no;
}
Then create a folder for your passwordfiles. I use `/etc/nginx/htpasswd/`. Now create your user (alternatively you could just `touch` an empty file, but in my working example I want a working permanent user).
$ htpasswd testuser /etc/nginx/htpasswd/wiki
New password:
Re-type new password:
Adding password for user /etc/nginx/htpasswd/wiki
Now I should be able to create a temporary user using `htmpasswd`.
root@thale ~ # htmpasswd wiki
Adding password for user rckgck
rckgck:fksd4i
```
This temporary user and password should now be valid for https://wiki.dnns.no for 24h hours (the default).
cron
In order to automagically remove the temporary users after a set amount of time, the script also needs to be invoked regularly by cron. When run by cron, it takes no arguments.
For the script to recognize it’s being run by cron, you either need to set the
environmental variable $RUN_BY_CRON
to true
, or you can name the script
htmpasswd-cron
as the script will recognize the -cron
-suffix.