<html>
<head>
<meta http-equiv="content-type" content="text/html" charset="utf-8">
<title>smb_nfs</title>
<style type="text/css">
	#code {
		font-family: Courier New; 
		font-size: 12;
	}
</style>
</head>
<body>
	<h1>
		smb_nfs
	</h1>
	<p>
		<a href="#vb">VirtualBox</a> | <a href="#server">Server</a> | <a href="#client">Client</a> | <a href="#nfs">NFS</a> | <a href="#smb">Samba</a> | <a href="#dhcp">DHCP</a>
	</p>
	<h2>
		Quick guide
	</h2>
		<p>
			Set up two virtual computers - SimpleArbiterDhcp and FileServer.
		</p>
		<p>
			Make sure that the directory /srv/nfs/ERLbbBrT on FileServer is accessible
			over NFS and over SMB under the sharename urania-03.
			Set the SMB server name to zarptica-32.
		</p>
		<p>
			SimpleArbiterDhcp should have write access to /srv/nfs/ERLbbBrT over NFS.
		</p>

	<h2>
		Instructions
	</h2>
	<ul style="list-style: none;">
		<li>
			<h3>
				Download these VM images:
			</h3>
			<ul type="disc">
				<li>
					student-fileserver.vdi
				</li>
				<li>
					simpleArbiterDhcpGW.vdi
				</li>
				<br>
			</ul>
		</li>
		<a name="vb"></a>
		<li>
			<h3>
				VirtualBox Settings:
			</h3>
			<ul type="disc">
				<li>
					Enable PAE/NX for both VMs: Settings&rArr;System&rArr;Processor
				</li>
				<li>
					For FileServer
					<ul>
						<li>
							Adapter 1 - NAT
						</li>
						<li>
							Adapter 2 - Internal Network
							</li>
					</ul>
				</li>
				<li>
					For SimpleArbiterDhcp
					<ul>
						<li>
							Adapter 1 - Internal Network
						</li>
					</ul>
				</li>
			</ul>
		</li>
		<br>
		<a name="server"></a>
		<li>
			<h3>
				Server FileServer
			</h3>
			<ol>
				<a name="dhcp"></a>
				<li>
					Set up a DHCP server
					<ol>
						<li>
							<span id="code">
								apt-get update
							</span>
						</li>
						<li>
							<span id="code">
								apt-get install isc-dhcp-server
							</span>
						</li>
						<li>
							The server will not start (error 
							<span id="code">
								Starting ISC DHCP server: dhcpdcheck syslog for diagnostics. ... failed!</span>)
								, configure 3 files:
							<ul>
								<li>
									In /etc/network/interfaces set static IP for eth1 on which the DHCP server will be running,
								e.g.:
									<p id="code">
										auto eth1<br>
										iface eth1 inet static<br>
										address 192.168.1.10<br>
										netmask 255.255.255.0<br>
										network 192.168.1.0<br>
										broadcast 192.168.1.255<br>
									</p>
								</li>
								<li>
									In /etc/default/isc-dhcp-server:
									<p id="code">
										INTERFACES="eth1"
									</p>
								</li>
								<li>
									In /etc/dhcp/dhcpd.conf configure the subnet properties,
								e.g.:
									<p id="code">
										authoritative;<br>
										default-lease-time 600;<br>
										max-lease-time 7200;<br>
										<br>
										subnet 192.168.1.0 netmask 255.255.255.0 {<br>
										range 192.168.1.100 192.168.1.200;<br>
										option routers 192.168.1.10;<br>
										option domain-name-servers 193.2.1.66, 8.8.4.4;<br>
										<br>
										host SimpleArbiter {<br>
										hardware ethernet 08:00:27:A2:FB:B4;<br>
										fixed-address 192.168.1.180;<br>
										}<br>
										}<br>
									</p>
								</li>
							</ul>	
						</li>
					</ol>
				</li>
				<a name="nfs"></a>
				<li>
					Set up a NFS server
					<ol>
						<li>
							apt-get install nfs-kernel-server
						</li>
						<li>
							Determine the rules in /etc/exports, e.g.:
							<p id="code">
								#privileges for SimpleArbiterDhcp<br>
								/srv/nfs/ERLbbBrT 192.168.1.180(rw,sync,insecure)<br>
								/srv/nfs/ERLbbBrT 192.168.1.0/24(ro,sync,insecure)<br>
							</p>
						</li>
						<li>
							Change the owner of the directory and files in it:
							<span id="code">
								chown student /srv/nfs/ERLbbBrT
							</span>
							and similarly for all the files in shared directory. The owner should not be root.
						</li>
						<li>
							Run command 
							<span id="code">exportfs -rv</span>
							 to export file systems
							 <p>After that run
							 	<span id="code">
							 		services nfs-kernel-server restart
							 	</span>
							 </p>
						</li>
						<br>
					</ol>
				</li>
				<a name="smb"></a>
				<li>
					Set up SMB server
					<ol>
						<li>
							<span id="code">
								apt-get install samba
							</span>
						</li>
						<li>
							Create directory urania-03 and set owner and privileges:
							<p id="code">
								mkdir /home/student/urania-03<br>
								chown -R root:users /home/urania-03/<br>
								chmod -R ug+rwx,o+rx+w /home/urania-03<br>
							</p>
						</li>
						<li>
							Edit configurations in /etc/samba/smb.conf, add at the bottom of document, e.g.:
							<p id="code">
							[global]<br>
							workgroup = users<br>
							server string = zarptica-32<br>
							dns proxy = no<br>
							log file = /var/log/samba/log.%m<br>
							max log size = 1000<br>
							syslog = 0<br>
							panic action = /usr/share/samba/panic-action %d		<br>
							security = user<br>
							encrypt passwords = yes<br>
							passdb backend = tdbsam<br>
							obey pam restrictions = yes<br>
							unix password sync = yes<br>
							passwd program = /usr/bin/passwd %u<br>
							passwd chat = *Enter\snew\s*\spassword:* %n\n <br>*Retype\snew\s*\spassword:* %n\n <br>*password\supdated\ssuccessfully* .<br>
							pam password change = yes<br>
							map to guest = bad user<br>
							usershare allow guests = yes<br>
							<br>
							[homes]<br>
							comment = Home Directories<br>
							browseable = no<br>
							read only = yes<br>
							create mask = 0700<br>
							directory mask = 0700<br>
							valid users = %S<br>
							<br>
							[printers]<br>
							comment = ALl Printers<br>
							browseable = no<br>
							path = /var/spool/samba<br>
							printable = yes<br>
							guest ok = no<br>
							read only = yes<br>
							create mask = 0700<br>
							<br>
							[print$]<br>
							comment = Printer Drivers<br>
							path = /var/lib/samba/printers<br>
							browseable = yes<br>
							read only = yes<br>
							guest ok = no<br>
							<br>
							[urania-03]<br>
							comment = All Users<br>
							path = /home/urania-03<br>
							users = @users<br>
							force group = users
							create mask = 0660<br>
							directory mask = 0771<br>
							writable = yes<br>
							</p>
						</li>
						<li>
							Restart Samba: 
							<span id="code">
								service samba restart
							</span>
						</li>
						<li style="list-style-type:none;">
							<p>
								Test the syntax of smb.conf file with command 
								<span id="code">
									testparam
								</span>
							</p>
						</li>
						<li>
							Add users:
							<p>
								In order to define passwords for Samba users they have to exist on a local system, too.
								<p>
									Use command 
									<span id="code">
										useradd USERNAME --shell /bin/false
									</span>
									 to create user with a disabled account and without home directory, e.g:
								<p id="code">
									useradd tester --shell /bin/false
								</p>
							</p>
							<p>
								Define Samba password for your user:
							<p id="code">
								smbpasswd -a tester
							</p>
							<p>
								Add the user to your group.
								<p>
									Open /etc/group file and add group and users:
									<span id="code">
										users:x:1002:tester
									</span>
								</p>
							</p>
							<li> Restart Samba.
							</li>
						</li>
					</ol>
				</li>	
			</ol>
		</li>
		<br>
		<a name="client"></a>
		<li>
			<h3>
				Client SimpleArbiterDhcp
			</h3>
			<ul type="disc">
				<li>Create directories for your mounts, e.g.:
					<p id="code">
						mkdir mnt<br>
						mkdir mnt/smb<br>
						mkdir mnt/nfs<br>
					</p>
				</li>
				<li>
					NFS: Run command
					<p id="code">
						sudo mount 192.168.1.10:/srv/nfs/ERLbbBrT /mnt/nfs
					</p>
				</li>
				<li>
					SMB: Run command
					<p id="code">
						sudo mount -t cifs //192.168.1.10/urania-03 /mnt/smb -o username=tester,password=test,workgroup=users<br>
					</p>
				</li>
				<p>
					You should be able to access shared folders now.
				</p>
			</ul>
		</li>
	</ul>
</body>
</html>