Permissions & Ownership

Set up practice files

cd ~
mkdir perms-practice && cd perms-practice
touch script.sh config.conf data.txt
ls -l

What This Does

Pro Tips

  1. ls -l shows long format with permissions
  2. First character: - = file, d = directory, l = link
  3. Next 9 characters: permissions (rwxrwxrwx)
  4. Then: owner, group, size, date, filename

Common Mistakes to Avoid

Understand permission string format

ls -l script.sh

What This Does

Pro Tips

  1. 10 characters total: [type][owner][group][other]
  2. r = read (4), w = write (2), x = execute (1)
  3. Owner = you (file creator)
  4. Group = users in same group
  5. Other = everyone else
  6. Directory needs x to cd into it

Common Mistakes to Avoid

Make a script executable

echo '#!/bin/bash' > script.sh
echo 'echo "Hello from script"' >> script.sh
./script.sh
chmod +x script.sh
./script.sh
ls -l script.sh

What This Does

Pro Tips

  1. chmod +x adds execute for owner, group, and other
  2. +x is shorthand for making scripts runnable
  3. ./script.sh runs script in current directory
  4. #!/bin/bash is shebang (tells system which interpreter to use)
  5. Scripts need both r and x permissions to run

Common Mistakes to Avoid

Remove write permission

chmod -w config.conf

ls -l config.conf

echo 'test' > config.conf

chmod +w config.conf

echo 'test' > config.conf

ls -l config.conf

What This Does

Pro Tips

  1. + adds permission, - removes permission
  2. chmod -w makes read-only (can’t modify or delete)
  3. chmod +w makes writable again
  4. Useful for: protecting production configs, preventing accidental rm
  5. Owner can still chmod even if file is read-only

Common Mistakes to Avoid

Set specific user/group permissions

chmod u+x,g-w,o-r data.txt

ls -l data.txt

chmod u=rw,g=r,o= config.conf

ls -l config.conf

What This Does

Pro Tips

  1. u = user/owner, g = group, o = other, a = all
  2. + adds, - removes, = sets exactly
  3. Combine with commas: chmod u+x,g+x,o-r file
  4. chmod u=rw,g=r,o= means owner rw, group r, other nothing
  5. Most secure: owner only (u=rw,g=,o=)

Common Mistakes to Avoid

Use numeric (octal) permissions

chmod 755 script.sh
ls -l script.sh
chmod 644 config.conf
ls -l config.conf
chmod 600 data.txt
ls -l data.txt

What This Does

Pro Tips

  1. r=4, w=2, x=1 (add them up)
  2. 7 = rwx (4+2+1)
  3. 6 = rw- (4+2)
  4. 5 = r-x (4+1)
  5. 4 = r– (4)
  6. 0 = — (none)
  7. Common: 755 (scripts), 644 (files), 600 (secrets), 700 (private dirs)

Common Mistakes to Avoid

Common permission patterns

chmod 755 script.sh

chmod 644 config.conf

chmod 600 data.txt

ls -l

What This Does

Pro Tips

  1. Scripts/binaries: 755 (rwxr-xr-x)
  2. Config files: 644 (rw-r–r–)
  3. Secrets/keys: 600 (rw——-)
  4. Directories: 755 (rwxr-xr-x)
  5. Private dirs: 700 (rwx——)
  6. Never: 777 (security risk!)

Common Mistakes to Avoid

Understand file ownership

ls -l
whoami
groups
id

What This Does

Pro Tips

  1. Every file has an owner and a group
  2. Owner can always change permissions (even if read-only)
  3. Root user can change any file’s permissions
  4. Groups allow sharing files among team members
  5. User IDs (UID) start at 1000 for regular users

Common Mistakes to Avoid

Directory permissions

mkdir testdir

chmod 644 testdir

ls testdir

cd testdir

chmod 755 testdir

cd testdir

pwd

What This Does

Pro Tips

  1. Directories MUST have x to enter them (cd)
  2. Directory r = list files (ls)
  3. Directory w = create/delete files inside
  4. Directory x = enter/traverse (cd)
  5. Standard dir permissions: 755 (rwxr-xr-x)
  6. Private dirs: 700 (rwx——)

Common Mistakes to Avoid

Recursive permission changes

cd ~/perms-practice

mkdir -p project/{src,tests,docs}

touch project/src/app.js project/tests/test.js project/docs/readme.md

ls -lR project

chmod -R 755 project

ls -lR project

What This Does

Pro Tips

  1. chmod -R applies to everything inside
  2. Use for: project directories, website files, shared folders
  3. Be careful: chmod -R 777 is dangerous (security risk)
  4. Common: chmod -R 755 for web directories
  5. Common: chmod -R 600 for sensitive config directories

Common Mistakes to Avoid

Clean up and review

cd ~
chmod -R 755 perms-practice
rm -r perms-practice
ls

What This Does

Pro Tips

  1. If rm fails, check permissions with ls -l
  2. chmod -R 755 makes everything deletable
  3. pwd before rm -r (safety check)
  4. Remember: 755 scripts, 644 files, 600 secrets, 700 private

Common Mistakes to Avoid