Testing, Linux and Server Assessment Description Assignment Questions
Question 1: Set Up Your DevOps Project Structure
Objective: Create a complete project directory from scratch, apply correct permissions, and set ownership. The structure you build here will be used directly by your script in Question 2.
● Create the directory /home/ec2-user/webapp/ with three subdirectories inside it: scripts/, logs/, and config/ using a single mkdir -p command.
● Use cat > to create config/app.conf with two lines of content: APP_NAME=WebApp and PORT=8080. Save using Ctrl+D.
● Use touch to create an empty file at logs/app.log. Confirm it is 0 bytes using ls -l.
● Set permissions: chmod 755 scripts/ and chmod 644 config/app.conf. Explain in your own words what 755 and 644 mean for owner, group, and others.
● Recursively change ownership of the entire webapp/ directory to root:root using chown -R. Then run ls -lR /home/ec2-user/webapp/ and share the output to confirm every file and folder shows root root as owner.
Expected final structure:
webapp/
├── scripts/ (drwxr-xr-x root root)
├── logs/ (drwxr-xr-x root root)
└── config/ (drwxr-xr-x root root)
├── app.conf (-rw-r--r-- root root)
└── app.log (-rw-r--r-- root root)
Brief Steps:
● Create all directories at once: mkdir -p /home/ec2-user/webapp/scripts /home/ec2-user/webapp/logs /home/ec2-user/webapp/config
● Create app.conf with content: cat > /home/ec2-user/webapp/config/app.conf (type content, then Ctrl+D)
● Create empty log file: touch /home/ec2-user/webapp/logs/app.log
● Set permissions: chmod 755 /home/ec2-user/webapp/scripts && chmod 644 /home/ec2-user/webapp/config/app.conf
● Change ownership recursively: sudo chown -R root:root /home/ec2-user/webapp/
● Verify the full structure: ls -lR /home/ec2-user/webapp/
----------------------------Solution:------------------------------------------------------------
sudo mkdir -p /home/ec2-user/webapp/scripts /home/ec2-user/webapp/logs /home/ec2-user/webapp/config
sudo bash -c 'cat > /home/ec2-user/webapp/config/app.conf << EOF APP_NAME=WebApp PORT=8080 EOF'
sudo touch /home/ec2-user/webapp/logs/app.log
ls -l /home/ec2-user/webapp/logs/app.log
sudo chmod 755 /home/ec2-user/webapp/scripts sudo chmod 644 /home/ec2-user/webapp/config/app.conf
sudo chown -R root:root /home/ec2-user/webapp/
ls -lR /home/ec2-user/webapp/
Screenshot
---------------------------------------------------------------------------------------------------------------------------------------------------
Question 2: Write an Interactive Log Script
Objective: Using the webapp/ structure from Question 1, write a bash script that takes user input, reads a config file, and writes timestamped log entries. The log entries you create here will be the input for Question 3.
● Create a new script file at /home/ec2-user/webapp/scripts/log_user.sh using vim. Start with the correct shebang line.
● Use read -p to prompt the user to enter their name and store it in a variable called username.
● Use cat with the absolute path to display the contents of config/app.conf to the screen.
● Append a log entry to logs/app.log using echo >> in this exact format: Login:
● Give the script execute permission with chmod +x and run it at least 3 times using different names (e.g., Chirag, Priya, Ravi) so the log file has multiple entries for Question 3.
Sample script structure:
#!/bin/bash
read -p "Enter your name: " username
cat /home/ec2-user/webapp/config/app.conf
echo "Login:
cat /home/ec2-user/webapp/logs/app.log
Brief Steps:
● Navigate into scripts directory: cd /home/ec2-user/webapp/scripts/
● Open vim and create the script: vim log_user.sh → press i → write script → Esc → :wq
● Give execute permission: chmod +x log_user.sh
● Run the script 3 times with different names: ./log_user.sh
● Check the log file was updated: cat /home/ec2-user/webapp/logs/app.log
----------------------------Solution:------------------------------------------------------------
sudo bash -c 'cat > /home/ec2-user/webapp/scripts/log_user.sh << EOF
#!/bin/bash
read -p "Enter your name: " username
cat /home/ec2-user/webapp/config/app.conf
echo "Login:
sudo chmod +x /home/ec2-user/webapp/scripts/log_user.sh
sudo /home/ec2-user/webapp/scripts/log_user.sh # Enter: Chirag sudo /home/ec2-user/webapp/scripts/log_user.sh # Enter: Priya sudo /home/ec2-user/webapp/scripts/log_user.sh # Enter: Ravi
cat /home/ec2-user/webapp/logs/app.log
Screenshot
-----------------------------------------------------------------------------------------------------------------------------------------------------------
**Question 3: User Management and File Permission Control**
Objective: Create 4 Linux users. Two of them must have write access to the log_user.sh script created in Question 2, and the other two must have read-only access. Use Linux groups and chmod to control this.
● Create a group called writers
● Create 4 users with home directories:
● Add the two write-access users to the writers group:
● Change the group ownership of log_user.sh to writers: sudo chown root:writers /home/ec2-user/webapp/scripts/log_user.sh
● Set permissions to 664 so writers group gets rw and others get r only: sudo chmod 664 /home/ec2-user/webapp/scripts/log_user.sh
● Verify the permission output shows: -rw-rw-r-- root writers log_user.sh
● Switch to each user and test access to confirm it is working correctly:
Permission Layout (chmod 664):
chmod 664 log_user.sh
6 6 4
Owner(rw) Group(rw) Others(r)
root writers devuser3, devuser4
Brief Steps:
● Create the writers group: sudo groupadd writers
● Create all 4 users: sudo useradd -m devuser1 (repeat for devuser2, devuser3, devuser4)
● Add devuser1 and devuser2 to writers: sudo usermod -aG writers devuser1 && sudo usermod -aG writers devuser2
● Change group ownership of the script: sudo chown root:writers /home/ec2-user/webapp/scripts/log_user.sh
● Set 664 permissions: sudo chmod 664 /home/ec2-user/webapp/scripts/log_user.sh
● Verify permissions: ls -l /home/ec2-user/webapp/scripts/log_user.sh
● Test write access (devuser1/devuser2): su - devuser1 then echo 'test' >> /home/ec2-user/webapp/scripts/log_user.sh
● Test read-only access (devuser3/devuser4): su - devuser3 then cat /home/ec2-user/webapp/scripts/log_user.sh
----------------------------Solution:------------------------------------------------------------
sudo groupadd writers
sudo useradd -m devuser1 sudo useradd -m devuser2 sudo useradd -m devuser3 sudo useradd -m devuser4
sudo passwd devuser1 sudo passwd devuser2 sudo passwd devuser3 sudo passwd devuser4
sudo usermod -aG writers devuser1 sudo usermod -aG writers devuser2
sudo chown root:writers /home/ec2-user/webapp/scripts/log_user.sh
sudo chmod 664 /home/ec2-user/webapp/scripts/log_user.sh
ls -l /home/ec2-user/webapp/scripts/log_user.sh
su - devuser1 echo 'test' >> /home/ec2-user/webapp/scripts/log_user.sh exit
su - devuser2 echo 'test' >> /home/ec2-user/webapp/scripts/log_user.sh exit
su - devuser3 cat /home/ec2-user/webapp/scripts/log_user.sh echo 'test' >> /home/ec2-user/webapp/scripts/log_user.sh exit
su - devuser4 cat /home/ec2-user/webapp/scripts/log_user.sh echo 'test' >> /home/ec2-user/webapp/scripts/log_user.sh exit
Screenshot
Commands : Question 1:
sudo mkdir -p /home/ec2-user/webapp/scripts /home/ec2-user/webapp/logs /home/ec2-user/webapp/config
sudo bash -c 'cat > /home/ec2-user/webapp/config/app.conf << EOF APP_NAME=WebApp PORT=8080 EOF'
sudo touch /home/ec2-user/webapp/logs/app.log
ls -l /home/ec2-user/webapp/logs/app.log
sudo chmod 755 /home/ec2-user/webapp/scripts sudo chmod 644 /home/ec2-user/webapp/config/app.conf
sudo chown -R root:root /home/ec2-user/webapp/
ls -lR /home/ec2-user/webapp/
Question 2:
sudo bash -c 'cat > /home/ec2-user/webapp/scripts/log_user.sh << EOF
#!/bin/bash
read -p "Enter your name: " username
cat /home/ec2-user/webapp/config/app.conf
echo "Login:
sudo chmod +x /home/ec2-user/webapp/scripts/log_user.sh
sudo /home/ec2-user/webapp/scripts/log_user.sh # Enter: Chirag sudo /home/ec2-user/webapp/scripts/log_user.sh # Enter: Priya sudo /home/ec2-user/webapp/scripts/log_user.sh # Enter: Ravi
cat /home/ec2-user/webapp/logs/app.log
Question 3:
sudo groupadd writers
sudo useradd -m devuser1 sudo useradd -m devuser2 sudo useradd -m devuser3 sudo useradd -m devuser4
sudo passwd devuser1 sudo passwd devuser2 sudo passwd devuser3 sudo passwd devuser4
sudo usermod -aG writers devuser1 sudo usermod -aG writers devuser2
sudo chown root:writers /home/ec2-user/webapp/scripts/log_user.sh
sudo chmod 664 /home/ec2-user/webapp/scripts/log_user.sh
ls -l /home/ec2-user/webapp/scripts/log_user.sh
su - devuser1 echo 'test' >> /home/ec2-user/webapp/scripts/log_user.sh exit
su - devuser2 echo 'test' >> /home/ec2-user/webapp/scripts/log_user.sh exit
su - devuser3 cat /home/ec2-user/webapp/scripts/log_user.sh echo 'test' >> /home/ec2-user/webapp/scripts/log_user.sh exit
su - devuser4 cat /home/ec2-user/webapp/scripts/log_user.sh echo 'test' >> /home/ec2-user/webapp/scripts/log_user.sh exit