Learn how to display undo and redo timestamps in the Vim status bar using vim-airline. Enhance your editing efficiency with this simple guide.
The post How To Display Undo And Redo Timestamps In Vim Status Bar Using vim-airline appeared first on Linux Today.
In an age where data breaches and cyber threats are growing both in frequency and sophistication, securing your Linux system is more important than ever. Ubuntu, one of the most popular Linux distributions, comes with a powerful security tool that many users overlook — AppArmor. Designed to provide a robust layer of defense, AppArmor enhances Ubuntu's built-in security model by confining programs with access control profiles.
This article will walk you through the ins and outs of AppArmor, explain why it's a crucial part of a hardened Ubuntu system, and teach you how to leverage it to protect your environment.
AppArmor (Application Armor) is a Mandatory Access Control (MAC) system that supplements the traditional Discretionary Access Control (DAC) provided by Linux file permissions. While DAC relies on user and group ownership for access control, MAC goes a step further by enforcing rules that even privileged users must obey.
AppArmor operates by loading security profiles for individual applications, specifying exactly what files, capabilities, and system resources they are allowed to access. This approach prevents compromised or misbehaving applications from harming the rest of the system.
AppArmor vs. SELinuxWhile SELinux (Security-Enhanced Linux) is another MAC system popular on Red Hat-based distributions, AppArmor is often preferred in Ubuntu environments for its ease of use, human-readable syntax, and simple profile management. Where SELinux can be daunting and complex, AppArmor offers a more user-friendly approach to strong security.
Before diving into how to use AppArmor, it's important to understand its core concepts:
ProfilesA profile is a set of rules that define what an application can and cannot do. These are usually stored in the /etc/apparmor.d/
directory and loaded into the kernel at runtime.
Enforce: The profile is actively enforced, and actions outside the defined rules are blocked.
Complain: The profile logs rule violations but doesn’t enforce them, which is useful for debugging.
Profiles specify permissions for:
File access (read, write, execute)
Capabilities (e.g., net_admin
, sys_admin
)
Network operations
Signals and inter-process communications
Discover Kdenlive 25.04, featuring advanced local object segmentation for enhanced video editing. Elevate your projects with this powerful tool today!
The post Kdenlive 25.04 Video Editor Lands with Local Object Segmentation appeared first on Linux Today.
Discover the best free and open source alternatives to Microsoft Forms. Explore powerful tools that enhance your form-building experience without the cost.
The post Best Free and Open Source Alternatives to Microsoft Forms appeared first on Linux Today.
Explore the top three open-source CAD software available for Ubuntu. Perfect for designers and engineers, these tools offer flexibility and robust features for your projects.
The post 3 Open-Source CAD Software You Can Try on Ubuntu appeared first on Linux Today.
Discover how to effectively use the echo command in shell scripting. Learn syntax, examples, and tips to enhance your scripting skills today.
The post How to Use the echo Command in Shell Scripting appeared first on Linux Today.
Mozilla Thunderbird 138 open-source email client brings customizable new mail alerts, dark mode refinements, folder management fixes, and more.
The post Mozilla Thunderbird 138 Released, Here’s What’s New appeared first on Linux Today.
This blog post concerns the HTTP 402 Error, a relatively new status code for Payment Required Error in the browser.
The post 402 Error: Payment Required – What is it and how to fix it? appeared first on Linux Today.
If you've started using Flatpak apps on your Linux system, you might have noticed that they seem to take up a surprising amount of room on your hard drive. Why Flatpak apps use so much disk space and are larger in size compared to traditional packages?
The post Here’s Why Flatpak Apps Use So Much Disk Space On Linux appeared first on Linux Today.
Redis leadership asserts that the AGPLv3 license strikes the right balance between protecting the company's business interests and supporting the open-source community. We'll see if developers and customers agree.
The post Redis returns to open source with AGPLv3 license but not everyone is happy appeared first on Linux Today.
ricksay builds on the work from ponysay. It provides funny quotes from Rick and Morty Adventures for your console. Rick and Morty is an American adult animated science fiction sitcom.
The post Linux Candy: ricksay – Rick and Morty quotes of the day appeared first on Linux Today.
Ubuntu has long relied on APT and DEB packages for software management, with Snap becoming increasingly prevalent in recent releases. However, a third contender has risen to prominence in the Linux world: Flatpak. Designed as a universal software packaging and distribution framework, Flatpak offers a fresh, sandboxed approach to application management that works seamlessly across distributions. In this article, we’ll dive into how to manage software with Flatpak on Ubuntu, providing everything you need to get started, optimize your workflow, and compare it with existing solutions.
Flatpak is a modern application packaging system developed by the Free Desktop Project. Its goal is to enable the distribution of desktop applications in a sandboxed environment, ensuring greater security, consistency, and compatibility across Linux distributions.
Key Benefits of FlatpakCross-distribution compatibility: A single Flatpak package works on any Linux distribution with Flatpak support.
Sandboxing: Applications run in isolation, reducing the risk of affecting or being affected by other software or the host system.
Bundle dependencies: Flatpak packages include all necessary dependencies, reducing compatibility issues.
Version control: Developers can ship and maintain multiple versions easily.
Storage overhead: Applications may use more disk space due to bundled runtimes.
Redundancy: Ubuntu users already have Snap, which can lead to confusion or duplication.
Although Flatpak isn't pre-installed on Ubuntu, setting it up is straightforward.
Step 1: Install FlatpakOpen a terminal and run:
sudo apt update sudo apt install flatpak
To integrate Flatpak apps into the Ubuntu Software GUI:
sudo apt install gnome-software-plugin-flatpak
This step allows Flatpak apps to appear alongside APT and Snap apps in GNOME Software.
Step 3: Reboot or Log OutRestart your session to apply system changes and enable Flatpak integration fully.
Most Flatpak applications are hosted on Flathub, the central repository for Flatpak packages.
To add Flathub:
The Linux boot process is a sequence of events that initializes a Linux system from a powered-off state to a fully operational state. The knowledge of Linux boot process is essential when it comes to technical interviews, but sometimes it becomes difficult to remember or recall the key steps in the process. This article discusses a quick and easy way to remember it - Best Geeks Know It! Yes, you only need to remember that.
Best Geeks Know It -> B – G – K – I -> BIOS – GRUB – KERNEL – INIT
This BGKI acronym provides a high-level overview of the Linux boot process. Each step builds upon the previous one, gradually bringing the system to a fully operational state. Of course, there are more detailed processes within each step, but this simplified version should give you a good foundation for understanding and remembering the Linux boot sequence.
Here's a concise expansion of B-G-K-I:
B - BIOS/UEFI
G - GRUB
/boot/grub/grub.conf
initramfs
(temporary root filesystem) into RAMK - KERNEL
initramfs
I - INIT (systemd in modern systems)
/etc/inittab
(traditional) or unit files (systemd
)Key files to remember
/boot/grub/grub.conf
- GRUB configuration
/etc/systemd/system/
- systemd unit files
/etc/inittab
- Init configuration (traditional)
In a world teeming with Linux distributions — from Ubuntu to Arch, Debian to Fedora — the idea of building your own may seem daunting, if not redundant. Yet, for many technologists, enthusiasts, and developers, creating a custom Linux distribution isn't just an exercise in reinvention; it's an act of empowerment. Whether your goal is to tailor a lightweight OS for embedded devices, create a secure workstation, develop an education-focused system, or simply understand Linux more intimately, building your own distribution is one of the most fulfilling journeys in open-source computing.
This guide walks you through every stage of creating your own Linux distribution — from selecting core components to building, customizing, and distributing your personalized operating system.
A Linux distribution (or "distro") is a complete operating system built on the Linux kernel. It includes:
Kernel – The core interface between hardware and software.
Init System – Handles booting and service management (e.g., systemd, OpenRC).
Userland Tools – Basic utilities from projects like GNU Coreutils and BusyBox.
Package Manager – Tool to install, upgrade, and remove software (e.g., APT, Pacman, DNF).
Optional GUI – A desktop environment or window manager (e.g., GNOME, XFCE, i3).
Reasons vary, but common motivations include:
Learning – Deepen your understanding of system internals.
Performance – Remove bloat for a leaner, faster system.
Branding – Create a branded OS for an organization or product.
Customization – Tailor software stacks for specific use-cases.
Embedded Applications – Create firmware or OS images for hardware devices.
Start by asking:
Who is the target user?
What hardware should it support?
Will it be a desktop, server, or headless system?
Should it boot live or be installed?
You can either:
Build from scratch: Using projects like Linux From Scratch (LFS).
Data loss is a nightmare for any computer user, and Linux users are no exception. Despite the robust architecture of Linux operating systems, disasters can strike in the form of accidental deletions, corrupted partitions, or failing storage devices. Whether you're a system administrator, developer, or everyday Linux user, understanding how to recover data can be the difference between a minor inconvenience and a major setback.
This guide will walk you through the practical strategies and essential tools for recovering lost or corrupted files on Linux.
Data loss can occur for various reasons:
Accidental Deletion: Files removed with rm
or cleared trash.
Filesystem Corruption: Caused by improper shutdowns, power failures, or software bugs.
Partition Issues: Misconfigured or overwritten partition tables.
Hardware Failures: Hard drive degradation, bad sectors, or failing SSDs.
Linux filesystems like ext4
don’t immediately erase data when a file is deleted. Instead, the filesystem marks the file's space as free. Until that space is overwritten, the data may be recoverable. This behavior is the cornerstone of most recovery techniques.
The most critical step is to minimize system activity on the affected drive. Any write operation can potentially overwrite recoverable data.
Disconnect and Mount Read-OnlyIf the loss happened on a secondary drive, physically disconnect it and mount it read-only on another machine:
sudo mount -o ro /dev/sdX1 /mnt/recovery
Use tools like dd
or ddrescue
to create a complete image of the drive for analysis:
sudo dd if=/dev/sdX of=/mnt/external/backup.img bs=4M status=progress
Or with ddrescue
, which handles read errors more gracefully:
sudo ddrescue /dev/sdX /mnt/external/recovery.img /mnt/external/logfile
Work from the image to preserve the original drive.
To avoid using the target system, boot into a Live Linux distribution like:
SystemRescueCD – tailored for system repair.
Ubuntu Live CD – user-friendly and widely available.
Email remains a cornerstone of modern communication. From business notifications to personal messages, having a robust and reliable mail server is essential. While cloud-based solutions dominate the mainstream, self-hosting a mail server offers control, customization, and learning opportunities that managed services can't match.
In this guide, we will explore how to set up a secure and efficient mail server using Dovecot on an Ubuntu Server. Dovecot is a lightweight and high-performance IMAP and POP3 server that provides secure access to mailboxes. When paired with Postfix, it forms a powerful mail server stack capable of sending and receiving messages seamlessly.
Whether you're a system administrator, a DevOps enthusiast, or simply curious about running your own mail infrastructure, this article provides a deep dive into configuring Dovecot on Ubuntu.
Before we dive into configuration and deployment, ensure the following requirements are met:
Ubuntu Server (20.04 or later recommended)
Root or sudo access
Static IP address assigned to your server
Fully Qualified Domain Name (FQDN) pointing to your server
Proper DNS records:
A record pointing your domain to your server IP
MX record pointing to your mail server’s FQDN
Optional: SPF, DKIM, and DMARC for email authentication
You should also ensure that your system is up-to-date:
sudo apt update && sudo apt upgrade -y
A modern mail server is composed of several components:
Postfix: SMTP server responsible for sending and routing outgoing mail.
Dovecot: Handles retrieval of mail via IMAP/POP3 and secure authentication.
SpamAssassin / ClamAV: For filtering spam and malware.
TLS/SSL: Provides encrypted communication channels.
Here's how they work together:
Postfix receives email from external sources.
It stores messages into local mailboxes.
Dovecot lets users access their mail securely using IMAP or POP3.
TLS/SSL encrypts the entire process, ensuring privacy.
sudo apt install postfix -y
During installation, you will be prompted to choose a configuration. Select:
Debugging and profiling are critical skills in a developer's toolbox, especially when working with low-level system applications. Whether you're tracking down a segmentation fault in a C program or understanding why a daemon fails silently, mastering tools like GDB (GNU Debugger) and strace can dramatically improve your efficiency and understanding of program behavior.
In this guide, we’ll dive deep into these two powerful tools, exploring how they work, how to use them effectively, and how they complement each other in diagnosing and resolving complex issues.
Debugging is the systematic process of identifying, isolating, and fixing bugs—errors or unexpected behaviors in your code. It’s an integral part of development that ensures software quality and stability. While high-level languages may offer interactive debuggers, compiled languages like C and C++ often require robust tools like GDB for line-by-line inspection.
What is Profiling?Profiling, on the other hand, is about performance analysis. It helps you understand where your application spends time, which functions are called frequently, and how system resources are being utilized. While GDB can aid in debugging, strace provides a view of how a program interacts with the operating system, making it ideal for performance tuning and root cause analysis of runtime issues.
GDB is the standard debugger for GNU systems. It allows you to inspect the internal state of a program while it’s running or after it crashes. With GDB, you can set breakpoints, step through code, inspect variables, view call stacks, and even modify program execution flow.
Preparing Your ProgramTo make your program debuggable with GDB, compile it with debug symbols using the -g
flag:
gcc -g -o myapp myapp.c
This embeds symbol information like function names, variable types, and line numbers, which are essential for meaningful debugging.
Basic GDB CommandsHere are some fundamental commands you'll use frequently:
gdb ./myapp # Start GDB with your program run # Start the program inside GDB break main # Set a breakpoint at the 'main' function break filename:line# Break at specific line next # Step over a function step # Step into a function continue # Resume program execution print varname # Inspect the value of a variable backtrace # Show the current function call stack quit # Exit GDB
Package management is at the heart of every Linux system. It’s what makes installing, updating, and managing software on Linux-based distributions not just possible but streamlined and elegant. For users of Debian and its popular derivative Ubuntu, two powerful tools often stand at the center of debate: apt-get
and aptitude
. Though both are capable of managing packages effectively, they have unique characteristics that make them better suited to different use cases.
This article provides a comparison of apt-get
and aptitude
, helping you understand their roles, differences, and when to use one over the other.
Before diving into the specifics, it's helpful to understand the ecosystem in which both tools operate.
What is a Package Manager?A package manager is software that automates the process of installing, upgrading, configuring, and removing software packages from a computer. In Debian-based systems, packages are distributed in .deb
format.
APT, or Advanced Package Tool, is the foundation of package management in Debian-based systems. It works with core components such as:
dpkg
– the base tool that installs and manages .deb
files
apt-get
/ apt
– command-line front-ends for retrieving and managing packages from repositories
apt-cache
– used for searching and querying package information
aptitude
– a higher-level package manager that interacts with APT and dpkg under the hood
apt-get
?apt-get
has been a trusted part of Debian since the late 1990s. It was designed to provide a consistent command-line interface to the APT system and has been widely used in scripts and system automation.
Handles package installation, upgrade, and removal
Fetches and resolves dependencies automatically
Interacts directly with APT repositories
Here are some frequently used apt-get
commands: