Linux:限制使用者登入(LDAP適合),利用 pam_access 模組

簡易的需求範例,root , mis群組 可登入,其餘禁止 , 利用 pam_access.so

/etc/security/access.conf

+ : root : ALL
+ : (mis) : ALL
- : ALL : ALL

/etc/pam.d/sshd , 取消 pam_access.so 的 mark

#account required pam_access.so -> account required pam_access.so

設定完就直接生效了,請留意 access.conf 設定

其他常見寫法

[+|-] : [user|(group)] : [ALL|ttyx|IPv4|IPv6|domain]
+ : allow
- : deny
user : root , All , other_user
(Group) : (root) ,(user) , (other_group)
IPv4 : 127.0.0.1
IPv6 : ::1
Domain : foo.com

# root 只能從 127.0.0.1 登入 + : root : 127.0.0.1 #mis 群組 和 wang 這個user 可以從任人何地方登入 + : (mis) wang : ALL #其餘拒絕 - : ALL : ALL

參考:
https://linux.die.net/man/5/access.conf

Linux: sudo 免用密碼設定範例

編輯 sudo 設定檔

visudo

指定帳號 sudo 免密碼

#單帳號
user1 ALL=NOPASSWD: ALL
# “%” 為群組
%user ALL=NOPASSWD: ALL

指定帳號 sudo 特定程式免密碼

user1 ALL=NOPASSWD:/bin/chmod

指定帳號 sudo 特定程式+特定操作免密碼

user1 ALL=NOPASSWD:/bin/chmod [0–7][0-5][0–5] /var/www/html/,/bin/chown root:root /var/www/html/

切換 root 環境,需密碼操作

%mis ALL=(ALL) PASSWD: /bin/bash, /bin/sh

Msyql:mysql_config_editor 免密碼登入-加密版

在批次處理 mysql 作業,為免去人工輸入密碼,通常有三種做法,我還是小嫩嫩的時候都是用第一種…

  1. 直接在bash 填入密碼,簡單好用但是不安全,mysql 還會發警告
    mysql -uroot -pxxxx
    Warning: Using a password on the command line interface can be insecure
    
  2. 針對所有使用者免必密碼-修改my.cnf
    vim /etc/my.cnf
    [client]
    user=“root”
    password=“xxxx”
    

    2–1 針對個別使用者的免密碼-在自己的家目錄建立~/.my.cnf

    vim ~/.my.cnf
    [client]
    user=“root”
    password=“xxxx”
    最好加個權限控管,因為“明碼”,你知道的! chmod 600 ~/.my.cnf

接著 打入mysql -uroot 就可操作 mysql 了

以上都是明碼,我也不太喜歡,還好 mysql 出了第三種方法,就是 mysql_config_editor

host:
mysql_config_editor set –login-path=name –host=localhost –user=root –password
Enter password: (input) “xxxx”

Socket: mysql_config_editor set -G name -S /tmp/mysql.sock -u root -p Enter password: (input) “xxxx”

-h,–host=name 添加host到登陸文件中 -G,–login-path=name 在登錄文件中為login path添加名字(默認為client) -p,–password 在登陸文件中添加密碼(該密碼會被mysql_config_editor自動加密) -u,–user 添加用戶名到登陸文件中 -S,–socket=name 添加sock文件路徑到登陸文件中 -P,–port=name 添加port到登陸文件中

接著你就會發現在家目錄下有個 ~/.mylogin.cnf 加密的二進制檔案,相對安全[不會有人承諾100%安全的..],你可以用以下指令查看已建置的內容

mysql_config_editor print –all

然後使用以下指令操作mysql

mysql –login-path=name

移除設定

mysql_config_editor remove –login-path=name

更多說明請見 https://dev.mysql.com/doc/refman/5.7/en/mysql-config-editor.html

Percoan 體系注意:
Percona client 5.7 找不到 mysql_config_editor 的解法

apt install libperconaserverclient20-dev
#注意:有可能會連mysql-server 一起update,production 環境要留意

PVE:lxc:TASK ERROR: clone failed: zfs error: cannot create use ‘none’ to disable quota/refquota

當clone lxc 時出現:
NewImage

依字面意思去檢查了zfs 的設定

pve> zfs get quota,refquota data/subvol–108-disk–0
NAME PROPERTY VALUE SOURCE
data/subvol–116-disk–0 quota none default
data/subvol–116-disk–0 refquota none default

看似沒有問題,卻依然無法成功
比對了跟可以正常clone 的lxc ,原來 refquota 不是none
難道是我英文不好… 依原始HD大小修改一下設定

pve> zfs set refquota=8G data/subvol–108-disk–0

就可以clone了[拍手]

Mysql:5.7 sql_mode 新預設值

通常遇到升到5.7 ,又沒改default value,會碰到2個問題

  • datetime default value 是 0000–00–00 00:00:00 不給建table
  • group by 在 select 中,必需明確定義(不能是只是‘*’)

都不難解,但取決於是開發階段還是升級,開發階段就改code 符合mysql 吧, 嚴謹總是比較好!
至於升級… 訂定目標吧
無奈解法:改回5.6 的預設值(記得也要修改mysql.cnf):

Mysql 5.7 預設 sql mode 說明

ONLY_FULL_GROUP_BY

在嚴格模式下,不要讓GROUP BY部分中的查詢指向未選擇的列,否則報錯。

NO_ZERO_DATE

在嚴格模式,不要將’0000–00–00’做為合法日期。你仍然可以用IGNORE選項插入零日期。在非嚴格模式,可以接受該日期,但會生成警告。

NO_ZERO_IN_DATE

在嚴格模式,不接受月或日部分為0的日期,對年不限制。如果使用IGNORE選項,我們為類似的日期插入’0000–00–00’。在非嚴格模式,可以接受該日期,但會生成警告。

ERROR_FOR_DIVISION_BY_ZERO

在嚴格模式,在INSERT或UPDATE過程中,如果被零除(或MOD(X,0)),則產生錯誤(否則為警告)。如果未給出該模式,被零除時MySQL返回NULL。如果用到INSERT IGNORE或UPDATE IGNORE中,MySQL生成被零除警告,但操作結果為NULL。

NO_AUTO_CREATE_USER

在嚴格模式下,防止GRANT自動建立新使用者,除非還指定了密碼。

NO_ENGINE_SUBSTITUTION

如果需要的儲存引擎被禁用或未編譯,可以防止自動替換儲存引擎。

STRICT_TRANS_TABLES

為事務儲存引擎啟用嚴格模式,也可能為非事務儲存引擎啟用嚴格模式,非法資料值被拒絕,下面有詳細說明。

嚴格模式控制MySQL如何處理非法或丟失的輸入值。有幾種原因可以使一個值為非法。例如,資料型別錯誤,不適合列,或超出範圍。當新插入的行不包含某列的沒有顯示定義DEFAULT子句的值,則該值被丟失。

對於事務表,當啟用STRICT_ALL_TABLES或STRICT_TRANS_TABLES模式時,如果語句中有非法或丟失值,則會出現錯誤。語句被放棄並滾動。

對於非事務表,如果插入或更新的第1行出現壞值,兩種模式的行為相同。語句被放棄,表保持不變。如果語句插入或修改多行,並且壞值出現在第2或後面的行,結果取決於啟用了哪個嚴格選項:

對於STRICT_ALL_TABLES,MySQL返回錯誤並忽視剩餘的行。但是,在這種情況下,前面的行已經被插入或更新。這說明你可以部分更新,這可能不是你想要的。要避免這點,最好使用單行語句,因為這樣可以不更改表即可以放棄。

對於STRICT_TRANS_TABLES,MySQL將非法值轉換為最接近該列的合法值並插入調整後的值。如果值丟失,MySQL在列中插入隱式 預設值。在任何情況下,MySQL都會生成警告而不是給出錯誤並繼續執行語句。

嚴格模式不允許非法日期,例如’2004–04–31’。它不允許禁止日期使用“零”部分,例如’2004–04–00’或”零”日期。要想禁止,應在嚴格模式基礎上,啟用NO_ZERO_IN_DATE和NO_ZERO_DATE SQL模式。

如果你不使用嚴格模式(即不啟用STRICT_TRANS_TABLES或STRICT_ALL_TABLES模式),對於非法或丟失的值,MySQL將插入調整後的值並給出警告。在嚴格模式,你可以通過INSERT IGNORE或UPDATE IGNORE來實現。

Mysql: ALL PRIVILEGES 帳號依然無開帳號 ( ERROR 1044)

一直以來用root@localhost 開帳號都沒什麼問題,開了一個[email protected] 給dev 用,就出問題了

檢查一下權限,發現也沒問題

再往下查

眼尖的你有發現嗎 ?
“Grant_priv: N”

查了一下google 大神,原來必需要有 Grant_priv 才能 Grant, 卻不包含在 ALL PRIVILEGES 裡

解法:

打完收工!

linux-nslcd(LDAP) thread 調整

nslcd default threads = 5
啟動 nslcd 即有5條thread 對 LDAP server 連連
不懂預設值為什麼要設定這麼大
因為我有200台VM,LDAP 就要吃一千條連線
不過有大量登入需求可能真需要放大,但我目前沒有這種服務..

打完收工
update :
查找 ldap 連線

MacOS-mkvtoolnix-mkv 編輯指令

mkvtoolnix

mkvtoolnix 可以拿來做 mkv 簡單的併接,剪裁,字幕加減等等
缺點是在mac 上不支援GUI
安裝:

會產以下4個tool
mkvextract mkvinfo mkvmerge mkvpropedit
本次僅使用 add srt 的功能

languages 有iso , 可用以下指令查詢
mkvmerge –list-languages
4G 檔案走SMB,大概只花了不到5分鐘,蠻快的