計算機系統管理
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 (?)
- da
0
是第一顆硬碟
- da0
p1
是第一個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的部分,也在簽到表
- ntp
d
, 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
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
新增USER
adduser
- 使用者群組目前的習慣是,一個使用者自己一個群組,之後有需要跟其他使用者共用一些東西,再設定
- /etc/ssh/sshd_config
- freeBSD的密碼檔案是在 /etc/master.passwd
- 直接用
vi
是不能修改的
- 要用
vipw
- 資料以
:
分隔
- 裡面會有一個預設的toor使用者(反過來的root),第一個
:
後面是一個星號*
- 這個星號代表他沒有被啟用
- 如果要使用這個toor使用者,就要填上加密過後的密碼
- 使用時機是,給別人管理機器,但他不會管,所以就開這個後門
- 格式:
- 名稱:密碼:uid:gid:class:密碼修改次數:密碼有效期限:大致資訊:home目錄:用甚麼shell
- 系上要給每個學生建立使用者,不會像前面那樣互動式的建立,會直接修改這個檔案,再開每個人的home目錄
- 密碼的格式:
base64的加鹽
$加密過後的密碼
- 可以用crypt自己做
- 權限格式
- d rwx rwx rwx
- 第一個
d
代表目錄,還可能是l
代表link,類似捷徑
- 第二個代表對
擁有者
的權限
- 第三個是
這個群組
的權限
- 第四個是
其他人
的權限
- 對
d
的x
權限,代表能不能進入
- 如果是一槓
-
代表沒有這個權限,例如-rwxr--r--
- 權限更改
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先拿回壓縮檔
- 第一次先extract
- 第二次之後就update就好
- 壓縮檔、壓縮後,會放在/usr/ports
- 安裝joe:
- portmaster: port的管理工具
- /usr/ports/port/mgmt/portmaster
make
make install
-
安裝來源不同
- port-tree, package系統 安裝的路徑相同
- freebsd下,port-tree、自己編譯的會放在/usr/local
- 用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安裝
- 建議從source安裝
-
從source安裝apache
- 去官往找壓縮檔,建議裝.gz,因為支援性較高
- freebsd自帶
fetch
,用來從網路抓東西
- 資安意識抬頭,經常遇到憑證不認得;難(無)解
- 實在太爛,別用w
pkg install wget
把wget裝上再用他下載
- 得到壓縮檔,可以用
tar
t
test,不解壓縮,只是先看看有啥 (建議先看看,不然如果壓縮檔裡面就是一堆檔案,解開之後散成一坨就麻煩了)
v
顯示出來
f
指定檔案
z
解gzip格式
- 小知識: 拿到原始碼要安裝,先看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
- 安裝apache
- 都完成之後,去設定/usr/local/apache2/conf/http.conf
- 執行 /usr/local/apache2/bin/apachectl restart
- 會需要修改/etc/rc.conf (吧。看他怎麼說)
- 有改動上面的設定檔 conf/http.conf 也需要重啟apache
-
drill -X <IP>
-
sync
把RAM的東西寫到disk
-
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上安裝憑證
- 要怎麼把憑證給網站用?
- 有一個公眾認可的CA,我們server給他CSA
- 傳回來crt
- 我們必須用這個crt跟我們的private key才能加解密
- 接下來產生server的key pair
- 用那個公鑰來產生CSR
- 注意
- 回答問題的時候,Common Name在這裡就很重要了,要填寫網址
- challenging password就隨便吧
openssl x509 -in server.crt -noout -text
- 加進server
- /usr/local/etc/apache24/httpd.conf 三個地方拿掉註解
- 接下來修改 /usr/local/apache24/extra/httpd-ssl.conf
- 免費的憑證
- 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
umount /mnt
- /etc/fstab
- 開機自動掛載
- 原本大概是長這樣
- dump, pass# 似乎是設定檢查的部分,NFS的話,就不用檢查(設0)
- 新增像是這樣的東西
140.114.86.15:/share /mnt/share nfs ro 0 0
server端
- 先啟動 nfsd
- /etc/exports
- NFS的設定檔 - 要共享哪些目錄、存取權限
- 通常一開始不會存在
- 直接寫一行
/share
,全世界就可寫可讀這個資料夾
- 有選項可以加
/share -ro 140.114.86.15
=> 只給<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
- 會出現兩個目錄: /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>
- 安裝完會告知設定檔案應該在哪
[global]
是指生效範圍,其他的如[homes]
, [share]
是目錄名稱
- valid users = <user> [user [user …]]
- force 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
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, 2…個 partition
- 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
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
- 結果:
- 這個 concat 的 volume 就變成是一顆硬碟,要使用的話就先建立 file system,然後 mount 起來
newfs /dev/gvinum/concat
mount /dev/gvinum/concat /mnt/
- df (-kh)
- 重開機之後,不會看到這個"硬碟"
- 修改 /boot/loader.conf
- 修改 /etc/fstab
- 如果重啟後,用gvinum看subdisk不會自己啟動:
- 範例二: 新增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
zpool 資源池
zpool create pool0 /dev/ada6 /dev/ada7 /dev/ada8
- create 建立資源池
- pool0 命名這個資源池
- 後面寫上要使用的硬碟
zpool list
zpool status
- 空間用完了怎麼辦? 塞一顆新的進去pool
zpool add pool0 /dev/ada3
- 怎麼砍?
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
- 假設用了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)新增兩行
- 接著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 新增
- 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
Relay
- 在 $hostname.mc 裡面找 access_db 的 FEATURE 設定,這東西是設定要收哪裡來的信,哪裡的不收
- 修改 /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
- 到 /usr/src/lib/libsm
- 到 /usr/src/usr.sbin/sendmail
- make clean
- make
- make install
- (step 2)
- 到 /etc/mail 開一個 [hostname].mc 的檔案
- …
- 測試 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
- 砍掉不用的帳號
- 這些就是可以在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
- pkg search mariadb (optional)
- 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 正常
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('<在此輸入密碼>')
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版
- 可以去 port 找到網址在哪
- 最後發現,少了 php73-session
- debug過程
- 因為還在安裝過程,比較難發現錯誤
- 如果裝好了,會在資料夾下面有另一個data的資料夾
- 如果我們現在mkdir這個data資料夾,錯誤會被寫進去
rcvar
- service mysql-server rcvar
HW
2020-12-28
X Window
- 原名叫 X org
- pkg install xorg
- 開mobaxterm連線,起始畫面就會多xorg的訊息
- mobaxterm會開啟x window的server,虛擬機的應用程式就會送到這個server
- 負責顯示的是server
- pkg install xfce
- 裝小工具
- 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 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
- 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
- gnome 對應到 gdm
pkg install open-vm-tools
- 裝好後
startx
就可以啟動
- 但要先在 ~/.xinitrc 新增
- 這樣才會啟動 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
- 如何關閉
- ~/.vnc/xstartup
*
xrdp
回去再補拉QAQ
VirtualBox
- 虛擬機開虛擬機
- 去設定vmware,cpu,允許virtualize intel VT-x/EPT or AMD-v/RVI
pkg install virtualbox-ose
- 老師使用x windows來開
- 可以在左上角應用程式-系統 oracle vm~~
- 想要建立的話,會發現有錯誤,需要載入kernel東西
- 執行 service vboxnet onestart