Although I worked with Ubuntu for quite some years I still have to google some of the simpliest task, just because I hardly ever need them. The most simple examples being how to add a user to a group, or see how much space I have left on my disks…
Instead of googling everything again and again, I am going to collect them in this post:
Users
Add a user to a group:
# usermod -aG sudo remy
Diskspace
See how much space the subdirectories of your pwd are taking up:
$ du -sk *
Or when you want to look one level deeper, which comes in handy when I want to see which domains and subdomains I have in my /var/www/vhosts directory:
$ du -kd 1 *
Prompt
# cool colored version:
coolcolor='\033[33m' # with the 2nd 33 being the colorcode [30-37]
normal='\033[0m'
export PS1="\u@\[$coolcolor\]\h\[$normal\]:\w \[$coolcolor\]$\[$normal\] "
OpenSSL
Generate new private key and certificate signing request:
$ openssl req -out server.csr -new -newkey rsa:4096 -nodes -keyout private.key
Generate csr for existing private key:
$ openssl req -out server.csr -key private.key -new
Check a certificate:
$ openssl x509 -noout -text -in certificate.crt
Get the fingerprint of a certificate, possible flags are -sha1 -sha256 or -md5.
$ openssl x509 -noout -fingerprint -sha1 -in certificate.crt
Remember: transporting .csr of .crt can be done in the clear without any fear, they are useless without the corresponding private.key
Generate Diffie-Hellman parameters: (takes a long time)
$ openssl dhparam -out dhparam.pem 4096
Check an SSL connection:
$ openssl s_client -connect www.example.com:443
Create a pfx or pkcs#12 file that contains both private key and certificate and is password protected:
$ openssl pkcs12 -export -out key_and_cert.pfx -inkey privkey.pem -in fullchain.pem
More useful stuff on openssl-commands
SSH keys
Generate Ed25519 key pair:
$ ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/id_ed25519 -C "foo@bar.com"
Although I prefer ed25519, you might want old fashion rsa keys:
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -C "foo@bar.com"
To add your key(s) to your server, use this nifty little tool:
$ ssh-copy-id user@host
Or when you just want to add one specific key:
$ ssh-copy-id -i ~/.ssh/id_rsa user@host
Add one file to the other
Okay, this is like basic stuff, but getting it wrong can be painful, so to append file1 to file2:
$ cat file1 >> file2
Compressing and decompressing files
Creating a simple zip from a directory:
$ zip -r filename.zip /path/to/directory
Unzip it with:
$ unzip filename.zip
Or you want to password protect it?
$ zip -e filename.zip /path/to/directory
Since the encryption used by zip is weak, use 7z instead:
$ 7z a -p filename.7z /path/to/directory
Lots of archive on the net will be .tar.gz which you extract with:
$ tar -xf archive.tar.gz
Reboot server tonight
Sometimes I want to reboot a machine but keep the impact from the downtime as low as possible, so I schedule the reboot at 06:00 in the morning, hoping the number of users currently using any of its services is close to 0 and in the case something went wrong, I can fix it when at the office at 09:00 (This does indeed imply that we are okay with the 3 hours downtime)
$ sudo at 06:00
warning: commands will be executed using /bin/sh
at> /sbin reboot
[ctrl-d]
You can check the queue of scheduled jobs with:
$ sudo atq
1 Tue Jan 14 10:00:00 2020 a root
And remove a job with:
$ sudo atrm 1
Send a test mail
$ mail -s "TEST!" remy.blom@hku.nl < /dev/null
