2013年1月24日 星期四

[Linux] 架設與管理 NIS Server/NIS Client @Ubuntu 12.04

安裝不難,難就難在沒設定好 debug 痛苦 XD


簡易筆記:


Server (此例 hostname 為 NISServer,需確保 /etc/hosts 有定義此 hostname):


$ sudo apt-get install nis
$ sudo vim /etc/default/nis
NISSERVER = master
$ sudo vim /etc/defaultdomain
NISServer
$ sudo service portmap start ; sudo service ypbind start ; sudo service ypserv start ; sudo service yppasswdd start ; sudo service ypxfrd start
$ sudo /usr/lib/yp/ypinit -m
$ sudo make -C /var/yp


每次更新 /etc/passwd, /etc/group, …
需執行 $ sudo make -C /var/yp


Client:


$ sudo su
$ apt-get install nis
記得 NIS domain 要填好,要填 NIS Server 的,不然會找不到 NIS Server 而導致 login 卡住。此例為 NISServer
$ vim /etc/hosts
NISServerIP NISServer
$ echo '+::::::' >> /etc/passwd ; echo '+:::' >> /etc/group ; echo '+::::::::' >> /etc/shadow ; echo '+:::' >> /etc/gshadow
$ vim /etc/nsswitch.conf
passwd: compat nis
group: compat nis
shadow: compat nis
hosts: files dns nis
netgroup: nis
$ vim /etc/yp.conf
ypserver = NISServerIP_or_NISServer


其他資訊:


若 NIS Client 裝完後,不幸 login、sudo 等動作都非常卡,那查看 syslog 大概就是會這樣:


$ sudo tail -f /var/log/syslog
… ypbind … : broadcast: RPC: Timed out.


解法:


更新 /etc/hosts、/etc/defaultdomain、/etc/yp.conf 設定好後,重開機試試


若 NIS Server 帳號與 NIS Client 帳號的 uid 有撞到,預設 NIS Client 會以自身設定檔為主,需避免一樣:


在 NIS 服務中,假設 server 有個 uid=1000 的帳號,而 client 也有一個一模一樣的 uid=1000 帳號,但兩者帳號名稱不同,此時若使用 server 帳號在 client 端登入,會被對應成 client 端 uid=1000 帳號,導致一些家目錄以及相關權限的問題。實例:


@ NIS Client:


$ ypcat passwd
serveruser:x:1000:1000:serveruser,,,:/home/serveruser:/bin/bash
$ cat /etc/passwd
clientuser:x:1000:1000:user,,,:/home/clientuser:/bin/bash


如此一來,在 client 端用 serveruser 帳號登入後,會變成 client user 帳號,此時用 sudo ls 時,會變成要輸入 client user 密碼,而非用 server user 的。這樣會有不少問題產生。解法就是把 server user 的 uid 起始改成 2000 以上,讓 1000~2000 的作為 client 端帳號的處理,同理在 gid 也要稍微處理一下比較好。而在 sudo 的權限使用上,可以規範 server 端用 admin group ,在 client 端用 sudo group ,分開使用即可。


@ NIS Server:


改變現有 gid (或直接編輯/etc/group):


$  sudo groupmod -g 1999 service


更改現有帳號 uid 跟 gid (或直接編輯 /etc/passwd ?), 更改時該 account 不能在線上:


$ sudo usermod -u 2000 -g 1999 account


別忘了更新已存在的目錄、檔案權限:


$ sudo chown -R account:group /path


往後新增帳號時,多加 --firstuid 和 -gid 來避開 NIS Client 本機 uid/gid:


$ sudo adduser --firstuid 2000 --gid 2000 --no-create-home --disabled-login --gecos ''  account 


簡易 NIS Sever/Client 帳號群組規劃:


NIS Server 建立的帳號 uid 以 2000 為基準點,假設 NIS Client 不會建立太多 local account ,故保留 1000~1500 組供 NIS Client 建立 local account;NIS Server 建立一些服務帳號就以 1999 遞減


/etc/group @ NIS Server:


rd:x:2000:
admin:x:1999:account
service:x:1998:gitolite,redmine,dropbox
dropbox:x:1997:dropbox


/etc/passwd @ NIS Server:


account:x:2000:2000:,,,:/home/account:/bin/bash
gitolite:x:1999:1998:,,,:/tmp:/bin/bash
redmine:x:1998:1998:,,,:/tmp:/bin/bash
dropbox:x:1997:1998:,,,:/tmp:/bin/bash


建帳號 @ NIS Server:


一般帳號:


$ sudo adduser --firstuid 2000 --gid 2000 --disabled-password --gecos '' account


加入 sudoers:


$ sudo usermod -a -G admin account


服務帳號:


$ sudo adduser --uid 1996 --gid 1998 --no-create-home --disabled-login --gecos '' service_account


記得要更新 yp:


$ sudo make -C /var/yp


沒有留言:

張貼留言