If you can see this check that
Basic Administration Concepts
Disks and Partitions
Disks
- /dev/hda - primary disk on first IDE controller
- /dev/hdb - slave on first IDE controller
- /dev/hdc - primary disk on second IDE controller
- /dev/hdd - slave on second IDE controller
- /dev/sda - lowest numbered SCSI device
- /dev/sdb - next lowest SCSI device
- ...
Partitions
- Rather than use the whole disk for one purpose...
- Split disk up into chunks.
- The chunks are known as partitions.
- Partitions can be primary or secondary.
- This is partially a hang-over from when DOS could only handle 4 partitions...
> sfdisk -l /dev/sda
Disk /dev/sda: 8924 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sda1 * 0+ 12 13- 104391 83 Linux
/dev/sda2 13 1287 1275 10241437+ 83 Linux
/dev/sda3 1288 1542 255 2048287+ 82 Linux swap
/dev/sda4 1543 8923 7381 59287882+ f W95 Ext'd (LBA)
/dev/sda5 1543+ 1797 255- 2048256 82 Linux swap
/dev/sda6 1798+ 8923 7126- 57239563+ 83 Linux
$ cat /etc/fstab
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 10080520 3142968 6425484 33% /
/dev/sda1 101086 9665 86202 11% /boot
none 1038660 0 1038660 0% /dev/shm
/dev/sda6 56340828 3853984 49624868 8% /home
- df -h is also useful, translating bytes in MB or GB as appropriate
*UML
- In UML, there are no IDE or SCSI drives.
- The disks are called /dev/ubd/n
where n is a number
- They are actually implemented by files in the host operating system, but this is hidden from you.
- /dev/ubd/0 is /
- /dev/ubd/1 is swap
Disk Usage
Linux Boot Process
Booting to kernel
- From switch-on:
- PC BIOS selects a boot disk
- BIOS loads the boot block and executes it.
- This loads a stage 1 boot loader.
- Stage 1 loads stage 2 loader.
- Linux loader (e.g. Grub, lilo) runs
- Operator selects from loader menu
- Kernel loaded with device ramdisk
$ cat /etc/grub.conf
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Fedora Core (2.6.6-1.435.2.3)
root (hd0,0)
kernel /vmlinuz-2.6.6-1.435.2.3 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.6-1.435.2.3.img
title Fedora Core (2.6.5-1.358)
root (hd0,0)
kernel /vmlinuz-2.6.5-1.358 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.5-1.358.img
Startup Commands
- As linux boots, it runs various system scripts.
- Eventually it runs one for your standard "runlevel".
- The runlevel startup enables the services (like ssh and apache") which you may want to start.
- Such startup scripts all live in:
/etc/init.d/
- For example, apache is looked after in:
/etc/init.d/httpd
/etc/init.d/*
- The scripts in init.d can:
- Start
- Stop
- Restart
- Reload
- + a few others
Run levels
- The run level determines what init.d files run.
- As you enter a run level services not running which should run at that run level start.
- As you leave a run level services which should not be running at the new run level stop.
- What start and stop are determined by the soft links found in the /etc/rd?.d directories.
- Usually all we need to know is the stardard runlevel is 5.
$ ls /etc/rc5.d
K01yum K35vncserver K74ypxfrd S13portmap S80sendmail
K05saslauthd K35winbind K89netplugd S14nfslock S90crond
K10dc_server K45named K95kudzu S18rpcgssd S90xfs
K10psacct K50netdump K96init.cssd S19rpcsvcgssd S95anacron
K12dc_client K50snmpd S00microcode_ctl S20random S95atd
K12mysqld K50snmptrapd S04readahead_early S25netfs S96init.cssd
K20nfs K50tux S06cpuspeed S26apmd S96readahead
K24irda K54dovecot S08iptables S28autofs S97messagebus
K25squid K70aep1000 S09isdn S44acpid S97rhnsd
K34dhcrelay K70bcm5820 S10network S55sshd S99local
K34yppasswdd K74ntpd S12syslog S56rawdevices S99mdmonitor
K35dhcpd K74ypserv S13irqbalance S56xinetd
S/K priority service-name
Link management
The syslog
The xinetd super-daemon
- Some of the services (e.g. sshd) are processes.
- They start running from an rc script.
- They wait on their own for comms.
- They terminate only when the machine does down.
- Some people say this wastes resources.
- The super-server concept was born.
XINETD
- Xinetd waits for requests from the internet.
- From the requests it works out what program would like to deal with that request.
- It then starts that program running and gives it the waiting requests.
- In this way resources are only used if someone actually requests access to a particular service.
- The approach of xinetd is not as popular as services started explicitly from init.d.
- The virtual machines use xinetd to control telnet.
- If you connect to your VM with telnet, xinetd starts up the telnet daemon for you.
- Services from xinetd usually start "in.".
- Telnet is "in.telnetd"
- /etc/xinetd.d/ contains all the services it manages.
$ cat /etc/xinetd.d/telnet
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}
Terminating a process
User Management
User Management
- A wide topic...
- Adding/Removing/Changing current users
- Default Scripts
- Global Scripts
Manual Creation
- User entries in passwd,shadow, group,gshadow.
- Home directory in /home.
- Copy basic .files into their home directory.
- Make new user own their own directory and files.
$ adduser gordon
Skel files
- These files are the basic .files created for a new user.
- Users are free to edit these when they log in.
- This allows them to control their own path, env, and other settings (such as aliases).
- However, if you install a new package which needs something set for each user at login, editing all these copies by hand would be tiresome.
$ ls /etc/profile.d
colorls.csh gnome-ssh-askpass.csh krb5.csh less.csh vim.csh
colorls.sh gnome-ssh-askpass.sh krb5.sh less.sh vim.sh
glib2.csh kde.csh lang.csh qt.csh which-2.sh
glib2.sh kde.sh lang.sh qt.sh
- If you log in with bash, all the .sh files are executed before your .files
- If you log in with csh, all the .csh files are executed before your .files.
$ cat /etc/profile.d/vim.sh
if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then
# for bash, pdksh and zsh, only if no alias is already set
alias vi >/dev/null 2>&1 || alias vi=vim
fi
- I.e. if this is bash, and you have not set an alias for "vi", then set one to run "vim" when you type "vi".
Example
- Create a user jim, in group staff
- But how to set the group?
- You could do:
$ man adduser
- Usually commands also take the flag "-h"
$ adduser -h
adduser: invalid option -- h
Usage: useradd [options] LOGIN
Options:
-b, --base-dir BASE_DIR base directory for the new user account
...
-g, --gid GROUP force use GROUP for the new user account
...
$ adduser jim -g staff
$ tail -1 /etc/passwd
jim:x:502:100::/home/jim:/bin/bash
$ grep 100 /etc/group
staff:x:100:
Moving a uid or gid
Useful Commands
$ chown jim.staff filename
$ chown jim filename
$ chgrp staff filename
When a User logs in
- When a user logs in the appropriate . files are executed (.login, .cshrc, etc).
- If you want to change to a different user, you could log out and log in again, or you could do
- su - gordon (change to the gordon user)
- su - (change to root)
- Without the "-", you still change users, but the . scripts don't get executed.
- To go back to the previous user, press CTRL-D
FILE SEARCHING
A file CONTAINING something
A FILENAME containing something
Find to do something
Discussion
- A user keeps getting logged out each time they log in... why?
Discussion
- A user find their ls command is broken... why?
Discussion
- Here are some past exam questions you should now be able to answer:
Question 1
- What is the function of "su", and what is the difference between "su - gordon" and "su gordon"?
Question 2
- What type of files would you expect to find in /sbin?
Question 3
- Consider the following line:
gordon:x:44:
In which file in /etc would you expect to see such a line, and what does it mean?
Question 4
The following commands are typed on a Unix computer.
$ mkdir temp
$ cd temp/
$ mkdir txt.txt/
$ cd txt.txt/
$ touch hello
$ cd ..
$ ls *.*
What is printed on the screen in response to the last line of the commands?