2017年9月2日 星期六

chown 要小心

chown 要小心
--------------------
事由:
本想把一路徑的 owner 改為自己,就直覺地下了這樣的一道指令:
chown -R myname /.
結果,天下大亂。所有根目錄的 root owner都被改成我的了。

正確的下法,更改目前所在路徑的 owner,是:
chown -R myname *

--------------------
症狀:
su 的密碼認證失敗。導致須要以 root 權限驗證的程式無法執行。如,drakconf,
draknetcenter,在 dolphin中,mount umount的功能失效。

error message:
su 驗證失敗
sudo must be owned by uid 0 and have the setuid bit set

--------------------
解方:
一般建議是重灌系統。但袛為了下錯一道指令就得重灌,有點扯。
目前有尚可接受的解方,但仍不完全病除,記錄如下:

1. 以開機片開機,進入 recovery mode,掛載硬碟,下
$chown -R root:root /

檢查:Uid是否為 0/root
$stat /
File: ‘/’
Size: 4096 Blocks: 8 IO Block: 4096 目錄
Device: 807h/2055d Inode: 2 Links: 20
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-09-01 09:54:31.555898736 +0800
Modify: 2016-12-24 14:13:16.000000000 +0800
Change: 2017-09-01 19:14:04.081404737 +0800
Birth: -


owner 改回 root 了,但事情還沒完。

2.改特定檔案屬性:
$chmod 4755 /usr/bin/su
$chmod 4755 /usr/bin/sudo
$chmod 644 /usr/lib/sudo/sudoers.so
$chmod 440 /etc/sudoers

3.加入 wheel 群組
$usermod -aG wheel myname

4.以 root 帳號登入,執行
$visudo

## Allows people in group wheel to run all commands
#%wheel ALL=(ALL) ALL (將此#移除,儲存,離開。:wq)

大抵如此了。

若要以 root 身分執行程式,可以sudo,或su,再輸入密碼。
但若以 user 身分執行會用到 pkexec的程式,如 drakconf,就會....
Error executing command as another user: Not authorized

目前未解。