This article is a the collection of Linux customizations and productivity tricks. Instead of looking for relevant commands in my memory and in the internet every time I need them I decided to organize them here. I hope you will find them useful too.
The command line examples presented below were tested on Debian Jessie. They should be portable to Ubuntu and other Linux environments from Debian family.
I am going to keep this post updated, so you may consider subscribing to the RSS channel.
Disable sudo password question
How many times have you been asked your sudo password? Such question in this context does not considerably improve security of your system. You have already managed to login and you just have issued a command, so are staying active.
The sudo securicy policy plugin is configured using the sudoers configuration file, stored by default in the
The sudoers file must be edited by the
visudo command executed as root.
Add the following rule with your username to the sudoers file. After the successful update the user will be allowed to run any command as anyone without beging prompted for a password.
username ALL=(ALL) NOPASSWD:ALL
See the sudoers man pages to learn more about the sudo security policy plugin and configuration options available through the sudoers file.
Setup the SSH agent
Another workflow that often requires a password is accessing protected resources such as private Git repositories. Fortunately, service providers like GitHub or BitBucket support secure shell (SSH), a viable alternative that simplifies authentication process.
This tip explains how to add your SSH identity to the SSH agent automatically every time you open to the Bash shell and release it as soon as your session expires.
If you are new to SSH I strongly encourage you to read an excellent article An Illustrated Guide to SSH Agent Frowarding which explains principles behind secure shell that later will help you efficiently troubleshoot problems and avoid common pitfalls that breach security of your system.
This section assumes that you have already a SSH key pair:
id_rsa.pub saved in
~/.ssh directory. If you have not generate it yet see the the GitHub tutorial which explains how to create a new SSH key pair.
Firstly, start the SSH agent and register your identity by adding the following snippet to the
if [ -z "$SSH_AUTH_SOCK" ] ; then eval `ssh-agent` ssh-add fi
Secondly, append the command below to the
.bash_logout file. It kills the SSH agent associated with your terminal session as soon as you close it.
Finally, register the SSH public key in your service provider. It requires you to add the public SSH key fingerprint in your account.
Use the following command to print your public SSH fingerprint and refer to your service provider instructions where it should be saved.
ssh-keygen -lf ~/.ssh/id_rsa.pub cat
This tip assumes your computer cannot be accessed by unauthorized person. You may consider it for your home PC. Applying it on an office workstation is certainly looking for trouble.
Automatic login is tightly coupled to your virtual desktop environment. The example below applies to Gnome 3. Other environments follow similar pattern, but use different locations for configuration files.
Open Gnome Desktop Manager (GDM) configuration file and enable automatic login for your username.
sudo vim /etc/gdm3/daemon.conf
# GDM configuration storage # # See /usr/share/gdm/gdm.schemas for a list of available options. [daemon] # Enabling automatic login AutomaticLoginEnable = true AutomaticLogin = username
Adjust dynamic scaling factor of CPU
It is unlikely that you are utilizing your CPU at full speed without changing default settings. Most common CPU power schemes are set to run at less-than-maximum frequency to conserve power and keep your fan silent. It is considered that this policy also increases hardware lifetime, though the actual savings are difficult to quantify.
If you are running CPU intensive calculations on your PC and want results as soon as possible adjusting effective CPU frequency temporarily should not hurt.
Firstly, try to asses if increasing CPU frequency makes sense in your context. If your calculation is IO intensive or the CPU is a few generations behind the game may not be worth the candle.
To see the detailed information of your CPU open the
/proc/cpuinfo file or run the
lscpu cat /proc/cpuinfo
Proceed by installing the
cpufrequtils package. It contains a collection of command line utilities that allow for a temporary adjustment of the effective CPU frequency.
sudo apt-get install cpufrequtils
Check current frequency of each core and the power saving scheme in use. The latter is also known a governor.
The output should include the current governor which may be
ondemand and other available options.
Finally, switch temporarily all cores to the
performance governor policy.
sudo cpufreq-set -r -g performance
The governor policy will fall back to the default option after reboot. For a persistent change edit the
CPU frequency adjustment heavily depends on your Linux distribution. For more information on the topic search the system documentation using the
CPU frequency scaling or
CPU dynamic scaling keywords.
Check where the package is installed on the machine
StackOverflow is full questions where to find the location of particular binary or configuration file. Fortunately, one does not have to cut his teeth on maintaining a Linux repository to answer them.
Firstly, you may not have access to the operating system of your colleague or a StackOverflow user you are supporting. The fastest option in that case is searching the package repository for that Linux distribution. For example, Apache 2 HTTP server binaries and configuration files on Debian Jessie can be listed using the link: https://packages.debian.org/jessie/all/apache2/filelist.
If you have direct access to machine package manager should come to rescue.
Assuming that the Apache HTTP server is installed the following Debian package manager command lists its content.
dpkg --listfiles apache2
If you would like include all packages that start with
apache name use the query below.
dpkg --listfiles 'apache*'
dpkg query options are printing all packages installed in the system and listing detailed information about a package.
dpkg --list dpkg --status apache2
The list of all packages installed in the system is also stored in the
Some binaries though are not distributed using
*.deb packages and therefore Debian package manager is clueless about them.
For finding their absolute paths use the
which command. The former
In that case use the
which command for binary utilities and
locate for libraries. The former also prints location of source files and man pages.
whereis curl which curl
On the other hand, if you are building a C or C++ project and would like to know which archive (.a) and shared object (.so) libraries are available list dynamic linker run-time bindings using the command below.
sudo ldconfig -v
Finally, let’s mention general purpose utilities for querying file system.
locate is a command line utility for querying filepaths by pattern. Instead of traversing filesystem directly is uses a file name database. It should return fast and does not negatively affect IO performance. The robustness is paid by accuracy. Results may not include file system items that have been removed or added recently. If you do not get results you expect to see refresh the file name database using the
updatedb command or use a complement command -
sudo updatedb locate --ignore-case libcurl
find runs the search in a file system. It consumes more IO resources than
locate, but prints most up to date results. It also supports more sophisticate set parameters that limit the depth of a search tree, include time of modification or the file size. The example below runs a case insensitive search of the curl filename starting from the root of the filesystem. The command is expected to print access denied errors for protected directories therefore its error output is redirected. Refer to the man pages for the full description of the
find / -iname 'curl' 2>/dev/null
I would be pleased to hear your comment if you spot an error in the article. More Linux-related articles are expected to appear in the following weeks. I am going to cover managing multiple Linux machines effectively, disaster recovery like loosing root password and useful commands that you may have missed.