As developers, dealing with files is part of our daily routine—creating, modifying, sharing, zipping, and deploying them. But sometimes, unexpected file permission errors, access issues, or compression mishaps stop us in our tracks.
In this post, we’ll cover:
- Basic file handling commands
- Understanding and changing file permissions
- Working with
.zip
and compressed files - Solving common permission-related errors
- Commands for macOS, Linux, and Windows
📁 1. Understanding File Permissions
🐧 Linux/macOS Permissions (Unix-style)
Each file has 3 types of permissions:
- r = Read
- w = Write
- x = Execute
And 3 groups:
- Owner
- Group
- Others
Example:
ls -l
# -rwxr-xr-- 1 user group 1234 Jan 1 10:00 script.sh
chmod
: Change file permissions
chmod 755 script.sh # Owner: all, Group: read/execute, Others: read/execute
chmod +x run.sh # Add execute permission
chmod -w file.txt # Remove write permission
chown
: Change file owner
sudo chown username:groupname file.txt
🪟 Windows File Permissions
- GUI: Right-click > Properties > Security
- CLI with PowerShell:
Get-Acl "file.txt" | Format-List
# To change (complex syntax):
$acl = Get-Acl "file.txt"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Username","FullControl","Allow")
$acl.SetAccessRule($rule)
Set-Acl "file.txt" $acl
For simpler permission fixes:
icacls "file.txt" /grant User:F
🧳 2. Working with Zip Files
Linux/macOS:
- Zip a folder:
zip -r archive.zip foldername/
- Unzip:
unzip archive.zip
Windows:
- PowerShell zip:
Compress-Archive -Path C:\MyFolder -DestinationPath C:\MyFolder.zip
- Unzip:
Expand-Archive -Path C:\MyFolder.zip -DestinationPath C:\Unzipped
macOS tip:
Use tar
for better compatibility:
tar -czvf archive.tar.gz foldername/
tar -xzvf archive.tar.gz
⚠️ 3. Common Errors and Fixes
❌ Permission Denied
Linux/macOS:
chmod +x script.sh # Make executable
sudo chown $USER file.txt # Take ownership
Windows:
- Run as Administrator
- Use
icacls
to reset:
icacls "file.txt" /reset
❌ File in Use
- Close all apps accessing the file
- On Windows: Use Process Explorer to see what’s locking it
❌ Cannot Delete Folder (Access Denied)
- May be due to:
- Permission issues
- File ownership
- Read-only attributes
Fix in Windows:
attrib -r -s -h foldername /S /D
🔐 4. Best Practices for Developers
- Always check permissions after downloading or cloning from Git
- Use
.gitignore
to avoid committing files with sensitive permissions - When deploying, verify that logs and cache folders are writable
- On shared servers or hosting (Linux-based), always use:
chmod 755 folders/
chmod 644 files/
- For Laravel, WordPress, etc., don’t forget:
chmod -R 775 storage/ bootstrap/cache/
🧠 5. Conclusion
Understanding file permissions is critical—not just to avoid errors, but also to protect your code and data. Whether you’re deploying a website, running a script, or unzipping a project, knowing how to control file access saves time and keeps things secure.
✅ Summary Cheat Sheet
Task | macOS/Linux | Windows |
---|---|---|
List permissions | ls -l | icacls file.txt |
Change permissions | chmod 755 file | icacls file.txt /grant User:F |
Change owner | chown user file | PowerShell ACL commands |
Zip folder | zip -r a.zip folder/ | Compress-Archive |
Unzip | unzip a.zip | Expand-Archive |