2012-05-02 49 views
5

我想在/ etc/sudoers文件中刪除(uncommnet#)輪組,所以我應該使用哪種正則表達式模式?正則表達式模式編輯/ etc/sudoers文件

#cat /etc/sudoers 
.... 
.... 
## Allows members of the 'sys' group to run networking, software, 
## service management apps and more. 
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS 

## Allows people in group wheel to run all commands 
# %wheel  ALL=(ALL)  ALL 

## Same thing without a password 
# %wheel ALL=(ALL)  NOPASSWD: ALL 

.... 
.... 

我想從下面的行中刪除#。

... 
# %wheel ALL=(ALL)  NOPASSWD: ALL 
... 

回答

15

您不應該用任何腳本編輯/etc/sudoers文件。這是visudo命令的原因。對sudoers文件的編輯應該很少,並且可以很好地控制。這就是說,如果你的visudo命令的編輯器是vi,你可以運行類似:%s/^# %wheel/%wheel/的命令來取消以%wheel開始的所有行的註釋。

或者,如果你reeeeeeally認爲這是必要的:

sudo sed --in-place 's/^#\s*\(%wheel\s\+ALL=(ALL)\s\+NOPASSWD:\s\+ALL\)/\1/' /etc/sudoers 

運行它沒有--in-place首先要檢查的輸出。需要您自擔風險使用它。

+0

我就知道!但我們有批量安裝,我不能手工完成。它只是單行編輯,這就是爲什麼我不擔心。 – Satish

+0

瞧!你走了!你說對了。有用! – Satish

+0

\ s *的含義是什麼?我相信空白空間.. – Satish

3

下面應該工作:

sed -i 's/^#\s*\(%wheel\s*ALL=(ALL)\s*NOPASSWD:\s*ALL\)/\1/' /etc/sudoers