=Logical Volume Management and Software Package Management=[[Category:OPS235]]
==Introduction=LAB PREPARATION=
In this lab you're going to:==Purpose / Objectives of Lab 1==
:* Learn how to add and remove software packages on your different There are many other tasks that a Linux systems.:* Learn how to properly adjust your various system administrator must perform other than installing Linux file systems by using and managing LVM both graphically (centos2) as well as command line (centos3)installing software.
== Required Materials (Bring to All Labs) ==A few additional tasks are user management and managing services.
* CentOS 6.5 x86_64 Live DVD
* CentOS 6.5 x86_64 Installation DVD1
* SATA Hard Disk (in removable disk tray)
* USB Memory Stick
* Lab Logbook
==Prerequisites==<u>Main objectives</u>:<br>:* Administer '''(add, remove, modify) users''' on a Linux system.:* Save time while adding new users using a template of '''start-up files'''.:* Create and manage '''groups''' on a Linux system.:* '''Start and Stop services''' on a Linux system.:* Display the '''status of running services''' on a Linux system.
* Completion and Instructor "Sign-off" of Lab 2: [[OPS235 Lab 2 - CentOS6]]
==Linux Command Online ReferenceMinimum Required Materials==Each Link below displays online manpages for each command (via [http://linuxmanpages.com/ http://linuxmanpages.com]):{|cellpadding="15" width="40%"
{|width="100%" cellpadding="5"
|'''LVM Information Utilities:'''
|'''LVM Management Utilities:'''
|'''Additional Utilities:'''
|- valign="top"
|
*[http://linuxmanpages.com/man8/vgs.8.php vgs]
*[http://linuxmanpages.com/man8/lvs.8.php lvs]
*[http://linuxmanpages.com/man8/pvs.8.php pvs]
*[http://linuxmanpages.com/man8/vgdisplay.8.php vgdisplay]
*[http://linuxmanpages.com/man8/lvdisplay.8.php lvdisplay]
*[http://linuxmanpages.com/man8/pvdisplay.8.php pvdisplay]
|
*[http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-system-config-lvm.html system-config-lvm] (Tutorial)
*[http://linuxmanpages.com/man8/lvextend.8.php lvextend]
*[http://linuxmanpages.com/man8/resize2fs.8.php resize2fs]
*[http://linuxmanpages.com/man8/lvcreate.8.php lvcreate]
*[http://linuxmanpages.com/man8/lvreduce.8.php lvreduce]
*[http://linuxmanpages.com/man8/pvcreate.8.php pvcreate]
*[http://linuxmanpages.com/man8/vgextend.8.php vgextend]
|
*[http://linuxmanpages.com/man8/mount.8.php mount]
*[http://linuxmanpages.com/man8/umount.8.php umount]
*[http://linuxmanpages.com/man8/yum.8.php yum]
*[http://linuxmanpages.com/man8/rpm.8.php rpm]
|}
|width==Resources on the web==Additional links to tutorials and HOWTOs"10%" | [[Image:'''Please read this page to get an overview of LVM:'''harddrive.png|thumb|left|85px|<br /b>Removable Hard Disk Pack<br /b>:* [[Logical Volume Management]] ('''Note:''' It is recommended to return to this guide as a reference when performing the next several investigationsSATA):* [http://fedoranews.org/alex/tutorial/rpm/ Using the RPM Utility]:* [http://www.centos.org/docs/5/html/yum/ Using the YUM Utility]
|width="10%" |[[Image:ubs-key.png|thumb|left|85px|<b>USB key</b><br>(for backups)]]
|width="10%" |[[Image:log-book.png|thumb|left|70px|<b>Lab4 Log Book</b>]]
=Logical Volume Management (Introduction)=|}
== Check Current LVM Information Prior to Performing Investigations My Toolkit (CLI Reference)==
'''LVM''' ('''Logical Volume {|width="50%" cellpadding="15"|- valign="top"|width="10%" |<u>User Management''') is used to manage hard disk drives :</u>[http:/ partitions for Unix/Linux systemsunixhelp.ed.ac. LVM provides more flexibility than just working with hard disks uk/CGI/man-cgi?useradd+8 useradd]<br>[http:/ hard disk partitions/unixhelp.ed.ac.uk/CGI/man-cgi?userdel+8 userdel]<br>[http://unixhelp.ed.ac. '''Volume Groups''' are areas used to define '''Physical Volumes''' (iuk/CGI/man-cgi?usermod+8 usermod]<br>[http://unixhelp.eed. hard disks, disk partitions, or other forms of storage devices)ac. '''Logical Volumes''' are then used to relate directories (mount points) to a specific physical volume or for a uk/CGI/man-cgi?groupadd+8 groupadd]<br>[http://unixhelp.ed.ac.uk/CGI/man-cgi?groupdel+8 groupdel]|width="range10%" or |<u>Managing Services</u>[http://unixhelp.ed.ac.uk/CGI/man-cgi?chkconfig+8 chkconfig]<br>[http://unixhelp.ed.ac.uk/CGI/man-cgi?service+8 service]<br>[http://www.dsm.fordham.edu/cgi-bin/man-cgi.pl?topic=systemctl systemctl]<br>|width="span10%" of physical volumes|<u>Miscellaneous</u>[http://man7.org/linux/man-pages/man5/passwd.5.html /etc/passwd]<br>[http://man7.org/linux/man-pages/man5/group.5.html /etc/group]<br>[http://man7.org/linux/man-pages/man5/shadow.5.html /etc/shadow]<br>[http://archive.linuxfromscratch.org/blfs-museum/1.0/BLFS-1.0/postlfs/skel.html /etc/skel]<br>Therefore, LVM allows more flexibility and growth potential for Linux systems (for example, having Logical volumes span multiple hard disks)[http://zenit.senecac. CentOS uses LVM by default upon installationon. Other Linux distributions may provide the capacity to install LVM, or later install and then use Logical Volume Managementca/wiki/index.php/Init_vs_systemd init vs systemd]|}
'''Although the concept of LVM is simple, it takes practice and preparation (or "thinking ahead") in order to correctly use this valuable tool'''. It is important for students to gain an understanding of LVM, and how to manage their filesystems using LVM. It is recommended for students to read the following resource prior to this lab and/or return to the following resource while performing this lab: [[Logical Volume Management]]
At this point, having completed [[OPS235 Lab 2 - CentOS6|Lab 2]] you should have roughly the following disk storage setup= INVESTIGATION 1:User/Group Management =
User account management is a very important operation that a Linux sysadmin does on a consistent basis. The sysadmin not only needs to add or remove user accounts by issuing commands, but may need to automate user account creations a large number ('''Note:''' These results batch) of potential employees. There are output from many features with the '''vgs'''Linux command to create new users including: specification of a home directory, '''pvs'''type of shell used, and '''lvs''' commands that provide volume groupname, physical volume password and logical volume information time-limit (referred to as "aging") for a new user account. Remove user accounts also have options such as removing the user account but keeping the home directory for each reference or evidence of the virtual machines that you created in lab2. Before proceeding, check these values with your own system to see if you are generally "on the right trackwrong-doing".)
* '''centos1'''In your ULI101 course, you learned to change permissions for directories and files relating to user, same group members and other group members. In this course, since you are the sysadmin with root privileges, you can create or remove groups as well as change the ownership of directories and files! We will now learn to perform key user account management operations in this section.
VG #PV #LV #SN Attr VSize VFree vg_centos1 == Part 1 2 0 wz--n- 9.50g 0: The /etc/passwd file ==
PV VG Fmt Attr PSize PFree# Look at the <b><code><span style="color:#3366CC;font-size:1.2em;">/etc/passwd</span></code></b> file.# Make note of the contents of that file. # Read about the file: http://devman7.org/vda3 vg_centos1 lvm2 alinux/man-- 9pages/man5/passwd.5.html # Make sure you know what information each field contains.# Why do you think there are so many users?# Look at the names of the users. What do you think these user names represent? Are they people?# What is the numeric user ID (UID) of the root user?# The user IDs of real users (people) are different from the user IDs of system accounts.50g 0What is the pattern?
LV VG Attr LSize Origin Snap% Move Log Copy% Convert lv_root vg_centos1 -wi-ao 8.03g lv_swap vg_centos1 -wi-ao '''Answer the Part 1observations / questions in your lab log book.47g '''
* '''centos2'''== Part 2: Adding users ==
VG #PV #LV #SN Attr VSize VFree
vg_centos2 1 3 0 wz--n- 19.51g 7.77g
PV VG Fmt Attr PSize PFree#Perform this part in your '''centos1''' VM. # Read the man page for the <b><code><span style="color:#3366CC;font-size:1.2em;">useradd</span></devcode></vda2 vg_centos2 lvm2 b> command.# Create three fictitious users (make-up their userids and full names. Give each of these newly-created users apassword.# Grep the <b><code><span style="color:#3366CC;font-size:1.2em;">/etc/passwd</span></code></b> file for each of the new users.#* What is the '''home''' directory of each user?#* What '''group''' is each user in?#* What other information can you provide regarding these users?#* Where are the '''passwords''' stored?# Look at the man page for '''/etc/shadow''' using the command: <b><code><span style="color:#3366CC;font-size:1.2em;">man 5 shadow</span></code></b>#* Grep the <b><code><span style="color:#3366CC;font-size:1.2em;">/etc/shadow</span></code></b> file for each of the new users.#* Make note of this information. # Create two new dummy users, <b><code><span style="color:#3366CC;font-size:1.2em;">ops235_1</span></code></b> and <b><code><span style="color:#3366CC;font- 19size:1.51g 72em;">ops235_2</span></code></b>.# Investigate the home directory of one of your new users.#* What files are there? Be sure to include hidden files.#* What do you think these files are used for?#* How does the operating system determine which files are created in a new home account? The answer can be found here:<br>http://www.linuxhowtos.org/Tips%20and%20Tricks/using_skel.htm#* Look at the files (including hidden files) in the template directory referred to in the article. Compare them to what is in a home directory for a new user. What do you notice?#* Create a new file in this directory with the following command: <b><code><span style="color:#3366CC;font-size:1.2em;">touch foo</span></code></b>#* Create a new user named <b><code><span style="color:#3366CC;font-size:1.2em;">foobar</span></code></b>, with the option to automatically create a home directory.#* Look at the contents of foobar's home directory. What do you notice?# Be sure to record your observations in your lab notes.#Issue the man pages for the '''useradd''' command. Explain the purpose of using the '''-e''' option for the ''useradd'' command. Try to think what would be the purpose for a Linux sysadmin to use this option when creating new users.77g
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv_home vg_centos2 -wi-ao---- 1'''Answer the Part 2 observations / questions in your lab log book.95g lv_root vg_centos2 -wi-ao---- 7.81g lv_swap vg_centos2 -wi-ao---- 1.97g '''
* '''centos3 (Note== Part 3: This VM has no GUI installed)''' VG #PV #LV #SN Attr VSize VFree vg_centos3 1 3 0 wz--n- 14.51g 4.54gManaging Groups ==
PV VG Fmt Attr PSize PFree#Remain in your '''centos1''' VM for this section. # Read the man page for the <b><code><span style="color:#3366CC;font-size:1.2em;">groupadd</span></code></b> and <b><code><span style="color:#3366CC;font-size:1.2em;">groupdel</devspan></vda3 vg_centos3 lvm2 code></b> commands.# Note which option allows you to set the Group ID number ('''GID''') when you create anew group.# Examine the file <b><code><span style="color:#3366CC;font-size:1.2em;">/etc/group</span></code></b>#* Which values of GID are reserved for system accounts?#* Which values of GID are reserved for non-system user accounts?#* What is the lowest available GID number for non- 14system users?#* What is the default group name of a new user?#* Add a new group named <b><code><span style="color:#3366CC;font-size:1.51g 42em;">ops235</span></code></b> with a GID of <b><code><span style="color:#3366CC;font-size:1.2em;">600</span></code></b>.#* The management at your organization have concerns regarding some irresponsible users on your system.#** Add a new group named '''investigation'''.#** Look at '''/etc/group''' and note the GID of group called '''investigation'''.#** What GID is given to a new group if you do not specify it?#** In the file, add those users to the end of the concerned group (separate each user-name with a comma).#** Those individuals have explained their actions to management and the crisis has been resolved. Delete the '''investigation''' group.#** Look at '''/etc/group''' again and note the change.54g
LV VG Attr LSize Origin Snap% Move Log Copy% Convert lv_home vg_centos3 -wi-ao---- 1.00g lv_root vg_centos3 -wi-ao---- 8.00g lv_swap vg_centos3 -wi-ao---- 992.00m * '''c6host (i.eAnswer the Part 3 observations / questions in your lab log book. "removable hard disk" or "disk pack")'''
Does not use LVM. Confirm this using the same commands used above.== Part 4: Deleting / Modifying Users ==
{{Admon#Remain in your '''centos1''' VM for this section.# Read the man page for the '''userdel''' command. Note which option automatically removes the users home directory when that user is deleted.# Delete the user '''ops235_1''' using the command <b><code><span style="color:#3366CC;font-size:1.2em;">userdel ops235_1</note|VM Backups and Recovery|Most span></code></b># Delete the user '''ops235'''_2 using the same command with the option which removes the home directory of the user.# Check the contents of the /home directory. What do you notice?# Check the contents of these investigations will take place in your virtual machinesthe <b><code><span style="color:#3366CC;font-size:1.2em;">/etc/group</span></code></b> file. If What do you make notice?# Read the man page for the usermod command. Note which options change the user's full name, primary group, supplementary groups, and shell.# Create a significant mistake, your virtual machine may not bootnew user account called '''noobie''' for the employee: '''"Really Green"''' . Remember Assign a password for that you newly created backups user.# Management has indicated that this employee be on on probation for 3 months. Use the '''usermod''' command to set the account for noobie to expire in 3 months from this day as part of the security policy of this organization.# Add each of your virtual machines new users to the group ops235 (in Lab 2other words, and you can restore them if something goes wrongadd ops235 to each user as a supplementary group).# Examine <b><code><span style="color:#3366CC;font-size:1.2em;">/etc/group</span><br /code><br /b>. What has changed?# Use the '''usermod'''Remember: if you did not create backups for all command to change the full name of your VMs, then you donthe user account '''noobie''' from '''"Really Green"'''t have any restoration points to fall'''"Outstanding Employee"'''. Examine the result of running that command in the <b><code><span style="color:#3366CC;font-back to!size:1.2em;">/etc/passwd</span></code></b> file. What has changed?# Use the '''usermod'''|}}command to extend the use of their account for 5 years as of today.# Be sure to record your observations in your lab notes.
== Investigation '''Answer the Part 4: Extend the size of lv_root using command-line tools ==observations / questions in your lab log book.'''
Perform this investigation in centos3.=INVESTIGATION 2: Managing System Services and Run-levels=
Let's say Many students may think that you have run out of disk space on your computer (centos3), you need more space on the root filesystem, perhaps to host more webpages or following topic is small and "not a larger database or new softwarebig deal". What are your optionsThose students may say, '''"How hard is running and stopping services? Getting a replacement harddrive would probably require reinstallation of the operating system and backup/restore of the data."'''
Because weThe process may not be hard, but knowing how to stop, start, restart and check the status of services is absolutely critical to a Linux server. '''re using LVM though Aside from learning to trouble- shoot problems''' by checking the status of running services, '''understanding how to manage services is critical to help protect a Linux server from penetration''' (this term is referred to as "'''Hardening a system'''"). Sometimes it is "what we don't know" that can avoid thatharm us. We can add One key element in hardening a computer system is to disable non essential networkng services to allow IDSs ('''Intrusion Detection Systems''') to focus on a new harddrive narrower range of policy violations. A Debian-based penetration testing distribution called Kali (which will serve formerly referred to as a physical volume'''BackTrax''') allows sysadmins and security professionals to identify vulnerabilities in their computer systems, and thus improve (harden) their systems against penetration. Learning to monitor the volume groupstatus, enable and extend disable networking services underlies the root logical volume to make use of the new available space'''Backtrax''' motto:<br><br>'''''"The quieter you are, then more you will hear..."'''''<br><br>
'''Perform the following operations to increase the size of lv_root in centos3=== Part 1:'''How do we Manage System Services? ===
<u>We have seen that maintaining unneeded '''<font>Steps:</font>packages can be a security risk'''</u>due to the unnecessary increase in the complexity of your system. Similarly, it is also unnecessarily hazardous, and even more so, to leave unneeded services running. In this investigation, we will learn how to '''control services, and turn off those services that we think are not necessary to help reduce security risks'''.}}
#Use your '''centos2''' VM for this part.
<ol>
<livalue="2">Run Use the following commands and make note of '''man''' pages to learn about the output:'''service''' command.</li><li>Issue the following Linux command: <ul> <li><b><code><span style="color:#3366CC;font-size:1.2em;">service --status-all</span></code>ls </devb></vd*li> pvs </ul> vgs lvs df -h</codeli> <li>Open Note the centos3 virtual machine consoleservices that are currently running.</li> <li>Go to Use the hardware details viewcommand </lib> <licode>Click <span style="Add Hardwarecolor:#3366CC;font-size:1.2em;" and add a new storage device of 2GBs, make sure it>service iptables stop</span></code></b> to stop the service named '''iptables'''s a VirtIO disk.</li> <li>Go back Run a command to verify that the console view'''iptables''' service has stopped.</li> <li>Run A newer method of managing services is by using '''systemd'''. It has the ability to manage dependent service in parallel and allow one service to be stopped without disrupting the same ls command other services. Here is a link that briefly explains how to use '''systemd''' (performed in step 1as opposed to tradition method: ''init''), whatand the '''systemctl'''s changed?command: [http://zenit.senecac.on.ca/wiki/index.php/Init_vs_systemd init vs systemd]</li> <li>Now weIf you reboot now - the iptables service will be turned back on. We don'll make the new device as a physical volumet want it on though, add it causes students headaches. To turn it off permanently we need to use the volume group, and extend lv_root'''chkconfig''' command:</libr><b> <code>pvcreate /dev/vdb vgextend vg_centos3 /dev/vdb lvextend <span style="color:#3366CC;font-L +2G -r vg_centos3size:1.2em;">chkconfig iptables off</lv_rootspan></code> <li/b>Now rerun the ls/pvs/vgs/lvs/df commands. What has changed and what caused those changes?</li> <li>Among Use the changes, note '''systemctl''' command (from the link above - showing examples) to verify that your root filesystem the '''iptables''' service is now 2GB bigger - off ('''hint:''' issue command, and pipe to grep "'''iptables'''"). <li>Reboot and you have not even rebooted your machine!confirm that it's no longer running.</li>
</ol>
'''Answer the Investigation 4 Part 1 observations / questions in your lab log book.'''
== Investigation 5: How is LVM managed using system-config-lvm? ==
'''Perform this investigation on the VM named ''<u>centos2</u>''.'''[[Image:Ops235_lab4_1.png|thumb|right|Screenshot of system-config-lvm in CentOS. Click to enlarge.]]# Let's learn to administer (manage) our LVM graphically for our '''centos2''' Virtual Machine.<br />CentOS provides a tool called <code>system-config-lvm</code> to graphically administer LVM. The package is not installed by default, so you will need to install it by issuing: (<code>yum install system-config-lvm</code>).<ol> <li value="==Part 2">Use this tool to determine the current LVM configuration by clicking on the appropriate element and reading the properties in the right-hand panel -- write down the answers: <ol typeHow do we Manage Runlevels?="a"> <li>What are the names and sizes of the '''PV'''s?</li> <li>What is the name and size of the '''VG'''?</li> <li>What are the names and sizes of the '''LV'''s?</li> <li>Is there any space in the VG which is not allocated to a LV?</li> </ol> </li> <li>Increase the size of the home file-system to '''4 GB''': <ol type="a"> <li>Click on the LV containing the '''home''' filesystem.</li> <li>Click on ''Edit Properties''.</li> <li>Change the size to '''4 GB''' and click ''Ok''.</li> </ol> <li>Create a '''new 3G LV''' (LV Properties: linear) containing an ext4 filesystem named lv_archive and mount it at '''/archive''' <li>Backup <code>'''/etc'''</code> into <code>'''/archive'''</code></li></ol>::* Copy the files in /etc into the filesystem mounted at <code>/archive</code><br />(use the graphical tools or the command line. If using cp, remember to use the -R option).<ol> <li value="6">Shrink the size of <code>lv_archive</code> to '''1 GB'''.</li> <li>Try shrinking the home file-system. What happens? Why?</li></ol>
'''Answer Running servers in graphical mode will make your system most likely to be penetrated. The X-windows framework can be vulnerable to attacks when these servers are connected to the Investigation 5 observations / questions Internet. This is why when you install server versions of Linux, they work in text-based mode only. Desktop versions of Linux are then installed on workstations (working in your lab log bookgraphical mode) that connect to the server (for security reasons).'''
= Storage Setup The Linux sysadmin can also change the run-level (prior or state) of a graphical Linux server to starting Lab 4) =run in text-based mode and run the graphical mode by issuing a command when graphic mode is required. The run-level term is now deprecated in Fedora, and will likely be deprecated in RHEL/CentOS at some point as well, but for now this is what the industry is using.
At this point, having completed [[OPS235 Lab 3 - CentOS6|Lab 3]] you should have <u>'''roughly'''</u> the following disk storage setup:<br />
('''Note:''' These results are output from the '''vgs''', '''lvs''', and '''pvs''' commands within each virtual machine. You will be using these commands in the following lab investigations)<br /><br />
* '''centos1'''
This VM has a GUI #Perform this part in both your '''centos2''' and no free space in the VG'''centos3''' VMs. <ol> VG <li value="2">Issue the following Linux command: <ul> <li><b><code><span style="color:#PV #LV #SN Attr 3366CC;font-size:1.2em;">runlevel</span></code></b></li> </ul> VSize VFree</li> vg_centos1 1 <li>Note the difference in output between '''centos2''' and '''centos3'''.</li> <li>You can use the '''init''' command to change the current run-level. See a list of runlevels [https://www.centos.org/docs/5/html/5.2 0 wz/Installation_Guide/s2-init-boot-shutdown-nrl.html here].</li><li> Use the '''man''' command to learn how to use the '''init''' command. Use this command to change the current run- 9level in '''centos2''' to '''3'''.80G What happened?</li> 0<li>Issue the following Linux command: <ul> <li><b><code><span style="color:#3366CC;font-size:1.2em;">startx</span></code></b></li> </ul> LV VG Attr </li> LSize <li>What happens?</li> lv_root vg_centos1 <li>Log-wi-ao 8off your graphical system. You should return to your shell prompt.83G </li> lv_swap vg_centos1 -wi-ao 992<li>Using systemd requires a different method of setting text mode and graphical mode.00M You can refer to this link for future reference: PV VG Fmt Attr PSize PFree[http://fedoraproject.org/wiki/Systemd#How_do_I_change_the_runlevel.3F How to Change Run-Levels with Systemd]</li><li>Restart your centos2 machine, and make certain that it runs in '''graphical''' mode</li> </dev/vda2 vg_centos1 lvm2 li>Why would you want to make agraphical Linux system run in text- 9.80G 0based mode?</li></ol>
* '''centos2'''
This VM has a GUI and free space '''Answer Part 2 observations / questions in the VG. VG #PV #LV #SN Attr VSize VFree vg_centos2 1 4 0 wz--n- 19.51g 4.73g LV VG Attr LSize lv_archive vg_centos2 -wi-ao---- 1.00g lv_home vg_centos2 -wi-ao---- 4.00g lv_root vg_centos2 -wi-ao---- 7.81g lv_swap vg_centos2 -wi-ao---- 1.97g PV VG Fmt Attr PSize PFree /dev/vda2 vg_centos2 lvm2 a-- 19.51g 4your lab log book.73g'''
* '''centos3'''
This VM has no GUI installed. VG #PV #LV #SN Attr VSize VFree vg_centos3 2 = INVESTIGATION 3 0 wz--n- 16.50g 0 LV VG Attr LSize lv_home vg_centos3 -wi-ao---- 1.00g lv_root vg_centos3 -wi-ao---- 10.00g lv_swap vg_centos3 -wi-ao---- 992.00m PV VG Fmt Attr PSize PFree /dev/vda3 vg_centos3 lvm2 a-- 14.51g 2.54g /dev/vdb vg_centos3 lvm2 a-- 2.00g 2.00g: LOOKING AHEAD =
==Automating Routine Tasks (Shell Scripting)=={|width="40%" align="right" cellpadding="10"|- valign="top"|{{Admon/tip|Bash Shell Scripting Tips:|<br><ul><li>'''The case statement:'''<br><br>The case statement is a control-flow statement that works in a similar way as the if-elif-else statement (but is more concise). This statement presents scenerios or "cases" based on values or regular expressions (not ranges of values like if-elif-else statements). After action(s) are taken for a particular scenerio (or "case"), a break statement (''';;''') is used to "break-out" of the statement (and not perform other actions). A default case (* ) is also used to catch exceptions.<br><br><u>'''Examples (try in shell script):'''</u><br><br>''read -p "pick a door (1 or 2): " pick<br>case $pick in<br> 1) echo "You win a car!" ;;<br> 2) echo "You win a bag of dirt!" ;;<br> *) echo "Not a valid entry"<br> exit 1 ;;<br>esac''<br><br>''read -p "enter a single digit: " digit<br>case $digit in<br> [0-9]) echo "Your single digit is: $digit" ;;<br> *) echo "not a valid single digit"<br> exit 1 ;;<br>esac''<br><br></li><li>'''The getopts function:'''<br><br></li></ul>The getopts function allows the shell scripter to create scripts that accept options (like options for Linux commands). This provides the Linux administrator with scripts that provide more flexibility and versatility. A built-in function called '''getopts'''c6host (i.e. get command options) is used in conjunction with a '''while''' loop and a '''case''' statement to carry out actions based on if certain options are present when the shell script is run. The variable '''$OPTARG''' can be used if an option accepts text (denoted in the getopts function with an option letter followed by a colon. Case statement exceptions use the ''':)''' and '''\?)''' cases for error handling.<br><br>'''<u>Example of getopts</u>''' (try in script and run with options)<br><br>''while getopts abc: name<br>do<br> case $name in<br> a) echo "Action for option \"a\"" ;;<br> b) echo "Action for option \"b\"" ;;<br> c) echo "Action for option \"c\""<br> echo Value is: $OPTARG" ;;<br> :) echo "disk packError: You need text after -c option"<br> exit 1 ;;<br> \?)echo "Error: Incorrect option"<br> exit 1 ;;<br>esac'''<br><br>}}|}
/dev/sdc3 20G 3We will now use shell scripting to help automate the task for a Linux adminstrator to create regular user accounts.7G 15G 20% / /dev/sdc2 29G 4.7G 23G 18% /home /dev/sdc1 97G 48G 45G 52% /var/lib/libvirt/images
= Logical Volume Management (Continued) =
{{Admon#Download, study, and run the following shell script. Issue the command:<br><b><code><span style=" pointer-events:none;cursor:default;color:#3366CC;font-size:1.2em;">wget https://note|Recovering VMs|'''Most of scs.senecac.on.ca/~murray.saul/user-create.bash</span></code></b>#Try to understand what these investigations will take place in you virtual machinesBash Shell scripts do, and then run the script as root.''' If you make a significant mistakeAfter running the shell script, your virtual machine may not boot. Remember that you created backups view the contents of your virtual machines in Lab 3, and you can the '''restore them if something goes wrong/home'''directory to confirm.}}
== Resources ==
Please read Although the '''zenity''' command is a "user-friendly" way to run shell scripts, Linux administrators usually create shell scripts that resemble common Linux commands. In this page lab, you will learn to create a shell script using the getopts function to get an overview make your shell script behave more like actual Linux commands (including the use of LVM:[http://zenit.senecacoptions).Refer to the notes section onthe right-hand-side for reference about the '''case''' statement and the '''getopts''' function.ca/wiki/index.php/Logical_Volume_Management Logical Volume Management]
It is recommended to open another window(eg. '''right-click''', '''open in new tab or window''') to make reference to view LVM commands as you perform investigations 1 to 3.
<ol><li value== Investigation 1: How are LVMs are managed using Command-Line Tools ==# You are going to repeat the same LVM management operations ("3">Open a Bash shell terminal and login as your did with the ''centos2'' VM in '''lab3'''), but you will using command-line tools in the '''centos3''' VMroot. Since </li><li>Use the centos3 VM only operates in wget command-line mode, you will need to refer to download the '''"Logical Volume Management"''' link aboveinput file called user-data.# Write down txt by issuing the exact commands used at each step, and record appropriate command output:<br><b><code><span style="color:#3366CC;font-size:1.2em;">wget https: a//scs.senecac.on.ca/~murray.saul/user-data. Determine the current LVM configuration using the txt<code/span>pvs</code>, <code/b>vgs</codeli><li>View the contents on the user-data.txt file to confirm there are 3 fields (username, fullname, and e-mail address)which are separated by the colon (:) symbol.<li><li>Use a text editor (such as <codeb>lvs</code> commands.<span style="color:#3366CC;font-size: b1.Grow the home filesystem to 2G using the command 2em;">vi</span></code>lvextend</codeb> and or <codeb>resize2fs</code>.<span style="color:#3366CC;font-size: c1.Create a new 2G LV containing an ext4 filesystem and mount it at 2em;">nano</archive (use span></code>mkdir</b>) to create a Bash Shell script called: <b><code>, <codespan style="color:#3366CC;font-size:1.2em;">createUsers.bash</span>lvcreate</code>, <code/b>mkfsin /root's home directory.</codeli><li>, Enter the following text content into your text-editing session:<code/li>mount</ol><codestyle="color:#3366CC;font-family:courier;font-size:.9em;margin-left:20px;">, edit the file <codebr>#!/etcbin/fstabbash <br></codebr># createUsers.bash<br> # Purpose: Generates a batch of user accounts (read the resourceuser data stored in a text file)<br>#<br># USAGE: <br>#<br># /root/createUsers.bash [https-i {input-path}] <br>#<br># Author: *** INSERT YOUR NAME ***<br># Date: *** CURRENT DATE ***<br><br>if [ $PWD != "/root" ] # only runs if in root's home directory<br>then<br> echo "You must be in root's home directory." >&2<br> exit 1<br>fi<br>if [ "$#" -eq 0 ] # if no arguments after command<br>then<br> echo "You must enter an argument" >&2<br> echo "USAGE: $0 [-i {input-path}]" >&2<br> exit 2<br>fi<br></wikicode><br><ol><li value="6">Save your editing session, but remain in the text editor.archlinux</li><li>The code displayed below uses the getopt function set the input file pathname or check for invalid options or missing option text.orgAdd the following code</li></indexol><br><code style="color:#3366CC;font-family:courier;font-size:.php/fstab https9em;"><br>outputFlag="n"<br>while getopts i: name<br>do<br> case $name in<br> i) inputFile=$OPTARG ;;<br> :) echo "Error: You need text after options requiring text"<br> exit 1 ;;<br> \?) echo "Error:Incorrect option"<br> exit 1 ;;<br> esac<br>done<br></code><ol><li value="6">Save your editing session, but remain in the text editor.</wikili><li>The code displayed below uses logic to exit the script if the input file does not exist.archlinuxCommand substitution is used to store each line of the input file as a positional parameter.org/indexThere is one subtle problem here: The full names of the users contain spaces which can create havoc when trying to set each line as a separate positional parameter.php/fstab] In this case the sed command is used to convert spaces to plus signs (+), which will be converted back later. Finally, a '''for''' loop is used to create each account ('''useradd''') and then reboot to confirm automatic mountmail the user their account information ('''mail''').Add the following code:</li></ol><br><code style="color:#3366CC;font-family:courier;font-size: d.Copy the contents of 9em;"><br>if [ ! -f $inputFile ]<br>then<br> echo "The file pathname \"$inputFile\" is empty or does not exist" >&2<br> exit 2<br>fi<br><codebr>set $(sed 's/ /+/etcg' $inputFile) # temporarily convert spaces to + for storing lines as positional parameters</codebr><br>for x<br> into do<codebr> useradd -m -c "$(echo $x | cut -d":" -f2 | sed 's/+/ /archiveg')" -p $(date | md5sum | cut -d" " -f1) $(echo $x | cut -d":" -f1)</codebr> mail -s "Server Account Information" $(echo $x | cut -d":" -f3) <<+<br>. Here is your server account information:<br> servername: emyserver.senecac.on.Shrink ca<codebr>lv_archive username: $(echo $x | cut -d":" -f1)</codebr> to 1G password: $(use date | md5sum | cut -d" " -f1)<br> Regards,<codebr>umount IT Department</codebr>, +<codebr>resize2fsdone</codebr>, <codebr>lvreduceecho -e "\n\nAccounts have been created\n\n"</codebr>, and exit 0<codebr>mount</code>)
== Investigation 2: How can a PV be added to an existing VG using Command-Line Tools? ==# Add an additional 2 GB virtual disk to your ''<uol>centos1</uli value="8">'' systemSave, set permissions, we will use it as an additional physical volume.# Do the rest of this investigation in the command line.# You should now have both <code>/dev/vda</code> and <code>/dev/vdb</code>.# Record the size of the volume group and the amount of free space (Hint: use a command then run that you learned in a previous lab).# Read the resource [http://tldp.org/HOWTO/Partition/fdisk_partitioning.html Partitioning with fdisk] to learn how to properly create a partition with the fdisk command.# Use fdisk to partition /dev/vdb with a Linux single partition that fills the whole disk.# Check the messages printed when <code>fdisk</code> exits -- you may need to reboot the system in order shell script for the new partition table to take effect.# Mark input text file ''vdb1'' as a physical volume usable by LVMuser-data.# Add the new physical volume to the existing volume group.# Verify that the volume group is larger and has more free space. {{Admon/note|Think!|The next part of this investigation requires some research, thought, and creativity.}}txt'''Using that additional space, create a separate filesystem for <code>/home</code>:'''# Create . Did it work? Try running the logical volume <code>lv_homescript without an argument - What did it do? </code> (1G ext4)# Find a way to move the contents of <codeli>/home</codeli> onto it.# Change your system configuration so that the new filesystem is mounted on <code>/home</code> from now on. {{Admon/tip|SELinux relabelling may be required|Your system may report that the files are not present in the new /home filesystem when they are clearly thereYou have completed lab4. This is due Proceed to the Security-Enhanced Linux system (SELinux) preventing access to the filesCompleting The Lab, because the files were tampered with (moved) and are no longer recognized as home directory content. You can fix this problem by restoring follow the file context labels so that SELinux accepts the files as valid home directory content: <code>restorecon instructions for "lab sign-r /homeoff".</codeli>}} == Investigation 3: How can I use fdisk to manage storage on my disk pack? =='''On your <u>c6host</uol> (i.e. "disk pack"), using your choice of the GUI and/or command-line tools:'''# Create a new partition or logical drive ('''NOT a logical volume!''') - minimum 5G, leaving at least 10G free space in the extended partition.# Format that partition (i.e. put a filesystem on it).# Make sure it's mounted automatically on a mountpoint of your choosing (easiest is to create a new directory for a mountpoint). = Updated backup instructions = If you completed this lab correctly - please make sure you are still making full backups of your virtual machines. Remember adding a new harddrive to centos3? You will need to back up that drive as well. If you don't - you will only have half of your machine backed up, which is of no use for a recovery. ==Resources on the web==Additional links to tutorials and HOWTOs:* [http://www.centos.org/docs/2/rhl-gsg-en-7.2/s1-zip-tar.html archiving with tar, gzip, gunzip]* [[init vs systemd]]* [https://wiki.debian.org/Debate/initsystem/upstart init vs systemd vs upstart]* [https://www.centos.org/docs/5/html/5.2/Installation_Guide/s2-init-boot-shutdown-rl.html Runlevels] ==Completing the Lab==
Arrange evidence for each of these items on '''Answer Investigation 3 observations / questions in your screen, then ask your instructor to check each item:lab log book.'''
# Compressed files: <code>/tmp= LAB 4 SIGN-OFF (SHOW INSTRUCTOR) ={{Admon/archive1important|Time for a new backup!|If you have successfully completed this lab, make a new backup of your virtual machines.tar.gz</code> Remember to also make a backup of the new second virtual disk drive on ''centos1'' -- you now have two virtual disks on ''centos1'', and therefore two image files, and <code>/tmp/archive2therefore will need two backup files.tgz</code>#<code>nled</code> application is installed#Lab5 notes how to use service/chkconfig commands#VMs backed-up}}
= Preparing for Quizzes ='''Arrange proof of the following on the screen:'''
::<span style="color:green;font-size:1.5em;">&# What is a VG? PV? LV? x2713;</span> Account created on '''centos1''' VM.::<span style="color:green;font-size:1.5em;">&# What commands are used to determine VG x2713;</span> List contents of '''/ PV etc/ LV information?# What does yum do that rpm does not?# List the steps to install a package via rpm commandgroup''' file (ops235 group) on '''centos1''' VM.# List the steps to determine detailed information regarding an install package::<span style="color:green;font-size:1.5em;">&# x2713;</span> List the steps to remove a package via rpm commandcontents of '''/etc/passwd''' file (created accounts) on '''centos1''' VM.# List the steps to install a package using the yum command::<span style="color:green;font-size:1.5em;">&# List the steps to remove a package using the yum commandx2713;</span> Display current run-level status on '''centos2''' VM.# What is the total ::<span style="color:green;font-size of the "main:1.5em;" VG on your system?>&# How do you create a LV?# How do you delete an LV?# How would you increase the size x2713;</span> Creation of the root filesystem by 50 MB?your bash shell script called '''createUsers.bash'''
= Preparing for the Quizzes =
# Describe all of the field in <code>'''/etc/passwd'''</code>
# What is the command to create a user? What option to create a home directory for that user?
# What is the command to change the full name of an already-created user?
# What is the command to delete a user account? What option allows for the user's home directory to be removed as well?
# What is the command to create a group? What is the command (or steps) to include a user in a newly-created group?
# What is the purpose of <code>'''/etc/shadow'''</code>?
# What is the purpose of <code>'''/etc/skel'''</code>?
# What does the term run-level mean?
# How to set the run-level of a Linux system to text-based only? How to set to graphical mode?
# What is the command to view the status of running services?
# What is the command to start a service (like httpd, or sshd)?
# What is the command to start a service?
# Can a service be stopped and started by issuing just one command?
{{Admon/important | Backup your work |Backup your disk images for centos2 and centos3 Virtual Machines.}}[[Category:OPS235]][[Category:OPS235 Labs]]