# echo 'portmap_flags=""' >> /etc/rc.conf.local # /etc/rc.d/portmap start
# emerge -av rpcbind # rc-update add rpcbind default # /etc/init.d/rpcbind start
# yum install ypbind ypserv
# emerge ypbind ypserv
defaultdomain(5) vs. resolv.conf(5)
defaultdomain(5), domainname(5)
/etc/conf.d/network nebo /etc/defaultdomain, nisdomainname(1)
echo "NISDOMAIN=doména.swi" >> /etc/sysconfig/network
# ypinit -m doména.swi
# /usr/lib/yp/ypinit -m
# /usr/lib64/yp/ypinit -m
# /etc/rc.d/{ypserv,yppasswdd} start
# /etc/init.d/{ypserv,yppasswdd} start
# cd /var/yp # vi doména.swi/Makefile UNSECURE="False" jenom, máte-li klienty schopné vypořádat se s master.passwd mapou MINUID a MINGID tak, abyste na každém stroji měli aspoň jednoho non-roota pro případ výpadku NOPUSH, pokud jeste nemate zinicializovano (chybove hlasky) # make
# ypcat -x
# ypcat -d doména.swi -h 127.0.0.1 passwd
# ypmatch uživatel passwd
# yptest
# ypcat ypservers server.trpící.osamělostí
(yp-slave)# ypinit -s hlavní.stroj.swi doména.swi
(yp-slave)# /usr/lib/yp/ypinit -s hlavní.stroj.swi
(yp-slave)# /usr/lib64/yp/ypinit -s hlavní.stroj.swi
(yp-master)# ypinit -u doména.swi; pkill -HUP ypserv
(yp-master)# echo záložní.stroj.swi >> /var/yp/ypservers (yp-master)# cd /var/yp/; vi Makefile NOPUSH=false (yp-master)# make
# pkill ypbind; pkill ypserv; pkill rpc.yppasswdd # cd /var/yp # rm -rf binding/ doména1.swi/ doména2.swi/ ypservers
# rm /var/yp/Makefile #(hrál-li jsem si s ním)
Celý proces je náchylný na hloupé chyby!
Problém: V BSD je mapa master.passwd, v Linuxu je shadow.
Řešení: ve virtlabu to neřešíme a používáme v BSD UNSECURE=True, v praxi řešíme výměnou NIS za bezpečný systém.
Pozor: V BSD je pmake(1), v Linuxu je gmake(1).
# /etc/rc.d/ypbind start
# echo broadcast >> /etc/yp.conf # /etc/init.d/ypbind start # vi /etc/nsswitch.conf passwd: compat shadow: compat group: compat
# vipw +:*::::::::
# echo nis.stroj.někde >> /etc/yp/doména.swi
# echo "domain doména.swi server nis.stroj.někde >> /etc/yp.conf
# pkg_add -iv login_ldap
# vi /etc/login.conf ## odstraňte z toho ty komentáře; ty backslashe musí být poslední na řádku! ldap:\ :auth=-ldap:\ :x-ldap-server=172.16.77.6:\ :x-ldap-basedn=ou=Uzivatele,dc=doména,dc=swi:\ :x-ldap-filter=(&(objectclass=posixAccount)(uid=%u)):\ :tc=default: # cap_mkdb /etc/login.conf
# /usr/libexec/auth/login_-ldap -d -s login <uživatel> ldap
...
user bind success!
no group filter
authorize
# vi /etc/ypldap.conf
domain "doména.swi" # jako jaká NIS doména se to bude tvářit
...
directory "ip.adresa.ldap.serveru" {
...
# Kvůli formátu hesel za nás dělá práci ten balík
# login_ldap(8) shora. Nemusíme tak řešit práva
# obyčejných lidí k hashům a semka prostě dáme *.
fixed attribute passwd "*"
# Na tohle pozor! Stejně tak /bin/bash v Linuxu,
# budete-li exportovat účty opačným směrem!
fixed attribute shell "/bin/ksh"
# Použij tu login-classu, co jsme
# nahoře definovali a vyzkoušeli.
fixed attribute class "ldap"
}
# getent passwd # vipw ## pro kontrolu +:*::::::::
# vi /etc/pam.d/system-auth ... auth sufficient pam_ldap.so use_first_pass account sufficient pam_ldap.so password sufficient pam_ldap.so ssha use_authtok use_first_pass session optional pam_ldap.so ... # vi /etc/nsswitch.conf passwd: files ldap shadow: files ldap group: files ldap # vi /etc/ldap.conf suffix uri bind_policy soft # jako u NFS... nss_base_{passwd,shadow,group} # kde to ty data vlastně má hledat? pam_filter objectClass=posixAccount pam_login_attribute uid # kde je username? pam_member_attribute memberuid # kde jsou členové skupiny?
Ke sdílení souborů je potřeba do RPC "infrastruktury" zaregistrovat několik služeb:
# echo 'nfsd_flags=""' >> /etc/rc.conf.local # echo 'mountd_flags=""' >> /etc/rc.conf.local # echo 'lockd_flags=""' >> /etc/rc.conf.local # echo 'statd_flags=""' >> /etc/rc.conf.local # /etc/rc.d/nfsd start # /etc/rc.d/mountd start # /etc/rc.d/lockd start # /etc/rc.d/statd start
# emerge -av nfs-utils
# /etc/init.d/nfs start
hint: nepoužívejte nfsv4 :-)
Seznam "přípojný bod + parametry"; získáte showmount -e
# Pozor! Komentáře musí začínat záčátkem řádky! /usr/ports /usr/local -ro -mapall=nobody -network=172.16.77.0 -mask 255.255.255.0 /home -network=192.168.300.0 -mask=255.255.255.0
/usr/portage *(sync,subtree_check) /usr/local *(ro,sync,subtree_check) # "na FS s hodně rename operacemi prý máme subtree_check vypnout" /home 192.168.300.0/24(rw,sync,no_subtree_check)
klientem odeslaný → serverový | OpenBSD | Linux |
---|---|---|
default: root → nobody (-2) | -maproot=nobody | root_squash |
root → root | -maproot=root:wheel | no_root_squash |
všichni → nobody | -mapall=nobody | all_squash |
všichni → jeden uživatel a skupina | -mapall=uživatel:[skupina1[:skupina2[...]]] | anonuid=150,anongid=100 |
OpenBSD | Linux | |
---|---|---|
192.168.300/21 | -network=192.168.300 -mask=255.255.248.0 | 192.168.300.0/21(opšny) |
všichni | (nic) | *(opšny) |
read-only/read-write | -ro/-rw | ro/rw |
# mount server.doména.swi:/usr/local /usr/local
opšny mount(8) | OpenBSD | Linux |
---|---|---|
ne-urputnost :-) | -s | -o soft |
přerušitelnost signálem | -i | -o intr deprecated since 2.6.25 |
# grep vzdaleny /etc/fstab
192.168.192.1:/raid/export/ /mnt/vzdaleny nfs rw,nodev,nosuid,soft,intr 0 0
hotplugd(8)
udev
$ info amd
$ man auto.master
# vi /etc/amd/amd.home /defaults type:=nfs;sublink:=${key};opts:=rw,soft,intr,proto=udp * rhost:=<NFS-server>;rfs:=/home # cd /var/yp; make
# vi /etc/amd/amd.master
/home amd.home
# vi /etc/rc.conf.local
amd=YES
výsledek: v případě potřeby se svazek připojí a z /home se dělají symlinky; amd je po čase uklízí