sudo和它的編輯工具visudo

2022-06-25 03:48:10 字數 3767 閱讀 1615

sudo是linux系統管理指令,是允許系統管理員讓普通使用者執行一些或者全部的root命令的乙個工具,如halt,reboot,su等等。這樣不僅減少了root使用者的登入 和管理時間,同樣也提高了安全性。

授權配置在/etc/sudoers這個檔案中,預設這個檔案是唯讀許可權,它有個專門的工具叫visudo,這個命令能不僅能編輯這個配置檔案,還能對輸入內容做語法檢測,如果語法有誤,會提示錯誤位置,並且不會儲存到配置檔案中,它還能指出語法錯誤。其實visudo命令相當於:vi /etc/sudoers。

授權配置格式:

who     where=(whom)    commands

使用者 主機=(以誰的身份) commands

#使用者配置可以是:

username

#uid

%groupname

%#gid

user_alias

#主機配置:

iphostname

netaddr

host_alias

#commands配置

command #命令要絕對路徑指定

cmnd #命令別名,靈活使用能提高效率

-----------------------------------在sudo配置中,可能對多個使用者配置多個相同命令,這時候可以使用別名來配置。

#定義別名的方法:

alias_type name=item1, item2, item3, ... name:別名名稱,必須使用全大寫字元;

alias_type:

user_alias

host_alias

runas_alias

cmnd_alias

例如: user_alias netadmin=tom, jerry

cmnd_alias netcmnd=ip, ifconfig

, route

netadmin localhost=(root) netcmnd

語法:sudo

[option] [command]

常用選項:

-k:清除此前快取使用者成功認證結果,即重新輸入密碼

-l:列出能用的命令

sudo有個驗票機制,能記錄成功認證結果一段時間,預設為5分鐘,

###新建乙個使用者one,給它開放所有命令。

[root@test2 ~]# visudo

one all=(all) all

#切換到one使用者,可以通過命令:「

sudo -l」,列出可用命令

[one@test2 ~]$ sudo -l

[sudo] password for

one:

匹配此主機上 one 的預設條目:

...使用者 one 可以在該主機上執行以下命令:

(all) all #可以看到此使用者可以執行所有命令

但這樣有風險,萬一使用者執行sudo -root呢?

這樣帶來的後果是:只要輸入自己用的密碼就能登陸root了,

所以我們可以在執行所有命令的同時,也同時禁止某些命令

[root@test2 ~]# visudo

one all=(all) all,!/usr/bin/passwd

root #禁止passwd root命令

#測試:

[one@test2 ~]$ sudo

passwd

root

對不起,使用者 one 無權以 root 的身份在 test2 上執行 /bin/passwd

root。

在使用者配置上,也可以對組來配置,但需要注意,只能指基本組

例如:對super組配置sudo許可權。

先把one使用者的配置清除。

[root@test2 ~]# visudo

#one all=(all) all,!/usr/bin/passwd root, /usr/bin/sudo

root

[one@test2 ~]$ sudo -l

對不起,使用者 one 不能在 test2 上執行

sudo

。##接下來建立乙個使用者組super並把臨時切換one使用者的基本組

[root@test2 ~]# groupadd super

[root@test2 ~]# usermod -g super one #把one加入super組

[root@test2 ~]# id

one

uid=1001(one) gid=1001(one) 組=1001(one),1011

(super)

[root@test2 ~]# visudo

%super all=(root) all

#切換到one使用者

[one@test2 ~]$ newgrp super #臨時更改基本組

[one@test2 ~]$ sudo -l

使用者 one 可以在該主機上執行以下命令:

(root) all

[one@test2 ~]$

可以使用別名來更好的管理sudo使用者和命令

例如:使用命令別名定義一組命令,供有相同屬性的使用者使用。

[root@test2 ~]# visudo

cmnd_alias test=/usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd, !/user/bin/passwd

root #新建名為test的命名別名。

#套用在剛剛的super組上

%super all=(root) test

[root@test2 ~]# su -one

[one@test2 ~]$ sudo -l

使用者 one 可以在該主機上執行以下命令:

(root) /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd, !/user/bin/passwd

root

##可以看到,使用者one所能使用的命令是我們定義的別名test裡的命令。

#如果嫌每5分鐘都需要輸入一次密碼麻煩的話,可以使用一些標籤來過濾掉,常用標籤有:

nopasswd: 無需驗證密碼

passwd: 需要驗證密碼

例如,在super中,使用test命令別名的命令不需要驗證密碼,但是使用visudo命令則需要密碼。

%super all=(root) nopasswd:test ,passwd:/usr/sbin/visudo

[one@test2 ~]$ sudo -l

使用者 one 可以在該主機上執行以下命令:

(root) nopasswd: /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd, !/user/bin/passwd root, (root) passwd: /usr/sbin/visudo

[one@test2 ~]$ sudo

useradd one1 #建立使用者不需要密碼

[one@test2 ~]$ sudo

visudo

[sudo] password for one: #visudo需要密碼

總結:在生產環境中應該儘量減少使用root使用者登入,以免造成不可挽救的後果,在需要管理許可權時,臨時切換或使用sudo來解決,使用sudo時候,可以使用命令別名或使用者別名,能大大提公升效率和方便維護。

ISE工具和它生成的檔案

在ise系列軟體中,cpld fpga設計的實現主要包括轉換 translate 對映 map 布局佈線 place route 和時間引數提取 timing 等幾個方面。1.轉換 在轉換過程中,多個設計檔案和約束檔案將被合併為乙個ngd檔案,並同時輸出bld檔案。其中,ngd檔案包含當前設計的全部...

pdf編輯工具是怎麼編輯pdf檔案的

在開啟pdf檔案檢視的時候,如果發現文件中有錯誤或者需要修改的部分該怎麼做呢?大家都知道pdf檔案不能直接編輯,所以我們需要借助第三方編輯工具來實現pdf檔案的二次編輯。迅捷pdf編輯工具是一款集pdf編輯 pdf閱讀與pdf修改為一體的中文版文字處理軟體,使用本軟體可以對pdf檔案的內容進行新增與...

艱難的編輯工具學習小記

凡斜體,作者至今也不知為何 source insight 4.0 每個版本的按鍵排布和名稱可能不同 勾選editing options show line numbers close 結束 我用的是c語言開發,注意c source file和c c source file 的設定就可以了,在實際應用...