Beginner30 minutes

Step 1: Understanding File Permissions and Ownership

Before diving into commands, it's crucial to understand what file permissions and ownership mean in Unix-like systems. Every file and directory has associated permissions that determine who can read, write, or execute the file. Ownership determines which user and group have these permissions.

Practice Exercise

List the permissions and ownership of all files in your home directory. Identify which files you can write to but not execute.

Show Solution
ls -l ~
# This command lists files with their permissions and ownership. Look for files with 'w' in the user permissions but no 'x'.

Step 2: Using chmod to Change File Permissions

The chmod command is used to change the permissions of a file or directory. Permissions can be set using symbolic (e.g., u+x) or numeric (e.g., 755) modes.

chmod u+x script.sh
# Adds execute permission for the user

Practice Exercise

Create a script file and set it so that only the owner can read and write, but everyone can execute it.

Show Solution
echo '#!/bin/bash' > myscript.sh
chmod 711 myscript.sh
# 7 (rwx) for owner, 1 (--x) for group and others

Step 3: Advanced chmod: Setting Permissions Recursively

When dealing with directories, you might want to change permissions for all files and subdirectories within. The -R option allows chmod to operate recursively.

chmod -R 755 /path/to/directory
# Sets read, write, and execute permissions for the owner, and read and execute for group and others, recursively

Practice Exercise

You have a directory containing sensitive data. Set it so that only the owner can access the directory and its contents, but others can list the directory names.

Show Solution
chmod -R 700 /path/to/sensitive_data
chmod 711 /path/to/sensitive_data
# 700 for contents (only owner access), 711 for the directory itself (others can list)

Step 4: Using chown to Change File Ownership

The chown command changes the user and/or group ownership of a file or directory. This is useful when you need to transfer ownership to another user or group.

chown user:group file.txt
# Changes the ownership of file.txt to 'user' and 'group'

Practice Exercise

Transfer ownership of all .log files in /var/log to the user 'logger' and group 'loggers'.

Show Solution
sudo chown logger:loggers /var/log/*.log
# Changes ownership of all .log files to logger:loggers

Step 5: Combining chmod and chown for System Administration

In system administration, you often need to manage permissions and ownership together to ensure security and proper access control. This step combines chmod and chown in practical scenarios.

chown admin:admin script.sh
chmod 750 script.sh
# Changes ownership to admin and sets permissions to rwx for owner, r-x for group

Practice Exercise

You are setting up a web server. Ensure that all files in /var/www/html are owned by 'www-data' and that the group and others can read but not write or execute.

Show Solution
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 644 /var/www/html
# Sets ownership to www-data and permissions to rw-r--r--

Step 6: Troubleshooting Permission and Ownership Issues

Sometimes, incorrect permissions or ownership can lead to access issues. This step covers common problems and how to diagnose and fix them.

ls -l /path/to/file
# Check current permissions and ownership

Practice Exercise

A script is not executing. Check its permissions and ownership, and adjust so that it executes for the user but remains secure.

Show Solution
ls -l script.sh
# Check current settings
chmod u+x script.sh
chown user:group script.sh
# Ensure it's executable by the user and owned correctly

Step 7: Best Practices for Managing Permissions and Ownership

This final step discusses best practices for managing file permissions and ownership, emphasizing security and maintainability.

Practice Exercise

Review the permissions and ownership of all files in a critical directory. Suggest changes to improve security without hindering functionality.

Show Solution
ls -l /critical/directory
# Review current settings
# Suggest changes based on least privilege principle, e.g., removing world-writable permissions

Sign in to take Cornell notes on this lesson — they save automatically and stay with your account.

Sign in

Click to access the login or register cheese