Try   HackMD

計算機系統管理

csa.cs.nthu.edu.tw
Wayback Machine

2020-10-05

裝系統

  • 選擇 "I will install the operating system later"
  • 因為要安裝FreeBSD 12,Guest OS選Other - FreeBSD 12 64bit
  • Virtual machine name 就只是識別用,就像電腦上的貼紙
  • 如果要在虛擬機開虛擬機,要在Processors選項,勾選Virtualize engine那邊的選項
  • Network先選Bridged
  • 3D加速目前做得不是很好,建議不開
  • 進到虛擬機,按ctrl+alt可以回到桌面
  • ctrl+alt+del會被windows攔截,VMware允許以ctrl+alt+ins取代
  • .vmx是整台虛擬機的設定檔
  • vmxf, vmsd之類的,是bios主機板之類的參數
  • VMware如果要序號,自己上網找w
  • 開機之後看到的畫面,應該類似BIOS的東西
  • 可以在右上角的光碟機設定,把哪一個ISO檔設成光碟給他讀
  • 選擇freeBSD,再按ctrl alt ins重開機
  • 老師教的是,實際要架一台伺服器,真的要拿來服務的,他會怎麼做,有需要可以去官網看handbook
  • nslookup
  • kernel-dbg是開發的時候拿來debug的,我們可以不選(用空白鍵)
  • lib32是用在相容32bit應用程式的東西,建議裝
  • ports
  • src建議裝,如果以後要自己編譯使用應用程式,可能會用到kernel的header之類的
  • 選Auto(UFS)
  • MBR只能訂址48bit,3TB以上的就讀不到
  • MBR最多分割7個,BSD最多8個
  • GPT至少32個
  • 選GPT
  • da代表sata,ada代表ide (?)
  • da0是第一顆硬碟
  • da0p1是第一個partition
  • swap不會有位置,因為他是記憶體
  • alt+F1, F2可以叫出BSD的virtual console
  • pass:yf01-BSD
  • DHCP 動態IP,如果我們的網路上有配發的server,就會自動向他取得,但IP是有限的,可能會拿不到
  • 老師有預留IP,放在點名表
  • SLAAC是IPv6特別的東西,類似DHCP,但是由router配發
  • IPv6設定的時候,老師配發給每個人的是2001:288:e001:86::15:XXXX,後面的XXXX可以自己分配
  • DNS的部分,也在簽到表
  • 正常來說,DNS應該設成自己的上級
  • ntpd, powerd, moused代表daemon,就是會一直跑起來
  • powerd不建議開,因為他會自己調整頻率,一些要計時的程式會壞
  • ntpdate, ntpd要勾,不然違法w
  • system hardening的部分先不管,這部分是要隱藏資訊
  • 之後會要求再建立一個user,為了避免一直使用root
  • ^^^沒這樣做也違法w
  • BSD裡面,管理者權限的名稱叫做wheel,建立這個新user的時候就invite他
  • home directory就是一開始登入會進到的地方
  • user: csa

CentOS

  • Guest OS: Linux -> CentOS 8 64bit
  • 開機之後,如果遇到畫面缺少,可能是硬體的問題,實體機也可能遇到;可以加個參數,用文字的方式安裝
  • software selection: minimal install
  • user: csa
  • pass: yf02-COS

測網路

  • ping 自己 127.0.0.1 / :1
  • ping gateway 140.114.86.254 / 2001:288:e001:86::1
  • ping DNS 8.8.8.8 8.8.4.4 / 2001:4860:4860::8888 2001:4860:4860::8844
  • 如果要用NAT,會變成從分享器後面出去,去網卡設定vmnet8,指定IP就可以了

freeBSD

  • 查IP ifconfig
  • netstat -rn

linux (CentOS)

ip address
ip route
ip -6 route

UNIX基本操作指令

  • 指令前面有一個#代表的是需要管理者權限才可以下
  • $則是任何人

關於IP

  • 虛擬IP = private IP
    • 大多是浮動,但可以設定固定
    • NAT 1:1 多少public就對應多少private IP
    • 即使用的是虛擬IP,能夠上網,一定有NAT存在
    • 現在是IPv4跟v6的過渡期,::ffff:192.168.0.1可用來map到IPv4的192.168.0.1
  • network ID相同,就可以接對接
    • private IP算上mask之後,就得到network ID
    • IPv4 與 IPv6 同理
  • IPv6可以用兩個冒號::來省略中間的0,

其他

  • <>代表必要參數
  • []代表選用參數

後記

  • /etc/rc.conf
  • /etc/resolv.conf

2020/10/12

重設IP

  • /etc/rc.conf

  • 修改後要重開機 或者:

    • ifconfig em0 140.114.86.5 netmask 255.255.255.0
    • ifconfig em0 inet6 ~ (不用netmask)
    • 140.114.86.5 的部分改成自己的IP
  • netstat -rn

    • -n的部分是不要反查主機名稱
    • 可以發現
    • route add default 140.114.86.254
  • /etc/resolve.conf

  • arp -a 可以看到妳所認得的ip跟卡號,限區網

  • netstat -na | more

    • 如果port 22沒有在listen,代表ssd沒有正常運作;
    • 可以去 /etc/rc.conf 看看 sshd_enable是否有="YES"
    • 注意,如果有多行給值,會依照最後一個來設定,但還是建議清理一下

新增USER

  • adduser
  • 使用者群組目前的習慣是,一個使用者自己一個群組,之後有需要跟其他使用者共用一些東西,再設定
  • /etc/ssh/sshd_config
    • 可以在這開放以root登入
  • freeBSD的密碼檔案是在 /etc/master.passwd
    • 直接用vi是不能修改的
    • 要用vipw
      • 資料以:分隔
      • 裡面會有一個預設的toor使用者(反過來的root),第一個:後面是一個星號*
      • 這個星號代表他沒有被啟用
      • 如果要使用這個toor使用者,就要填上加密過後的密碼
      • 使用時機是,給別人管理機器,但他不會管,所以就開這個後門
    • 格式:
      • 名稱:密碼:uid:gid:class:密碼修改次數:密碼有效期限:大致資訊:home目錄:用甚麼shell
    • 系上要給每個學生建立使用者,不會像前面那樣互動式的建立,會直接修改這個檔案,再開每個人的home目錄
  • 密碼的格式:
    • base64的加鹽$加密過後的密碼
    • 可以用crypt自己做
  • 權限格式
    • d rwx rwx rwx
    • 第一個d代表目錄,還可能是l代表link,類似捷徑
    • 第二個代表對擁有者的權限
    • 第三個是這個群組的權限
    • 第四個是其他人的權限
    • dx權限,代表能不能進入
    • 如果是一槓-代表沒有這個權限,例如-rwxr--r--
  • 權限更改
    • chmod
    • chgrp
  • pw usermod <user> -G <group>

NAT

  • NAT本身是一台分享器
  • IPv4
  • 要把BSD變成一個NAT,他會需要兩個網卡,一個內網,一個外網
  • 如果是虛擬機跟虛擬機互聯,建議用LAN segment,稍微會有點跟bridge出去的有關
  • 跟著NAT講義做
  • 新增/etc/loader.conf填入內容
  • 修改/etc/rc.conf
  • 重開機
  • 可以打 sysctl -a | grep forward 看一下IPv4有沒有forward唯一(IPv6沒差)

telnet

  • 非常不安全

HOMEWORK

FreeBSD建一個使用者,要可以SSH操作,要可以變成root

2020/10/19

  • 身為系統管理者,要時常更新,確保安全

  • 用 freebsd-update 來更新

    • freebsd-update fetch
    • freebsd-update install
  • port-tree: freebsd有團隊會port一些程式過來,例如編輯器、網管軟體

    • 可以去官網release info.找Ported Applications
    • portsnap可以把原始碼下載下來(然後可以自己make-make install,但這樣可能有些dependency沒裝,要自己再到其他資料夾make)
      • fetch先拿回壓縮檔
        • portsnap fetch
      • 第一次先extract
        • portsnap extract
      • 第二次之後就update就好
        • portsnap update
      • 壓縮檔、壓縮後,會放在/usr/ports
      • 安裝joe:
        • 到/usr/ports/editors/joe
    • portmaster: port的管理工具
      • /usr/ports/port/mgmt/portmaster
      • make
      • make install
  • 安裝來源不同

    • port-tree, package系統 安裝的路徑相同
      • freebsd下,port-tree、自己編譯的會放在/usr/local
        • bin放執行檔
        • etc放設定檔
      • 用pkg,從已經編譯好的binary安裝會不同
    • 與自己從Source compile安裝的路徑不同
  • pkg info可以看安裝了甚麼package

  • top 監看資源使用,跟windows的工作管理員差不多

    • 第一行 load averages: 後面分別為5, 10, 15分鐘平均X分鐘,有多少程式在等待CPU
    • H,可以叫出說明
  • kill -s HUP <pid>

    • -s 是送一個signal
    • HUP就是重新讀設定檔
    • kill -9 <pid> 強制程式關閉(程式接不到interrupt,也無法忽略),但kernel可能還是不給關
  • alias

    • ex: h history 1000
      • 代表 h 這個字代表後面的 history 1000
    • 系統設定檔 在 /etc/csh.cshrc
    • 個人設定檔 在 ~/.cshrc
    • 每次登入可以直接打 alias h history 1000
      • 但下次就會不見
      • 想要保持設定,就要直接改設定檔
  • 設定字元集

    • setenv LC_CTYPE la_LN.ISO_8859-1
      • 拉丁語系
    • zh_TW.ISO_8859-1
      • 台灣中文
  • 安裝 apache

    • 可以直接用 pkg search apache看看版本,直接用pkg install apache安裝
      • 不建議:V
    • 建議從source安裝
  • 從source安裝apache

    • 去官往找壓縮檔,建議裝.gz,因為支援性較高
    • freebsd自帶fetch,用來從網路抓東西
      • 資安意識抬頭,經常遇到憑證不認得;難(無)解
      • 實在太爛,別用w
    • pkg install wget把wget裝上再用他下載
    • 得到壓縮檔,可以用tar
      • t test,不解壓縮,只是先看看有啥 (建議先看看,不然如果壓縮檔裡面就是一堆檔案,解開之後散成一坨就麻煩了)
        • x 解壓縮
      • v 顯示出來
      • f 指定檔案
      • z 解gzip格式
        • j bz2
        • J xz
    • 小知識: 拿到原始碼要安裝,先看README,再看INSTALL,docs,都沒有的話,看./configure help,再不然看 MAKEFILE
    • 解壓縮後進到資料夾,執行./configure
      • 打./configure help可以看到,預設裝在/usr/local/apache2
      • 會遇到沒有APR的error
        • apache為了在各種環境下都能執行,用了一些library
        • 這些library不一定每個平台都有(:V)所以再寫成另外的套件
        • apr、apr-util
    • 去找apr,下載,解壓縮,執行./configure
      • 這次預設路徑在/usr/local
      • 執行完會發現多了MAKEFILE
        • 執行make,make install
        • 這次又發現缺少apr-util
        • 一樣去安裝
    • 安裝apr-util
      • 執行 ./configure後,告知找不到APR,並要求以with-apr提供路徑
      • 看看 ./configure help,發現
      ​​--with-apr=PATH  prefix for installed APR or the full path to 
      ​​					apr-config
      
      • 剛剛知道裝在/usr/local/,所以去那邊找找apr-config
      • 最後發現只有/usr/local/apr/bin/apr-1-config
      • 就執行./configure with-apr=/usr/local/apr/bin/apr-1-config
    • 繼續安裝apr
      • make, make install
    • 安裝apache
      • make, make install
    • 都完成之後,去設定/usr/local/apache2/conf/http.conf
      • 注意,把唯一的一行 cgid 註解拿掉
    • 執行 /usr/local/apache2/bin/apachectl restart
      • 會需要修改/etc/rc.conf (吧。看他怎麼說)
      • 有改動上面的設定檔 conf/http.conf 也需要重啟apache
  • drill -X <IP>

    • 找domain name
  • sync 把RAM的東西寫到disk

    • 再做reboot
  • windows: nslookup 140.114.86.15

  • pkg install 裝的 apache

    • 目錄在/usr/local/etc/apache24/
    • bin 在 /usr/local/sbin/apachectl
    • cgi 在 /usr/local/www/apache24/cgi-bin/

2020-10-26

大版本更新

  • freebsd-update upgrade -r 12.2-RELEASE
    • 版本號參考官網
  • freebsd-update install
  • reboot
  • freebsd-update install
  • portmaster -a
  • freebsd-update install

syslog

  • /etc/syslog.conf
    • 最下面兩行include,就是也把後面寫的兩個檔案也當作規則塞進來

DNS

  • dig @a.root-servers.net. tw
  • .arpa是個用來IP反查域名的網域
  • Zone file 領域檔
    • 序號以前會用修改時間+版本來記,但久了以後數字可能會爆掉
  • /usr/local/etc/rc.d/named 是BIND的服務
  • /usr/local/etc/namedb/namedb.conf (應該)是寫網址對應的IP
  • /usr/local/etc/namedb/master/yfs~~~ zone的設定

2020-11-02

SSL

  • 憑證
    • 根憑證
      • "自我簽證"的憑證發行者
      • 通常夠嚴格的人才會受到認可
    • 中繼憑證
      • 根憑證的更斯,能信任/授權其他公司的憑證,使其成為中繼憑證
    • CA (Certificate Authentication)
  • 憑證有效期限
    • 之前是一次三年(好像是因為蘋果的政策)
    • 從今年10月之後,就都會是最多兩年
  • 今天會自己做一個簽證
  • openssl genrsa -out CA.key 2048
    • gen一個2048 bit的RSA key pair
    • 裡面是兩組數字,64位編碼
  • 產生簽證
    • x509的標準
    • 會問一些給人看的問題
      • TW, Taiwan, HsinChu, CSA class, ,
  • windows上安裝憑證
    • 副檔名改成.der
    • 直接點開w
  • 要怎麼把憑證給網站用?
    • 有一個公眾認可的CA,我們server給他CSA
    • 傳回來crt
    • 我們必須用這個crt跟我們的private key才能加解密
  • 接下來產生server的key pair
    • 用那個公鑰來產生CSR
    • 注意
    • 回答問題的時候,Common Name在這裡就很重要了,要填寫網址
    • challenging password就隨便吧
  • openssl x509 -in server.crt -noout -text
    • 想看crt裡面寫什麼,可以用這個看看
  • 加進server
    • /usr/local/etc/apache24/httpd.conf 三個地方拿掉註解
    • 接下來修改 /usr/local/apache24/extra/httpd-ssl.conf
      • certificate有三個段落
  • 免費的憑證
    • Let's Encrypt
    • certbot
  • pkg 安裝的
    • /usr/local/etc/apache24/httpd.conf
    • /usr/local/etc/rc.d/apache24 [restart|start|stop|configtest]
    • /usr/local/www/apache24/data/index.html
    • /var/log/httpd-error.log
  • certbot certonly --webroot -w /usr/local/www/apache24/data/ -d yfs.nthu.2y.idv.tw -d dns.nthu.2y.idv.tw
    • -w 是網頁放的位置
    • -d 是我的網址
      • 可以打多個

2020/11/09

NFS

  • 先去 /etc/rc.conf 新增:
    • 必要:
      rpcbind_enable="YES"
    • server 端
      nfs_server_enable="YES"
      nfs_reserved_port_only="YES" 如果不用預設的port,NFS會隨便挑,這樣網管沒辦法設置防火牆例外
    • client 端
      nfs_client_enable="YES"
    • 接著重開機

client端

  • showmount -e 140.114.86.1
    • client端看看這個server有沒有分享東西
      • 140.114.86.1允許任何人存取 /share 這個資料夾
    • 注意,mountd必須要跑起來 (應該)
  • mount -t nfs 140.114.86.1:/share /mnt/
    • <ip>:<目錄> 掛到本機的 /mnt/
    • /mnt目錄是linux、bsd原本就提供的資料夾,就是用來給你掛東西的
    • 要把防火牆關掉、或是設置例外
  • df
    • 列出你現在有哪些檔案系統
    • mount
      • 好像也一樣
  • umount /mnt
    • umount
    • 反mount
  • /etc/fstab
    • 開機自動掛載
      • 原本大概是長這樣
      • dump, pass# 似乎是設定檢查的部分,NFS的話,就不用檢查(設0)
    • 新增像是這樣的東西
      • 140.114.86.15:/share /mnt/share nfs ro 0 0

server端

  • 先啟動 nfsd
    • service nfsd restart
      • mountd 應該也會一起被打開
  • /etc/exports
    • NFS的設定檔 - 要共享哪些目錄、存取權限
    • 通常一開始不會存在
    • 直接寫一行 /share,全世界就可寫可讀這個資料夾
    • 有選項可以加
      • /share -ro 140.114.86.15 => 只給<ip>唯讀
        • 要寫網址/名稱也可以,只要查得到IP
      • /share -ro所有人唯讀
      • -alldirs 如果 /share 下面的目錄還有目錄,允許掛載那些子目錄,否則就只能從 /share 掛起來
      • -maproot=0 如果 client 端是用 root 帳號 mount server 的資料夾,client 端就會以 root 的身分操作這個被分享的資料夾
      • /share /share2 -ro -maproot=0 140.114.86.15 這樣應該也行
      • 可以man exports看看有啥
    • 記得建立你要分享的那個目錄w
  • mountd
    • server負責管nfs mount的部分
    • 執行 /etc/rc.d/nfsd就會跑起來
    • 要重新啟動,先把mountd kill掉
      • kill -1 <pid>
        • kill -1 表示傳送 HUP signal;對於 daemon 來說通常是重新載入設定檔的意思
        • service nfsd restart 應該也是可以 吧

autofs

  • 很多台電腦,要一個一個mount很累
  • amd - auto mount deamon
    • 可以讓 /net/140.114.86.15/share 這個位置直接對應到<IP>那台主機用NFS分享的 /share 資料夾
    • 在rc.conf多一行 amd_enable="YES"
    • /etc/rc.d/amd start
      • 或 service amd start
    • 會出現兩個目錄: /net 以及 /host
      • cd到/net,直接cd到有nfs的主機ip位置,amd就會自動mount然後cd進去
        • ex /net/140.114.86.15/share
      • /host 目錄用法一樣

HW

  • 開啟nfs功能,創立sharey資料夾,無存取限制,所有人皆可

2020/11/23

SAMBA

  • pkg search samba pkg install samba<version>
    • 安裝完會告知設定檔案應該在哪
      • /usr/loca/etc/smb4.conf
    • [global] 是指生效範圍,其他的如[homes], [share]是目錄名稱
      • valid users = <user> [user [user ]]
        • 允許哪些使用者存取
      • force user = <user>
        • 讓使用者以 <user> 的身分存取分享的檔案
  • smbpasswd -a yfs
    • -a 新增smb使用者
    • yfs 使用者名稱
    • 注意,這個 SAMBA 的帳號密碼跟 freeBSD 機器上的是不一樣的,SAMBA 用的是 smbpasswd 自己管的
    • 注意,SAMBA 建立的帳號,freeBSD 必須也存在這個使用者 (valid users 後面寫的使用者在 freeBSD 跟 SAMBA 都要存在)
      • 提醒: adduser <user_name> 可以建立新的使用者
  • windows 不能一次登入兩個samba
    • 去cmd net use 砍掉已經登入的
      ​​​​​​​​狀態       本機        遠端                    網路
      
      ​​​​​​​​-------------------------------------------------------------------------------
      ​​​​​​​​OK                     \\140.114.86.15\IPC$      Microsoft Windows Network
      ​​​​​​​​命令已經成功完成。
      
    • net use \\140.114.86.15\IPC$ /delete

磁碟管理

  • camcontrol devlist
    • cam指的是 斷電後不會掉資料的裝置
  • gpart
    • 是硬碟分割區相關的指令
    • gpart show
      • 會把所有的 partition table 印出來
    • gpart create -s gpt /dev/ada[0|1|...] ( <=> destroy )
      • 建立 partition table
      • -s schema
        • gpt: GUID partition talbe
        • 有mbr, ldm, bsd64
      • /dev/ada0
    • gpart add -t freebsd-ufs -s 100M /dev/ada[0|1|...] ( <=> delete )
      • -t partition 的 type
        • 如 freebsd-boot, freebsd-swap
        • 可以man gpart,查 "PARTITION TYPE"
      • -s
        • 100M 切一個100M的,沒有加M,會是sector,512Byte

2020-11-30

(接續磁碟管理)

  • 注意
    • 用SATA的話,磁碟名稱是ada,SCSI的話,是da
    • 用windows開啟磁碟管理,看到一塊一塊的,就是partition
    • gpart show 來看 freeBSD 的 partition
  • camcontrol devlist
    • "cam"
    • devlist: device list
    • 可以列出機器上所有能儲存資料的裝置
  • gpart delete -i <#> ada<#>
    • 砍掉 ada0, ada1 的第 1, 2partition
    • gpart delete -i 1 ada0 => ada0p1
  • gpart destroy [ada0|ada1|...]
    • 砍掉硬碟的 partition table (這樣就跟初始狀態一樣)
  • 即使不建立 partition,硬碟也可以直接使用 (how :V)
  • ls /dev/diskid/
    • 可以看到 camcontrol devlist 印出來那串很長的磁碟編號
  • gpart show [ada0|ada1|...]
    • 只看特定 partition table 長什麼樣

gvinum

  • 用來組 raid 的工具
  • gvinum
    • list

      • drive/volume/plex/subdisk
    • create

      • 進到編輯器
      • 新增 drive cd1 device /dev/ada0p1
        • 建立名為 cd1 的 drive,使用的是 ada0 的第一個 partition
        • cd concat disk
          • 為什麼不是從cd0開始?
          • 因為是concat的第一個
          • (就一個慣例
        • 儲存退出,生效後會被加到註解
        • 再加入ada1p1, ada2p1
    • create

      • volume concat
        • concat 是我們決定的 volume 的名字 (因為接下來以 concat 的方式作為範例)
    • create

      • plex name concat_plex org concat vol concat
        • concat_plex 為名稱的 plex
        • org organization
          • 以 concat 的方式組成
        • vol 是 volume "concat" 的 plex
    • create

      • sd name c_p_d1 drive cd1 plex concat_plex
        • sd subdisk
        • 名為 c_p_d1
          • concat disk - concat plex - disk 1
        • drive 用 cd1 的 disk
        • 把 drive 放到 plex "concat_plex"
        • 把 c_p_d2, c_p_d3 也加進去
    • 注意,建議不要分次新增,一次弄好比較好
    • 這樣子分次新增,建好了也不會變成up (不會自行啟動)
      • setstate up
        • setstate 來讓 volume/plex/subdisk/drive 啟動
        • 其他版本可能可以用 start <volume|plex|...>
    • rm concat_plex

      • 用來砍掉這個plex
      • 但一定不給砍
      • 要直接從volume開始 -r 砍
    • ls /dev/gvinum
      • 這個資料夾底下就會是我們建好的volume
    • 結果:
    • 這個 concat 的 volume 就變成是一顆硬碟,要使用的話就先建立 file system,然後 mount 起來
      • newfs /dev/gvinum/concat
        • 對這個合併的disk建立file system
      • mount /dev/gvinum/concat /mnt/
  • df (-kh)
    • 看空間
  • 重開機之後,不會看到這個"硬碟"
    • 修改 /boot/loader.conf
      • 新增 geom_vinum_load="YES"
    • 修改 /etc/fstab
      • 參考 NFS 那邊
  • 如果重啟後,用gvinum看subdisk不會自己啟動:
    • 手動開好後
    • gvinum saveconfig
  • 範例二: 新增mirror
  • gvinum
    • create

      • drive md1 device /dev/ada4p1
      • drive md2 device /dev/ada5p1
      • volume mirror
      • plex name mirror_plex1 org concat vol mirror
      • plex name mirror_plex2 org concat vol mirror
      • sd name m_p_1 drive md1 plex mirror_plex1
      • sd name m_p_2 drive md2 plex mirror_plex2
  • 一個plex,subdisk的新增順序很重要
  • dd if=/dev/ada3 of=/dev/null
    • 讀 /dev/ada3 的資料
    • 到 /dev/null (直接丟掉)
    • 用來確認ada3是哪顆實體的硬碟
    • 有/dev/zero可以用,就是真的一堆的0x00給你讀

復原

2020-12-07

ZFS

  • 上星期做的gvinum,基本上是創造新的device,弄完還需要給他格式化才能使用
  • 載入zfs kernel功能
    • /boot/loader.conf 新增一行 zfs_load="YES"
  • 開機狀態直接載入zfs
    • kldload zfs

zpool 資源池

  • zpool create pool0 /dev/ada6 /dev/ada7 /dev/ada8
    • create 建立資源池
    • pool0 命名這個資源池
    • 後面寫上要使用的硬碟
  • zpool list
  • zpool status
  • 空間用完了怎麼辦? 塞一顆新的進去pool
    • zpool add pool0 /dev/ada3
  • 怎麼砍?
    • zpool destroy pool0
  • zpool create pool2 mirror /dev/ada6 /dev/ada7
    • 建立一個 mirror ,使用後面給的兩顆硬碟
    • 要塞進新的硬碟的話,通常是要一次兩顆,但真的要的話,可以 add -f 強制加入
    • zpool add mirror pool2 /dev/ada8
  • zpool create pool0 raidz3 <硬碟們>
    • raidz3 requires at least 4 devices
    • 壞三顆硬碟還是可以救
  • /etc/rc.conf
    • zfs_enable="YES"
  • 假設用了raidz3,其中一顆壞掉了,要用新的硬碟取代
    • 先用zpool status看看NAME裡面,遺失的那顆的一長串數字
    • zpool replace pool0 <那串數字> /dev/ada10
      • ada10 取代 pool0 裡面 <那串數字> 原本的硬碟
  • zfs create
  • zfs set
    • 可以看有哪些神奇的功能(壓縮、去重複等)
    • zfs set compression=on pool/zfs1
      • 讀寫這裡面的東西都要加/解壓縮
  • du -h 可以看資料夾內檔案大小
  • zfs snapshot pool0/zfs1@2020-12-07
    • 對pool0/zfs1的檔案系統做快照,命名為2020-12-07
  • zfs list -t snapshot
    • 列出有快照的
  • zfs rollback pool0/zfs1@2020-12-07
    • 如果在快照之後有新的東西,做了rollback,新的東西也會消失
  • zfs clone pool0/zfs1@2020-12-07 /pool0/zfs2
    • zfs list 就可以看到快照的資料跑到/pool0/zfs2
  • 如何改變掛載點?
    • 建一個範例 zfs craete pool0/zfs2/subdir
    • zfs set mountpoint=/subdir /pool0/zfs2/subdir
      • 把後面的資料夾改掛到前面的位置
  • zfs get
    • 可以看一堆參數

mail

  • 先處理DNS
    • 在領域檔(/usr/local/etc/named/master/yfs.nthu.2y.idv.tw.hosts)新增兩行
      • mail.yfs.nthu.2y.idv.tw. IN A 140.114.86.15
      • mail.yfs.nthu.2y.idv.tw. IN MX 0 mail.yfs.nthu.2y.idv.tw.
        • 0 代表優先度 (查查 MX 優先權)
        • 這一行前面的 mail.yfs~~~ 是 email 的小老鼠後面想要的名稱,後面是主機的位置
        • 這個主機的位置似乎不允許直接寫 IP,所以必須用這樣的網址
        • 要用網址,就要確保這個網址能夠對應到 IP,所以要加一個 A 紀錄
    • 接著service named restart
    • http://nthu.2y.idv.tw/ 新增 2 個紀錄
      • mail IN MX 0 mail.yfs.nthu.2y.idv.tw.
      • mail IN A 140.114.86.15
      • 記得原本已經有的要填上
  • /etc/rc.conf 新增
    • sendmail_enable="YES"
  • hostname 要跟改成上面設定的一樣
  • 重新啟動

設定

  • 在 /etc/mail/ 裡面下 make
    • 如果沒有設定檔,會產生以主機名稱命名的 .mc 跟 .cf 的 default設定檔
    • mc 透過 "m4" compiler 變成 cf 檔,變成系統真正使用的格式
    • 接著要再 make install,系統才會真的套用設定
  • service sendmail restart
  • 這樣就可以收信了
  • 信件會放在 /var/mail/ 底下
    • 裡面預設是一堆每個使用者為名的文字檔
    • 每個人的信件就直接寫在個別的文字檔裡面
  • 可以試試 gmail 寄給 yfs@mail.yfs.nthu.2y.idv.tw

dovecot

  • 允許 IMAP 跟 POP 的收信
  • 跟著講義
  • cp 的部分,要加 -r
  • 啟動dovecot的部分,要重啟兩次
    • 也可以用 service dovecot restart

信件軟體 Thunderbird

  • 2020/12/07 影片 1:57:20 開始

Relay

  • 在 $hostname.mc 裡面找 access_db 的 FEATURE 設定,這東西是設定要收哪裡來的信,哪裡的不收
    • 發現是看 /etc/mail/access
  • 修改 /etc/mail/access,新增
    • 140.114.86 RELAY
      • 代表允許這個 IP 底下的機器(140.114.86.0~255)透過我這台主機送信出去
      • 如果只加 RELAY,代表允許全世界的人都可以透過我發信;不用幾小時就變垃圾郵件主機了
  • 在 /etc/mail 下 make
  • 這樣就可以透過其他郵件軟體 (Thunderbird) 用這台主機發信給別人

2020-12-14

Sendmail - 認證SMTP

  • 允許使用帳號登入
  • 第一步
    • pkg search cyrus-sasl
      • 一個認證的協定
    • pkg install cyrus-sasl2
    • pkg install cyrus-sasl2-saslauthd << 這個也要
  • 第二步 (step 3) 重新編譯
    • 到 /usr/src/lib/libsmutil
      • make clean
      • make
    • 到 /usr/src/lib/libsm
      • make clean
      • make
    • 到 /usr/src/usr.sbin/sendmail
      • make clean
      • make
      • make install
  • (step 2)
    • 到 /etc/mail 開一個 [hostname].mc 的檔案
      • 塞入網站上那串
      • 再make
  • 測試 IMAP4
    • 優點: 信件不會下載到客戶端,操作都跟server同步
    • telnet localhost 143
    • L001 LOGIN yfs yf01-BSD
  • telnet直接明碼,智障一樣,要給他+ SSL
    • 加密之後telnet不能連
    • 可以用 openssl s_client -host [IP] -port [port]

NIS

  • 讓不同電腦上能夠用同樣的帳號登入
  • 要取不同的網域名稱
    • server就取 NIS106062223
    • 盡量不要減號底線小數點
  • 步驟
    • cd /var/yp
    • cp /etc/master.passwd /var/yp/
    • vim ./master.passwd
      • 砍掉不用的帳號
        • 只留yfs, csa, cifs
      • 這些就是可以在client上直接使用的帳號
    • 接著在/etc/rc.conf加入
      ​​​​​​​​nisdomainname="NIS1060622223"
      ​​​​​​​​nis_server_enable="YES"
      ​​​​​​​​nis_yppasswdd_enable="YES"
      ​​​​​​​​rpcbind_enable="YES"
      ​​​​​​​​nis_client_enable="YES"
      
    • 重啟
    • 重登後,打domainname, yp

HW

  • pkg search php74
  • pkg search mod_php74
  • pkg search mysql57
    • client + server
  • pkg search mariadb (optional)
    • ver 10.X
  • Nextcloud
    • 下星期的作業就會是要安裝這個,建立一個帳號讓助教登入

single user mode

  • "enter"
  • fsck -y /
  • mount -u /

2020-12-21

自己嘗試裝 Nextcloud

  • 網路查到,只要準備好Apache, MySql, PHP,再安裝nextcloud就可以用了

安裝mysql server (就包含了client)

  • pkg install php74
  • pkg install mysql57-server
    • 上面說的 "This is the mysql CLIENT without the server."
    • 是 groff-1.22.4_3 說的
    • 下面有 mysql_57-server-5.7.32 的訊息 (就是有安裝到啦,別擔心)
  • pkg install nextcloud-php74

上課~

  • 首先確認 web server 正常
    • 網頁開自己的網址/IP看
  • pkg install php73
  • pkg install mod_php73
  • 接著在 web server 主設定檔加入:
    ​​​​<FilesMatch "\.phps$">
    ​​​​    SetHandler application/x-httpd-php-source
    ​​​​</FilesMatch>
    
    • 以及在 DirectoryIndex index.html 同一行加入 index.php
      • 變成 DirectoryIndex index.html index.php
  • pkg install mysql57-server
    • 畫面上會告知,在home目錄有一個預設密碼
    • 到 /etc/rc.conf 加入 mysql_enable="YES"
    • service mysql-server start
      • 之後會在 home 目錄多一個 ~/.mysql_secret (之類的)
    • 輸入 mysql -u root -p
      • 接著輸入預設密碼,即可用 root 登入 mysql
      • \q, exit, quit 都可以退出
  • 安裝圖形化介面 (會下 sql 指令可以跳過)
  • 接著幫資料庫建帳號
    • 比較特別
    • 還會看IP
      • 從不同機器,可以需要不同密碼
    • grant all privileges on *.* to user@'%' identified by 'password';
      • 將所有權限(all privileges)授權給: 從任意主機(%之意,不含本機)登入的user帳號,所有database(第一個*之意)底下的所有table(第二個*)
      • '%'是sql的特殊字元,代表任意字元
        • user@'%' 就是用 user 從任意主機連的都可以
        • 但是不包含本機
      • 會發現不給執行,因為root使用的是預設的密碼,要先改掉
    • set password = PASSWORD('<在此輸入密碼>')
      • 這樣來重設root密碼
      • 就可以回去執行上一行
    • grant all privileges on *.* to user@'localhost' identified by 'password';
      • 這樣就可以允許能在本機登入 (選用)
  • 使用 MySQL Workbench
    • 用 standard over ssh
    • 會有兩個帳號要填: SSH、MYSQL
    • 第一個 SSH Username, Password,就是平常用ssh能登入的帳號
    • MySQL Username 就是可以用前面給所有權限的 user 帳號登入
    • MySQL Hostname 這欄,如果輸入本機 (127.0.0.1),在Username 就只能用 root 登入
      • 如果要用其他使用者 (如 user),就要以其他 IP 登入 (140.114 or 192.168)
  • 安裝 Nextcloud
    • 老師使用的是 webinstaller
      • 這東西是個 php 檔,把它放在網頁開得起來的地方
        • 我在 /usr/local/www/apache24/data/ 開個 nextcloud 資料夾
      • cd 到目標資料夾,wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
      • 接著用瀏覽器開 yfs.nthu.2y.idv.tw/nextcloud/setup-nextcloud.php
      • 可以看到nextcloud有哪些dependency需要安裝,就手動裝一裝
      • 裝完之後指定安裝路徑
      • 之後大概會有"內部伺服器錯誤"
        • 可能是因為 .htaccess
        • 去 apache 主設定檔
          • AllowOverride none 改成 All
      • 最後發現是最新的 nextcloud 不喜歡 php 7.3版
        • 改安裝 舊版的 nextcloud
      • 可以去 port 找到網址在哪
      • 最後發現,少了 php73-session
        • debug過程
        • 因為還在安裝過程,比較難發現錯誤
        • 如果裝好了,會在資料夾下面有另一個data的資料夾
        • 如果我們現在mkdir這個data資料夾,錯誤會被寫進去

rcvar

  • service mysql-server rcvar

HW

  • 建立一個使用者:
    • 帳號: user
    • 密碼: csacsauser

2020-12-28

X Window

  • 原名叫 X org
  • pkg install xorg
  • 開mobaxterm連線,起始畫面就會多xorg的訊息
    • mobaxterm會開啟x window的server,虛擬機的應用程式就會送到這個server
    • 負責顯示的是server
  • pkg install xfce
    • 一個視窗管理介面
  • 裝小工具
    • xeyes
      • 一個會跟隨游標的眼睛
    • xclock
    • xload
  • pkg install gnome3
    • 也是另一個視窗管理介面
  • 字體
    • pkg install zh-kcfonts
    • pkg install zh-moettf
    • pkg install zh-arphicttf
    • pkg install zh-opendesktop-fonts
  • 輸入法
    *

增大硬碟

  • 先關機
  • 去設定,找到主硬碟,expand,輸入想要的大小
  • 開機,用single user mode
    • gpart show 看一下,會發現多了一些free的空間
    • 由於free跨了swap,不能直接融合到跟目錄
    • 先把swap 砍掉(反正是當虛擬記憶體的,沒關係)
      • gpart delete ~~
    • gpart resize -i 2 -s 30G /dev/da0
    • 把swap 補回來
      • gpart add -t freebsd-swap /dev/da0
    • 這時候,硬碟空間變大了,但df -h看看,檔案系統還沒更新
      • growfs /dev/da0p2
      • 他會警告,這步驟很容易檔案遺失
    • 重開機

設定x server

  • 確認主機名稱
  • 回憶: alt + F1~F8 可以切換到虛擬桌面0~7
  • 開了 "X" 之後,會切到第9個(#8)虛擬桌面,要回來的話,要按ctrl + alt + F1 (依據你從哪個視窗開X)
    • 注意,打了X,會在真正的(虛擬機上的)console出現視窗,所以用ssh連,要回去vmware看
  • 先切回去把她關了
  • X -configure
    • 會生成 ~/xorg.conf.new
    • 修改完之後覆蓋 /etc/X11/xorg.conf.d ,之後就會用這個設定檔
      • 或者用 X -configure <path_to_config_file>
  • startx
    • 啟動x windows在vm上 (?)
    • ((但我的滑鼠不能動 QAQ
    • !!!
    • 啟動moused服務
      • vim /etc/rc.conf
        • moused_enable="YES"
      • service moused start
  • pkg install dbus 裝dbus
    • desktop manager 需要用到 (某些 吧)
  • /usr/local/etc/X11/xinit/xinitrc 是全使用者的設定檔
    • 建立一個 ~/.xinitrc ,就可以用個人化的設定
  • desktop manager
    • xorg 對應到 xdm
      • pkg install xdm
      • pkg install xsm (session manager)
      • 要用中文化,不建議用xorg+xdm,因為要改系統的設定,不只是cshrc之類的
    • xfce 對應到 slim
      • pkg install slim
      • 建議使用這個
    • gnome 對應到 gdm
  • pkg install open-vm-tools
  • 裝好後 startx 就可以啟動
  • 但要先在 ~/.xinitrc 新增
    • exec startxfce4
  • 這樣才會啟動 xfce

中文化

  • 兩個部分: 顯示中文、輸入中文
  • 顯示的部分
  • pkg install zh-kcfonts zh-moettf zh-arphicttf zh-opendesktop-fonts
    • 全裝了
  • 輸入法 SCIM
  • pkg install zh-scim-tables
  • vim .cshrc

    setenv LC_CTYPE zh_TW.UTF-8
    setenv LANG zh_TW.UTF-8
    setenv XMODIFIERS @im=SCIM

    • 注意,在上一步安裝的zh-scim-tables,在第三個setenv XMODIFIERS,就要對應到SCIM
      • 其他的有啥?
  • 裝完輸入法,要在啟動x windows時(就是輸入startx)也把他開起來
  • ~/.xinitrc 改成
    • scim -d &
      • 啟動輸入法
    • exec startxfce4

vnc

  • pkg install tightvnc
  • vncserver -geometry 1366x768
    • 會有訊息告訴你
  • 如何關閉
    • vncserver -kill :1
  • ~/.vnc/xstartup
    *

xrdp

回去再補拉QAQ

VirtualBox

  • 虛擬機開虛擬機
  • 去設定vmware,cpu,允許virtualize intel VT-x/EPT or AMD-v/RVI
    • 要先關機
  • pkg install virtualbox-ose
    • open source edition
  • 老師使用x windows來開
  • 可以在左上角應用程式-系統 oracle vm~~
  • 想要建立的話,會發現有錯誤,需要載入kernel東西
    • 執行 service vboxnet onestart