2023年6月16日 星期五

不重灌,使用 dnf 升級為 Debian 12 的方法

<<準備工作>> 

  1. 備份個人資料。
  2. 先作例行更新。
apt update
apt upgrade
apt full-upgrade
apt autoremove --purge
apt clean

※更新完,建議重開機。 

編輯sources.list檔

/etc/apt/sources.list
  • 將所有的「bullseye」換為「bookworm」
  • 注意大小寫

下載系統升級套件

apt update
apt upgrade --without-new-pkgs
apt full-upgrade
apt autoremove --purge
apt clean

※更新完,建議重開機。 

可能會發生的錯誤及其解決方式

  • Unable to fetch some archives
apt-get update --fix-missing


2021年11月5日 星期五

在 Fedora 設定 SSH Server 的 port

1. 前言

因為 Fedora 有一些安全設定,導致要更動 SSH 的 port 比較麻煩,在不關閉原有的安全設定下,這裡提示一些必要的安全設定操作指令。



2. 相關設定

2.1. sshd_config

/etc/ssh/sshd_config

2.1.1. 安全性設定

# What ports, IPs and protocols we listen for
Port 12345

SSH 預設使用 port 22,建議更改,特別在面向網路網路使用時,幾乎只要一上網就會被攻擊。埠號可自定,不要與使用中的埠號即可。

PermitRootLogin prohibit-password

建議不要使用 root 登入 SSH,所以可將 PermitRootLogin 設為 no。但讓 root 能登入有時候滿方便的,特別是有時需要傳一些需要 root 權限的檔案時,可以省掉一些操作上的麻煩。所以這裡使用 prohibit-password,再加上使用免密碼登入方式,就可以讓 root 能登入 SSH,且能保持一定程度的安全性。

#AllowUsers cy # NOTE! this will disable root login

可限定只有某些使用者登入,值得注意的是,若沒有加入 root,將會使 root 不能登入,即使 PermitRootLogin 為 yes 或 prohibit-password 亦然。在我的 Server 並未實作此項,所以前面加 #。

2.1.2. 效能性設定

UseDNS no

加了這個據說能加速登入速度。

2.2. 變更 systemd socket

systemctl edit sshd.socket

將前面的#符號去掉,修改以下設定:

[Socket]
ListenStream=
ListenStream=12345

2.2. 變更 SELinux

增加新修改的port號如下,但是要去掉原先的22埠似乎有問題,暫且不管它。

semanage port -a -t ssh_port_t -p tcp 12345

用以下的指令可觀察是否變更。

semanage port -l | grep ssh_port_t

以下為執行結果,僅供參考。

ssh_port_t                     tcp      12345, 22

2.2. 變更防火牆

打開新修改的port:

firewall-cmd --permanent --service="ssh" --add-port "12345/tcp"

開閉原來的port22:

firewall-cmd --permanent --service="ssh" --remove-port "22/tcp"

重啟防火牆:

firewall-cmd --reload


5. 服務管理

安裝完會自動啟動服務,其餘服務常用操作指令如下所列。

systemctl status sshd.service
systemctl restart sshd.service
systemctl enable sshd.service


2021年11月4日 星期四

在 Fedora 上安裝 Samba Server

1. 安裝相關套件

sudo dnf upgrade
sudo dnf install samba
其中,libnss-winbind 可讓 Linux 解析 Windows 的主機名。

2. 相關設定檔

2.1. smb.conf

/etc/samba/smb.conf

2.1.1. 一般使用者「家」目錄設定

[global]
    workgroup = WORKGROUP
    server string = Samba Server Version %v
    netbios name = CY
    security = user
    passdb backend = tdbsam

[homes]
    comment = Home Directories
    valid users = %S, %D%w%S
    browseable = Yes
    read only  = No
    inherit acls = Yes


3. 資源管理

3.1. 新增使用者

sudo pdbedit -a -u user_name
其中,user_name為你要給定的使用者帳號名稱。
實作範例:
cy@cy:~$ sudo pdbedit -a -u cy
retype new password:
Unix username:        cy
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-3922602909-3884501703-394166850-1000
Primary Group SID:    S-1-5-21-3922602909-3884501703-394166850-513
Full Name:            CY
Home Directory:       \\CY\cy
HomeDir Drive:
Logon Script:
Profile Path:         \\CY\cykuo\profile
Domain:               CY
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          三, 06  2月 2036 23:06:39 CST
Kickoff time:         三, 06  2月 2036 23:06:39 CST
Password last set:    三, 03 11月 2021 20:14:20 CST
Password can change:  三, 03 11月 2021 20:14:20 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF


4. 測試

4.1. 測試 smb.conf 設定是否正確

testparm
實作範例:
cy@cy:~$ testparm
Load smb config files from /etc/samba/smb.conf
lpcfg_do_global_parameter: WARNING: The "encrypt passwords" option is deprecated
Loaded services file OK.
Weak crypto is allowed

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
        security = USER
        server string = Samba Server Version %v
        idmap config * : backend = tdb


[homes]
        comment = Home Directories
        inherit acls = Yes
        read only = No
        valid users = %S %D%w%S


5. 安全設定

5.1. 防火牆

firewall-cmd --get-active-zones
sudo firewall-cmd --permanent --zone=FedoraWorkstation --add-service=samba
sudo firewall-cmd --reload

5.2. Selinux

setsebool -P samba_enable_home_dirs=1


6. 服務管理

systemctl status smb.service nmb.service
systemctl restart smb.service nmb.service
systemctl enable smb.service nmb.service


2018年10月4日 星期四

好用的終端機軟體

terminator

sudo add-apt-repository ppa:gnome-terminator
sudo apt-get update
sudo apt-get install terminator

2017年7月5日 星期三

shell script 特殊技巧收集

動態改變命令列的提示(prompt)

PROMPT_COMMAND

PROMPT_COMMAND 是 bash 的環境變數,每執行一道命令列命令後,存在此變數的指令都會被執行一遍,我們可以利用此一特性改變我們每一次的命令列提示。

以下所示範的是:

  1. 顯示上一次執行命令的狀態碼(Exit Code)。
  2. 若現行工作目錄未改變,則顯示目前的名錄名即可,否則顯示完整的路徑名。
  3. 部份 code 引用原來的 Ubuntu 家目錄(home)底下的 .bashrc 的 PS1 設定,如:debian_chroot,其他系統需要作相對應的修改。
__var_show_dirpath__=
__var_show_dirpath__='\w'
PROMPT_COMMAND='__prompt_command__'
__prompt_command__() {
    PS1="[$?] "
    if [ "$__var_show_dirpath__" = "$PWD" ]; then
        __show_dirpath__='\W'
    else
        __show_dirpath__='\w'
        __var_show_dirpath__=$PWD
    fi
    PS1+='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]'
    PS1+=$__show_dirpath__
    PS1+='\[\033[00m\]\$ '
}

你可以將以上的程式碼嵌入進你家目錄的 .bashrc 中,重開啟 shell 便能看到效果,如以下所示:
[0] cy@cyvm:~/tmp$ pwd
/home/cy/tmp
[0] cy@cyvm:tmp$ ls
mnt  old  test
[0] cy@cyvm:tmp$ cd test
[0] cy@cyvm:~/tmp/test$ ls

2017年7月2日 星期日

[便攜式 Debian 系統實作] - 創建第一個 ISO hybrid 映像檔

(本文主要依據 Debian Live Systems Manual 翻譯)

不管映像檔類型為何,創建的基本步驟大致上都相同:

  1. 建立一個工作目錄,更改到該目錄。工作目錄的名稱可由你自己決定。在這個示範裡,我們使用 live-default 做為我們的工作目錄。
  2. 執行以下 live-build 命令序列,以創建一個基本的 ISO hybrid 映像檔(一個已預設好的不包含 X.org 的【便攜式系統】)。適用於刻錄到CD或DVD介質上,也可以復製到U盤上。部份指令需要系統管理員權限才能正確執行,為了方便起見,建議你一開始執行的時候,就直接切換為系統管理員登入。
mkdir live-default && cd live-default
lb config
lb build

創建【便攜式系統】需要花一點時間,當建好的時候,你可以在工作目錄下看到一個名為 binary.hybrid.iso 的映像檔(譯註:不同系統的  live-build ,產出的檔名有區別,我在 Ubuntu 下產生的檔名如上,另外在 Debian 8 64bits 版本下產生的則為 live-image-amd64.hybrid.iso)。

除了自己動手做外,你也可以使用其他人已經預先構建好的映像檔。live-images 即是一個用 git 儲存庫 (git repository) 管理的便攜式 Debian 系統專案。官方穩定版本發佈在在 https://www.debian.org/CD/live/ (譯註:其實就是 Debian 安裝光檔)。而舊版與即將發行的版本,以及包含非免費軟韌體的非官方版本則是發佈在 http://debian-live.alioth.debian.org/cdimage/release/ (譯註:似乎已不存在)。