Best Linux Commands Hacks and other Cool Tricks for Beginners - 15 min read
In this article, I will try to cover the most useful Linux commands that every hacker, pentester, and expert in cybersecurity must know !!
HACKERS LOVE THE TERMINAL
“You are a hacker. Your home is the terminal. You work on several projects at once, You know every keystroke is valuable. With just some commands, you can automate tasks, install your favorite software, view a whole network, find vulnerabilities on just about anything connected to the internet, compile a script, create additional user accounts, properly configure anonymity software, and optimize our interactions with terminals. When you search for something, it should be blazing fast. If something is less than 100% efficient, you will spend hours figuring out the right way to save yourself seconds.”
LINUX MAN PAGE (SHORT FOR MANUAL PAGE)
There is quite something to say about the man page. A man page is an extensive help page in Linux. There are people who have learned Linux through the man command. It is a way to find out everything about the program.
man [program name] # To find out a lot about python man python
Use this command to find the explanation of the man page:
You will get this output “How to use the man page” (As the screenshot shows).
If there isn’t any man page available than you can invoke the program help page if any.
LINUX PACKAGES MANAGERS
In addition to apt which is the Debian package manager, there is other packages manager used by the different Linux systems. Below are some of the best known:
- Debian – Ubuntu Debian: apt, apt-cache, apt-get, dpkg
- Arch Linux: pacman -S packageName
- OpenSUSE: zypper – sudo zypper update
- CentOS – Fedora – Red Hat: yum, dnf
In recent versions of Fedora, yum has been supplanted by dnf, a modernized fork that retains most of yum’s interface.
In this article, we will focus on Debian based Pentest Linux such as (Kali or Parrot OS).
APT (PREVIOUSLY APT-GET)
The apt tool automatically updates Debian, Ubuntu, and other related Linux distributions (Like Kali Linux) and installs Debian/Ubuntu packages and programs. The apt provides the necessary option to manage the packages. while apt-get won’t be deprecated, as a regular user, I suggest you use a directly apt command which does exactly the same but which is more recent.
To perform an update run this command on your system’s terminal:
sudo apt update
To perform an upgrade run this command on your system’s terminal:
sudo apt upgrade
To perform a whole upgrade run this command on your system’s terminal:
sudo apt full-upgrade
You also can comby this two commands in one line:
sudo apt update && sudo apt full-upgrade sudo apt [options] command sudo apt install [...PACKAGES] (for installing a package) sudo apt search [...PACKAGES] (for searching a package) sudo apt remove [...PACKAGES] (for removing a package)
Kali Linux allows users to configure a password for the root user during installation. However, the i386 and amd64 live images, along with the ARM images, are configured with the default root password: “toor”, without the quotes. Also due to its default root privileged environment, Kali Linux isn’t recommended for absolute beginners.
In short way, if you are using Kali Linux you are “root”, and that’s the reason I recommend creating a sudo user account within your Kali system. Below are two examples of how to create a sudo user account.
CREATING A USER ACCOUNT IN LINUX
First of all register a normal user account using adduser command, it’ll ask you for password confirmation and other user details.
Another way to add a user is:
# Creates a home directory for the user useradd -m username -m
At this point we have added a new user. But we need to put this user in sudoers group so that this user can use sudo command to perform administrative tasks on the machine and let us do whatever we would like to do.
Set the password for the user:
# This will prompt you to enter a password. passwd username
If you want to add the user to a specific group, type the command:
usermod -a -G sudo Testuser # -a means add # -G sudo means to add the user to sudoers group
The last thing to do is to specify the shell the creation of the new user. To do so execute the following command:
chsh -s /bin/bash username
NOTE: You can delete the user using the following command:
userdel username # Remove this user userdel* username # Delete the user's home directory and mail spool userdel -r* username
The “sudo” command lets you execute commands with superuser privileges as long as your user id is in the sudoers file, giving you all the necessary authorization.
HOW TO GET ROOT PRIVILEGES IN LINUX
In a “normal” Linux installation such as Ubuntu or Linux Mint, we do not have root access by default in the machine. So if needed, we can create root access as follows:
# Can also be used to change the password sudo passwd root
The command su root gives us the root access to Linux As can be seen in the screenshot above.
A-Z LINUX COMMANDS
What I can recommend to anyone (especially if you are Linux beginners) is to go through this list. If you see an unknown command. Put your terminal next to it and try it all out. This way you learn the most. Obviously for more explanation about the command you can use the man page or the –help page.
apropos: Search Help manual pages apt: Search for and install software packages (Debian) apt-get: Search for and install software packages (Debian) aptitude: Search for and install software packages (Debian) aspell: Spell Checker
basename: Strip directory and suffix from filenames bash: GNU Bourne-Again Shell. A Shell command lanuage bc: Arbitrary precision calculator language bg: Send to background break: Exit from a loop builtin: Run a shell builtin bzip2: Compress or decompress named file(s)
cal: Display a calendar case: Conditionally perform a command cat: Concatenate and print (display) the content of files cd: Change Directory cfdisk: Partition table manipulator for Linux chgrp: Change group ownership chmod: Change access permissions chown: Change file owner and group chroot: Run a command with a different root directory cksum: Print CRC checksum and byte counts clear: Clear terminal screen cmp: Compare two files comm: Compare two sorted files line by line command: Run a command – ignoring shell functions continue: Resume the next iteration of a loop cp: Copy one or more files to another location cron: Daemon to execute scheduled commands crontab: Schedule a command to run at a later time csplit: Split a file into context-determined pieces cut: Divide a file into several parts
date: Display or change the date & time dc: Desk Calculator dd: Convert and copy a file, write disk headers, boot records ddrescue: Data recovery tool declare: Declare variables and give them attributes df: Display free disk space diff: Display the differences between two files diff3: Show differences among three files dig: DNS lookup dir: Briefly list directory contents dircolors: Colour setup for `ls’ dirname: Convert a full path name to just a path dirs: Display list of remembered directories dmesg: Print kernel & driver messages du: Estimate file space usage
echo: Display message on screen egrep: Search file(s) for lines that match an extended expression eject: Eject removable media enable: Enable and disable builtin shell commands env: Environment variables ethtool: Ethernet card settings eval: Evaluate several commands/arguments exec: Execute a command exit: Exit the shell expect: Automate arbitrary applications accessed over a terminal expand: Convert tabs to spaces export: Set an environment variable expr: Evaluate expressions
false: Do nothing, unsuccessfully dirname: Convert a full path name to just a path dirs: Display list of remembered directories dmesg: Print kernel & driver messages du: Estimate file space usage
gawk: Find and Replace text within file(s) getopts: Parse positional parameters grep: Search file(s) for lines that match a given pattern groupadd: Add a user security group groupdel: Delete a group groupmod: Modify a group groups: Print group names a user is in gzip: Compress or decompress named file(s)
hash: Remember the full path name of a name argument head: Output the first part of file(s) help: Display help for a built-in command history: Command History hostname: Print or set system name
iconv: Convert the character set of a file id: Print user and group id’s if: Conditionally perform a command ifconfig: Configure a network interface ifdown: Stop a network interface ifup: Start a network interface up import: Capture an X server screen and save the image to file install: Copy files and set attributes
jobs: List active jobs join: Join lines on a common field
kill: Stop a process from running killall: Kill processes by name
less: Display output one screen at a time let: Perform arithmetic on shell variables ln: Create a symbolic link to a file local: Create variables locate: Find files logname: Print current login name logout: Exit a login shell look: Display lines beginning with a given string lpc: Line printer control program lpr: Off line print lprint: Print a file lprintd: Abort a print job lprintq: List the print queue lprm: Remove jobs from the print queue ls: List information about file(s) lsof: List open files
make: Recompile a group of programs man: Help manual mkdir: Create new folder(s) mkfifo: Make FIFOs (named pipes) mkisofs: Create an hybrid ISO9660/JOLIET/HFS filesystem mknod: Make block or character special files more: Display output one screen at a time mount: Mount a file system mtools: Manipulate MS-DOS files mtr: Network diagnostics (traceroute/ping) mv: Move or rename files or directories mmv: Mass Move and rename (files)
netstat: Networking information nice: Set the priority of a command or job nl: Number lines and write files nohup: Run a command immune to hangups notify-send: Send desktop notifications nslookup: Query Internet name servers interactively
open: Open a file in its default application op: Operator access
passwd: Modify a password paste: Merge lines of files pathchk: Check file name portability ping: Test a network connection pkill: Stop processes from running popd: Restore the previous value of the current directory pr: Prepare files for printing printcap: Printer capability database printenv: Print environment variables printf: Format and print data ps: Process status pushd: Save and then change the current directory pwd: Print Working Directory
quota: Display disk usage and limits quotacheck: Scan a file system for disk usage quotactl: Set disk quotas
rcp: Copy files between two machines read: Read a line from standard input readarray: Read from stdin into an array variable readonly: Mark variables/functions as readonly reboot: Reboot the system rename: Rename files renice: Alter priority of running processes remsync: Synchronize remote files via email return: Exit a shell function rev: Reverse lines of a file rm: Remove files rmdir: Remove folder(s) rsync: Remote file copy (Synchronize file trees)
screen: Multiplex terminal, run remote shells via ssh scp: Secure copy (remote file copy) sdiff: Merge two files interactively sed: Stream Editor select: Accept keyboard input seq: Print numeric sequences set: Manipulate shell variables and functions sftp: Secure File Transfer Program shift: Shift positional parameters shopt: Shell Options shutdown: Shutdown or restart Linux sleep: Delay for a specified time slocate: Find files sort: Sort text files source: Run commands from a file `.’ split: Split a file into fixed-size pieces ssh: Secure Shell client (remote login program) strace: Trace system calls and signals sum: Print a checksum for a file suspend: Suspend execution of this shell symlink: Make a new name for a file sync: Synchronize data on disk with memory
tail: Output the last part of file tar: Tape ARchiver tee: Redirect output to multiple files test: Evaluate a conditional expression time: Measure Program running time times: User and system times touch: Change file timestamps top: List processes running on the system traceroute: Trace Route to Host trap: Run a command when a signal is set(bourne) tr: Translate, squeeze, and/or delete characters true: Do nothing, successfully tsort: Topological sort tty: Print filename of terminal on stdin type: Describe a command
ulimit: Limit user resources umask: Users file creation mask umount: Unmount a device unalias: Remove an alias uname: Print system information unexpand: Convert spaces to tabs uniq: Uniquify files units: Convert units from one scale to another unset: Remove variable or function names unshar: Unpack shell archive scripts until: Execute commands (until error) uptime: Show uptime useradd: Create new user account userdel: Delete a user account usermod: Modify user account users: List users currently logged in
v: Verbosely list directory contents (`ls -l -b’) vdir: Verbosely list directory contents (`ls -l -b’) vi: Text Editor vim: Text Editor vmstat: Report virtual memory statistics
wait: Wait for a process to complete watch: Execute/display a program periodically wc: Print byte, word, and line counts whereis: Search the user’s $path, man pages and source files for a program which: Search the user’s $path for a program file while: Execute commands who: Print all usernames currently logged in whoami: Print the current user id and name (`id -un’) wget: Retrieve web pages or files via HTTP, HTTPS or FTP write: Send a message to another user
xargs: Execute utility, passing constructed argument list(s) xdg-open: Open a file or URL in the user’s preferred application.
yes: Print a string until interrupted youtube-dl: Downloads a Youtube video
zcmp: Minimal utilitie used to compare compressed files zdiff: Minimal utilitie used to compare compressed files zip: Is a simple easy-to-use utility used to package and compress (archive) files. zz: Offers quick access to files and directories in Linux
HERE ARE SOME HANDY AND FUN PROGRAMS
Git is an open-source software version control application distributed under the terms of the GNU General Public License version 2. It can be used for collaboratively sharing and editing code but is commonly referenced here as a primary tool for copying (or “cloning”) code repositories found on GitHub.
Git is a must-have tool for pentesters looking to expand their toolset beyond what’s available in the default Kali Linux repositories. Git can be installed using the below apt command.
sudo apt install git
In Linux, if you need help regarding a command, all you need to do is to open its man page. But what if a situation arises wherein the requirement is to quickly search the names and descriptions of all available man pages? Well, Linux has got your covered, as there exists a command dubbed apropos that does exactly this for you.
There’s only one right way to check the weather.
Telnet is an application protocol used on the Internet or local area network to provide a bidirectional interactive text-oriented communication facility using a virtual terminal connection. User data is interspersed in-band with Telnet control information in an 8-bit byte oriented data connection over the Transmission Control Protocol (TCP). The unique thing you will need here once again it’s your terminal and an Internet connection.
How can you pretend to be a hacker if you don’t read Hacker News?
sudo pip install haxor-news # The below command will show you how to use haxor-news hn --help
hn top hn show 15
If you have any questions about this article, any feedback, suggestions if you want to share your thoughts, please feel free to do it using the below comment form.