📖 Scenario: You are a system administrator learning how to read user account information on a Linux system. The /etc/passwd file stores basic user info, and the /etc/shadow file stores secure password data.Understanding these files helps you manage users and security on your system.
🎯 Goal: Build simple commands to read and extract information from /etc/passwd and /etc/shadow files.
📋 What You'll Learn
Use cat to display file contents
Use cut to extract specific fields
Use grep to find lines matching a username
Understand the structure of /etc/passwd and /etc/shadow
💡 Why This Matters
🌍 Real World
System administrators often need to read and understand user account files to manage users and security on Linux systems.
💼 Career
Knowing how to read /etc/passwd and /etc/shadow is essential for Linux system administration and security auditing roles.
Progress0 / 4 steps
1
Display the contents of /etc/passwd
Use the command cat /etc/passwd to display the full contents of the /etc/passwd file.
Linux CLI
Hint
The cat command shows the whole file content.
2
Extract the usernames from /etc/passwd
Use the command cut -d ':' -f 1 /etc/passwd to extract only the usernames (the first field) from the /etc/passwd file.
Linux CLI
Hint
The cut command splits lines by ':' and selects the first part.
3
Find the line for the user root in /etc/shadow
Use the command grep '^root:' /etc/shadow to find the line starting with root: in the /etc/shadow file.
Linux CLI
Hint
The grep command searches for lines starting with 'root:' in the file.
4
Display the username and encrypted password field from /etc/shadow
Use the command cut -d ':' -f 1,2 /etc/shadow to display only the username and encrypted password fields from the /etc/shadow file.
Linux CLI
Hint
Use cut with fields 1 and 2 separated by a comma to get username and password.
Practice
(1/5)
1. What is the primary purpose of the /etc/passwd file in Linux?
easy
A. To store encrypted user passwords securely
B. To configure network settings
C. To store user account information accessible to all users
D. To log system errors
Solution
Step 1: Understand the role of /etc/passwd
The /etc/passwd file contains user account details like username, user ID, group ID, home directory, and shell. It is readable by all users.
Step 2: Differentiate from /etc/shadow
The encrypted passwords are stored separately in /etc/shadow for security, not in /etc/passwd.
Final Answer:
To store user account information accessible to all users -> Option C
Quick Check:
/etc/passwd = user info file [OK]
Hint: Remember: passwd = public user info, shadow = private passwords [OK]
Common Mistakes:
Confusing /etc/passwd with /etc/shadow
Thinking passwords are stored in /etc/passwd
Assuming /etc/passwd stores system logs
2. Which of the following lines correctly shows the format of a typical /etc/shadow entry?
easy
A. username:x:1000:1000:User Name:/home/user:/bin/bash
B. username:$6$randomsalt$encryptedpassword:18000:0:99999:7:::
C. username:password:1000:1000:User Name:/home/user:/bin/bash
D. username:encryptedpassword:1000:1000:User Name:/home/user:/bin/bash
Solution
Step 1: Identify /etc/shadow format
The /etc/shadow file stores encrypted passwords and related info. The password field looks like $6$randomsalt$encryptedpassword for SHA-512 encryption.
Step 2: Compare options
The line username:$6$randomsalt$encryptedpassword:18000:0:99999:7::: matches the shadow file format with encrypted password (indicated by $6$) and password aging fields separated by colons. The other options resemble /etc/passwd format or have incorrect password fields.
Final Answer:
username:$6$randomsalt$encryptedpassword:18000:0:99999:7::: -> Option B
Quick Check:
/etc/shadow entries have encrypted passwords with $ signs [OK]
Hint: Look for $ signs and many colon-separated fields in shadow entries [OK]
Common Mistakes:
Confusing /etc/passwd format with /etc/shadow
Expecting plain text passwords in /etc/shadow
Missing fields after encrypted password
3. Given the following command:
grep '^root:' /etc/passwd | cut -d':' -f1,3,7
What will be the output format?
medium
A. root:/bin/bash
B. root:x:0:0:root:/root:/bin/bash
C. root:0:0
D. root:0:/bin/bash
Solution
Step 1: Understand the command parts
grep '^root:' /etc/passwd finds the line starting with 'root:'. cut -d':' -f1,3,7 extracts fields 1 (username), 3 (UID), and 7 (shell) separated by colons.
4. You run this command to check password expiry info:
sudo chage -l username
But it shows an error: chage: user 'username' does not exist. What is the most likely cause?
medium
A. The username is missing in /etc/passwd
B. The /etc/shadow file is empty
C. The chage command is not installed
D. The user has no password set
Solution
Step 1: Understand chage user check
The chage command checks user password expiry info by looking up the username in /etc/passwd.
Step 2: Analyze error cause
Error 'user does not exist' means the username is not found in /etc/passwd. If the user was missing there, chage cannot proceed.
Final Answer:
The username is missing in /etc/passwd -> Option A
Quick Check:
User must exist in /etc/passwd for chage to work [OK]
Hint: Check /etc/passwd for username before using chage [OK]
Common Mistakes:
Assuming /etc/shadow emptiness causes this error
Thinking chage command missing causes user error
Believing no password set triggers 'user does not exist'
5. You want to write a script that lists all users who have a valid login shell (not /usr/sbin/nologin or /bin/false) by reading /etc/passwd. Which command snippet correctly filters these users?