sudoers 檔案改壞了

昨天不小心在 /etc/sudoers.d 目錄下加了個檔案,格式有問題,導致之後下 sudo 指令都會出現這樣的錯誤:

sudo: unable to initialize policy plugin

本想說要來重開機,進 single 模式來修改了,還好,找到這篇:https://unix.stackexchange.com/questions/677591/how-to-restore-a-broken-sudoers-file-without-being-able-to-use-sudo

照這篇的方法來處理,就免於重開機的命運。

方法是這樣的,先開兩個終端機視窗,都登入需要處理 sudoers 的主機,在第一個終端機視窗輸入下面指令取得當前 bash 的 pid

echo $$

在第二個終端機視窗輸入

pkttyagent --process <pid>

這個 <pid> 就是前面取得的 bash 的 pid。

再回到第一個終端機視窗,因為我是在 /etc/sudoers.d 目錄下加了一個格式錯誤的檔案,所以就刪掉就可以。

pkexec rm -f /etc/sudoers.d/user1

文章裡,是提問者把檔案擁有者改錯了,導致有問題,所以他用的是 chown 來改擁有者。

文章裡有說明為什麼可以用 pkexec 來處理,這指令其實跟 sudo 差不多,主要是用 polkit 在處理,解答的人說的很仔細。

可喜可賀,學到一個有趣的指令,也解決了一個手殘改錯的問題。

ArchLinux更新出現signature is unknown trust

今天在更新 ArchLinux 時,出現了類似這樣的錯誤,導致後續沒辦法繼續更新。

signature from "Andreas Radke andyrtr@archlinux.org" is unknown trust

本以為會像 Ubuntu 一樣,需要去 gpg server 找金鑰匯入,不過搜尋以後找到這篇:Update / pacman / keyring problem ,發現很容易就可以解決。

只要先執行下面這行,先去更新 keyring 套件即可

sudo pacman -S archlinux-keyring

RHEL8 iSCSI

target 主要提供 iSCSI 裝置,客戶端要使用這個裝置,就需要設置 iSCSI initiator。

我設置 iSCSI target 的方式主要是參考:How to Share Storage via iSCSI Target in RHEL 7/CentOS 7 還有 RHEL8 的管理存儲設備手冊裡的第七章

客戶端的設置,則是參考:How to Configure iSCSI initiator in RHEL 7/CentOS 7

iSCSI target

首先安裝 targetcli

yum install targetcli
systemctl start target
systemctl enable target
firewall-cmd --permanent --add-port=3260/tcp
firewall-cmd --reload

然後執行 targetcli ,targetcli 指令跟 bash 操作很接近,有 ls ,每個資源則用 cd 進入,操作可以用 create, delete 等,很直覺。

第一步是進入 iscsi 去建立 target

iscsi/
create

若需要使用指定的名稱,則是用

create iqn.2006-04.com.example:444

第二步是建立 backstore,這邊只建立 block storage,是告知 backstore 名稱是 block1,使用的實體裝置是 /dev/sdb

cd /backstores
block/ create name=block1 dev=/dev/sdb

第三步是建立 portal,這邊會先把預設的刪除,再重新建立。這主要是設定要 listen 的 位址跟 port。把預設的刪除掉的原因是,0.0.0.0 範圍太大。

cd /iscsi/iqn.2006-04.example:444/tpg1
delete ip_address=0.0.0.0 ip_port=3260
create 192.168.11.147

第四步是建立 lun

/iscsi/iqn.2006-04.example:444/tpg1/luns/ create /backstores/block/block1

第五步是建立 ACL

/iscsi/iqn.2006-04.example:444/tpg1/acls/ create iqn.2006-04.com.example.foo:888

最後,要重新啟動 target.service

systemctl restart target

iSCSI 客戶端

首先是安裝套件

yum install iscsi-initiator-utils -y

再來是修改設定,主要的設定檔是在 /etc/iscsi/initiatorname.iscsi

內容要填入前面所建立的 acl

InitiatorName=iqn.2006-04.com.example.foo:888

填寫完成後,重新啟動 iscsi.service

systemctl enable iscsi.service
systemctl start iscsi.service

然後去做 discovery,這個步驟會去試探指定的 IP 是否有 iscsi target,然後取得資訊存起來。

iscsiadm -m discovery -t st -p 192.168.11.147 –discover
192.168.11.147:3260,1 iqn.2006-04.com.example:444

這步驟若沒問題,可以在 /var/lib/iscsi/nodes 下找到檔案,這檔案裏面就是連線的資訊。

接下來就是登入

iscsiadm -m node -T iqn.2006-04.com.example:444 -l

這行若成功,就可以用 dmesg 查到 “Attached” 的字樣,表示已經掛載上來了。

這邊有個關鍵,就是有更動 /etc/iscsi/initiatorname.iscsi 內容的話,一定要重新啟動 iscsi.service ,否則會使用到之前的設定,導致失敗。

gcin出現Cannot open /usr/share/gcin/table/.kbm

某天點了 gcin 的 tray icon,按了裡面的「切到舊的注音鍵盤」,之後,切換到 gcin,就會出現下面的訊息

Cannot open /usr/share/gcin/table/.kbm

這超奇怪,放了好幾天,終於受不了。嘗試了以下幾個作法:

  1. 試著移除 gcin,再重新安裝 gcin,不行。
  2. 試著去複製以前的 gcin 設定,不行。

後來才在 gcin 討論區裡找到這篇:Ubuntu 14.04 gcin 安裝啟動後竟抓不到注音符號表??—->X@.kbm

只要執行以下指令,把 ~/.gcin/config 下的 phonetic-keyboard* 刪除即可

rm ~/.gcin/config/phonetic-keyboard*

果然解鈴還須繫鈴人。

電影流水帳(2021/12/01~2021/12/15)

S.H.E

聽見歌在唱

一個偏鄉學校因為人數過少,面臨關校危機,校長跟老師們期望能透過歌唱比賽,讓外界看到,進而避免關校。體育老師跟代課老師臨危受命,把學校的孩子們組成合唱團去參加比賽,故事就是在講這樣的過程。第一次的比賽結果並不理想,老師跟孩子們都很失望。後來代課老師去部落做客,聽到部落耆老的歌聲,才發現布農族的傳統合音好美,出身於部落就應該要師法部落的傳統唱法,不需要去學習外面的唱法。於是他們重新來過,跟部落耆老學習,然後募了款項,再次去參加比賽。

到了比賽當天,天公不做美,下山的道路被落石阻擋。老師不放棄,請了孩子的家長開挖土機來,利用挖土機搬運,讓孩子們通過坍塌處,趕下山去參加比賽。所幸,有趕上比賽,而這次的比賽大放異彩,評審跟觀眾們都非常驚豔,電影在此畫下了句點。蠻好看的,除了故事之外,電影也點出偏鄉部落的困境,人數稀少、師資、教學資源、沒有家長照看問題等等,這些都很值得去重視。

T-34

二次大戰期間,一些俄國軍人被德軍俘虜,德軍為了要能做戰車訓練,就讓他們去修復一輛戰車,期望在修復以後,可以做德俄的戰車演練。這群俄國人覺得這是一個好時機,就接受了這項任務,開始進行修復,在邊修復的同時,也邊規劃逃脫的計劃。這段期間,德軍是透過一個俄國護士來跟這些俄國人溝通,這個俄國護士有聽到他們的逃脫計劃,因為她也想逃走,所以她就幫忙瞞著德軍,同時也幫忙找資源。

戰車修好了,就要開始演練,這同時也是要執行逃脫計劃的時候。俄國護士幫忙去取得地圖,並以身份掩護,到外面去等待。這群俄國人就開著 T-34 坦克,開始陪著德軍演練。隨著演練的推展,德軍發現這台坦克不對勁,就開始追捕。T-34 坦克到了約定地點接走護士,看著地圖規劃逃脫路線。德軍怎麼可能善罷干休?展開大規模搜捕,後來就展開大戰。最後當然是 T-34 坦克順利回到俄國,二次大戰也結束,大家過著還不錯的日子這樣。

電影流水帳(2021/10/01~2021/11/30)

小倉優香
小倉優香,在 GRAND BLUE 裡飾演浜岡梓,超正。

Red Notice

Netflix 在 2021 年後半推出的大片,卡司堅強,有巨石強森、神力女超人跟死侍一起演出,劇情緊湊,是一部適合無腦看、打發時間的動作片。

傳說埃及豔后有三顆精巧的彩蛋,她非常喜愛,所以在埃及豔后死後被帶入陵墓陪葬。隨著時間過去,這蛋被找了出來,並流傳到各地去。時間很快帶到現代,故事就因為這三顆彩蛋而發生。有個富翁想要集齊三顆彩蛋來幫女兒過生日,所以向世界提出高額賞金,希望有人能找到這三顆彩蛋。

Norlan 是個竊賊,擅長偷盜精美的藝術品;Hartley 是個警探,想抓 Norlan 很久了,一次機緣之下,得知了 Norlan 的消息,他打算去博物館偷彩蛋,於是協同 Das 一同追查,可惜這樣的天羅地網並無法抓住 Norlan,Norlan 逃脫了。兩天後,Norlan 回到家中,被守株待兔的 Hartley 跟 Das 抓住。但 Norlan 手上的彩蛋是假的,隔天,Das 跑去找 Hartley ,認為 Hartley 有鬼,把他們兩人送到監獄去。

到了監獄,兩人一對質,才知道主教的存在,主教早已經掉包彩蛋。兩人很生氣,想要逮住主教,在一番策劃下,兩人一同逃獄。在逃獄後,跑去第二顆彩蛋的地點,想要阻止主教。哪知道費盡心思的結果只是一場空,原來主教已經跟彩蛋主人串通好,再次綁了兩人,以脅迫 Hartley 的方式逼 Norlan 說出第三顆彩蛋位置。在經過前面的事件,Norlan 已經把 Hartley 當作伙伴,所以不忍心 Hartley 被動刑,就說出了第三顆彩蛋的下落。主教聽完,就趕緊去取了。

Norlan 跟 Hartley 在艱困的環境下脫了身,這時 Norlan 才跟 Hartley 說,我剛剛跟他說第三顆彩蛋的位置是假的,我們現在要趕緊去,就跟 Hartley 一同去了南美洲。又花了不少的心血,終於找到第三顆彩蛋。這時出現的驚喜是,原來主教跟 Hartley 是一伙的,Hartley 是刻意貼近 Norlan ,以便套取第三顆彩蛋的下落,而 Hartley 也真的成功了。Hartley 跟主教兩人集齊了三顆彩蛋,就前往富翁那邊領取賞金。

哪知道富翁的女兒根本不愛這三顆彩蛋,他只喜歡紅髮艾德,接著 Das 帶領著警隊出現,將富翁跟他女兒以偷盜藝術品的罪名逮捕。主教跟 Hartley 才不管這些,他們兩人搭著遊艇逃之夭夭。主教跟 Hartley 在遊艇上舉杯慶祝的時候,Norlan 突然出現,告知 Das 已經扣住他們的帳戶,你們什麼錢都沒拿到,然後提出一個提議,要他們一起去偷盜另外一樣東西,要不然就告訴 Das 來逮人。主教跟 Hartley 想了好一會兒,決定答應 Norlan 。這樣的結局暗示了還有續集,就繼續看下去吧。

GRAND BLUE

很歡樂的電影,我是因為看到預告有比基尼才想看的。

故事一開始很妙,北原伊織到沖繩上大學,可是在到叔父開的 GRAND BLUE 民宿時,就會喪失記憶,然後會裸體地出現在學校,持續了好幾次。在這樣的過程裡,他認識了今村耕平,他同樣也是會喪失記憶,然後裸體地出現在學校裡。經過幾次下來,他們兩個才回想起發生了什麼事情。原來他們兩個一到了 GRAND BLUE 民宿後,就遇到潛水社的社員們,然後就開始開心的喝酒、跳舞,喝到最後就茫了。潛水社的學長們覺得才剛開學不能翹課,就把他們兩個搬到學校去,讓他們上課。

接下來就是他們兩個跟潛水結下不解之緣的故事,很多地方都很好笑,小倉優香、石川戀、與田祐希、朝比奈彩很漂亮,讓整個故事很歡樂。

電影流水帳(2021/09/01~2021/09/30)

charlie and the chocolate factory
Freddie Highmore ,Way Down 的男主角,演過巧克力冒險工廠。

逃出立法院

這故事蠻有趣的,拍的還算可以,我覺得導演本來就是把這部電影設定為 B 級片,血灑的到處都是。故事本身是架空世界,所以就蠻輕鬆地來看,不必太認真。

熊穎穎的老家因為要蓋化工廠而被迫搬遷,為了不要讓自己的家鄉蓋工廠,也為了這一口氣,她努力的當上了立法委員。可是因為政敵的作對,她被迫下台。以前的同學王有為對熊穎穎有意思,跑去立法院當了警衛。熊穎穎下台後,他被拉拔起來作為傀儡立委。

化工廠流出的病毒間接導致總統被感染,到立法院報告的時候,他的病情爆發,變成活屍,開始亂咬人。立法院裡一堆人變成活屍,因此封鎖。王有為、熊穎穎跟政敵等人為了求生,只能殺出一條生路,逃出立法院。最終當然是主角們順利逃出來,王有為的血內含有抗體,能防止病毒感染,他捐出他的血,協助藥廠開發疫苗,化工廠也關閉了,算是皆大歡喜。

Way Down

很典型的劫盜片,一個團隊為了偷寶物,克服種種難關,最終得手。

比較印象深刻的部份是這個金庫,金庫是利用重力來觸發機關,所以主角花了許多功夫才想到可以利用液態氮來冷凍金庫下方的磅秤,讓磅秤不會那麼靈敏。在同伴被黑吃黑拿走寶物以後,男女主角被困在金庫,也是主角想到這個水可能也是透過磅秤才能解除。後面的逃脫都是計劃外的事情,這段蠻讓人提心吊膽的,所幸最後能順利逃出。那主角的團隊到底有沒有拿到寶物呢?想當然是有,這都是靠主角事前的準備,將寶物掉了包。

ls 的 quoting-style

有人來問才知道 ls 是有在改版的。

在 coreutils 8.30 (RHEL8) 預設的 quoting-style 是 shell,在 coreutils 8.22 (RHEL7) 預設的 quoting-style 是 literal,主要差異是在於檔名有空白時是否要加上單引號。

在 coreutils 8.30 (RHEL8) 是這樣

# ls -l
total 8
-rw-r--r--. 1 root root   0 Dec  1 14:38  bar.txt
-rw-r--r--. 1 root root 514 Dec  1 15:38  cluster-logging.yml
-rw-r--r--. 1 root root   0 Dec  1 14:38 'foo bar.txt'
-rw-r--r--. 1 root root   0 Dec  1 14:38  foo.txt
-rw-r--r--. 1 root root 528 Dec  1 15:38  openshift-user-critical.yml

在 coreutils 8.22 (RHEL7) 是這樣

# ls -l
總計 0
-rw-r--r--. 1 root root 0 12月  1 14:41 bar.txt
-rw-r--r--. 1 root root 0 12月  1 14:41 foo bar.txt
-rw-r--r--. 1 root root 0 12月  1 14:41 foo.txt

在 RHEL8 想讓輸出的結果跟 RHEL7 一樣的話,可以加上 –quoting-style 參數

ls -l --quoting-style=literal

Ubuntu 21.10 的 Chromium

許久沒用 Chromium,這次安裝發現很不一樣。

  1. snap package:雖然還是用 apt 來安裝,但實際上已經是 snap package 。
  2. Profile 路徑:因為使用 snap package,所以 Profile 路徑已經不是 ~/.config/chromium/Default,而是在 ~/snap/chromium/common/chromium/Default 。如果要從非 snap package 的 Google chrome 遷移到 Chromium,就是把 ~/.config/google-chrome/Default 複製到 ~/snap/chromium/common/chromium/Default 就可以。如果不確定 Profile 路徑在哪兒,可以在 Chromium 的網址欄輸入 chrome://version 就可以看到。

參考資料