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 的設定就可以了,在實際應用...