dig @a.root-servers.net . ns > /chroot/named/conf/named.root #這是在redhat下的用法,因為天緣所用的solaris默認(我用的2.6)沒有dig命令,所以在solaris下我們用
cd /chroot/named/conf @ IN SOA @ root ( |
4、設置權限
其實這一步,才是我們作任何chroot 服務真正精華的地方。如何把權限劃分得準確,不至于無法執行服務,也不能大到會威脅到其他程序的安全,實在是一個需要仔細考慮的問題。
a.由于我們的目的是達到讓bind程序以named用戶身份運行,所以必須讓它具有讀配置,無寫配置文件的權限,而且最好其他程序也不能改變我們的配置文件,只有root能改,named用戶能讀。為了滿足這個要求的,自然就想到把文件的擁有者改為root,組用戶設置為named,然后再慢慢仔細劃分權限。
cd /chroot/named
chown –R root.named ./ #-R參數表示下屬目錄也依照此權限,-R參數在chown和chmod中經常用到
b.接下來想想各個文件、子目錄的權限。Root組對 文件需要讀寫執行權限,named組對文件需要讀取權限,而對下屬子目錄而言,則必須具有執行權限才能進入其中。因此作以下權限設置。
# 對文件賦予root 讀寫權限,賦予組named讀權限
find . -type f -print | xargs chmod u=rw,og=r
# 對目錄賦予roo讀寫執行權限,賦予組named讀執行權限(這里的執行是為了能進入到下級目錄中)
find . -type d -print | xargs chmod u=rwx,og=rx
#對etc目錄下的配置文件,能不讓其他用戶讀取當然是最好的,因此設置
chmod o= etc/*.conf
# "secondaries" 子目錄是此DNS服務器作輔助服務器,從主服務器更新消息的時候需要的,會在里面創建一些新文件。因此它的權限也需要特別設置,在這個目錄下,named組、用戶需要具有讀權限,而不需要用到root用戶,也不想讓其他的用戶身份訪問。
chown root.named conf/secondaries/ #設置secondaries目錄用戶為root,組為named
chmod ug=rwx,o= conf/secondaries/ #給予root和named全部權限,以方便訪問下面的文件
touch conf/secondaries/.empty # 去掉舊有的該文件
find conf/secondaries/ -type f -print | xargs chown named.named #將用戶組、用戶都設置為named
find conf/secondaries/ -type f -print | xargs chmod ug=r,o= #只讓named組和用戶有讀權限,而其他用戶無任何權限
接著是為var/目錄設置權限(在這里會生成進程守護文件named.pid—我們在named.conf中設置了的)
chown root.root var/ #這里可以把named拋棄,
chmod u=rwx,og=x var/ #root可以讀寫設置,其他用戶能執行就行,其實我們之所以做一個chroot DNS需要大費周折地單獨設置目錄,就是為了不讓named具有訪問真正的/var的權限。
chown root.named var/run/ #因為在run下面的需要由named身份來寫named.pid文件,所以需要將組改為named好限制權限
chmod ug=rwx,o=rx var/run/ #用戶/組具有讀寫執行權限,其他用戶能讀/執行就可以了,這樣的設置,主要是為了方便我們后面寫shell來判斷DNS目前的狀態。
chown root.named logs/ #日志目錄,設置成這樣的原因不用解釋了吧
chmod ug=rwx,o=rx logs/ #日志允許其他人看比較好,方便以后掛第三方程序