How to Get Linux Server Sends Email Alert on Root Login
To improve the security of the server, especially web server which exposes to the Internet and possible worldwide hackers, it’s best to enable server to automatically send a notification email to predefined email address everytime someone logs in as root to the host. To configure the automatic email alert notification to a default email address on each incident of root log on on the server, use the following guide.
- Login to the server via SSH using as root ID.
- Ensure that you’re at home directory of root. The open up the .bash_profile for editing using pico or vi by typing one of the following commands at command shell line:
pico .bash_profile
vi .bash_profile - Scroll down to the end of the file and add the following line:
echo 'ALERT - Root Shell Access on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d"(" -f2 | cut -d")" -f1`" user@example.com
Replace user@email.com with the actual email account address that you want to the root access alert notification been sent to. Note that you can change the text contains in the email alert too. The text starting with first ALERT is written as email body, and you can add in other info such as host name or change the wordings. The second Alert is the email title which you can change to your own too.
Now logout and login again as root, you should receive an email alert at your inbox. The security trick should works on most popular flavor of Linux such as RedHat, CentOS, Ubuntu, FreeBSD and etc.
Related posts:
- Reset the Root Password of MySQL Server
- Change and Reset MySQL root Password
- Reveal and Recover Windows NT, 2000, XP, 2003 and Longhorn Login (including Administrator) Username and Password with Login Recovery
- Email Bounces Back with “unrouteable mail domain” Error
- Remove ESET NOD32 Checked Email Confirmation Tag Message in Email





we can use "last" to check login users. A script need to be write to compare different in last output and run it in cron.
You can also add this to /etc/profile to make this work for every login in stead of just root access.
Also, it should be known that if anyone was attempting to get root access to your system, the "bash" shell probably wouldnt be loaded. They would probably go for the lower of "sh".
Hi,
Before finding this article, I had already started to try to implement this myself. I did basic security testing to it and I found that you can very very easily bypass this by executing the "sh" command which bypasses the "bash" command to load the shell and therefore, .bash_profile and .bashrc both get bypassed.
Use this at your own risk and don't assume its a guarantee. Another way to possible implement such feature is to rewrite the code for openSSH and implement it directly into the code.
Great stuff,
Is there a way to have the IP of the person who logs in show up?
This works for root login or su – from a user login.
How can I implement it that will work also for "su" only? Right now since the path will change with su instead of su – it will not send an email if someone is not using the "-" after the su. Thanks.
'who -m' makes the output much cleaner when using this on a system that has multiple users logged on…
-m reports only hostname and user associated with stdin terminal
[...] Linux – wysyłanie maila o logowaniu na konto roota Bardzo użyteczny skrypcik [...]