Table of Contents

Debian Configuration Files

Most system configuration lives in /etc. Understanding common formats and safety practices is essential.

File Locations

Common Formats

Key=value:

DEBUG=true
MAX_CONNECTIONS=100

INI-style sections:

[database]
host=localhost
port=5432
 
[logging]
level=info

YAML (indentation matters):

database:
  host: localhost
  port: 5432
logging:
  level: info

JSON:

{
  "database": {
    "host": "localhost",
    "port": 5432
  }
}

Editing Safely

Always backup before editing:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo nano /etc/nginx/nginx.conf

Test configuration (if tool supports it):

sudo nginx -t
sudo apachectl configtest

Applying Changes

Many services auto-reload on file change. Always verify:

sudo systemctl restart nginx

Check status after restart:

sudo systemctl status nginx

Viewing Changes

Compare original and backup:

diff /etc/file /etc/file.bak

Show what changed:

sudo git diff /etc/file

Version Control

On production servers, version control /etc:

cd /etc
sudo git init
sudo git config user.name "Admin"
sudo git config user.email "[email protected]"
sudo git add -A
sudo git commit -m "Initial config"

Now track all changes:

sudo git diff                # uncommitted changes
sudo git log --oneline      # history

Common Files

Never edit by hand: - /etc/sudoers — use visudo - /etc/shadow — use passwd, usermod - /etc/group — use groupadd, groupmod

Comments

Comments start with #. Some formats support ; instead. Remove old configs when possible rather than commenting them out.