[转]sudoers设置
sudo與sudoers
sudo 是linux下常用的允許普通用戶使用超級用戶權(quán)限的工具,允許系統(tǒng)管理員讓普通用戶執(zhí)行一些或者全部的root命令,如halt,reboot,su等 等。這樣不僅減少了root用戶的登陸 和管理時間,同樣也提高了安全性。Sudo不是對shell的一個代替,它是面向每個命令的。它的特性主要有這樣幾點:
§ sudo能夠限制用戶只在某臺主機上運行某些命令。
§ sudo提供了豐富的日志,詳細地記錄了每個用戶干了什么。它能夠?qū)⑷罩緜鞯街行闹鳈C或者日志服務(wù)器。
§ sudo使用時間戳文件來執(zhí)行類似的“檢票”系統(tǒng)。當(dāng)用戶調(diào)用sudo并且輸入它的密碼時,用戶獲得了一張存活期為5分鐘的票(這個值可以在編譯的時候改變)。
§ sudo的配置文件是sudoers文件,它允許系統(tǒng)管理員集中的管理用戶的使用權(quán)限和使用的主機。它所存放的位置默認是在/etc/sudoers,屬性必須為0411。
sudo的使用
?????? 權(quán)限:在 /etc/sudoers 中有出現(xiàn)的使用者
使用方式:sudo -V
sudo -h
sudo -l
sudo -v
sudo -k
sudo -s
sudo -H
sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s
用法:sudo command
說明:以系統(tǒng)管理者的身份執(zhí)行指令,也就是說,經(jīng)由 sudo 所執(zhí)行的指令就好像是 root 親自執(zhí)行
參數(shù):
-V 顯示版本編號
-h 會顯示版本編號及指令的使用方式說明
-l 顯示出自己(執(zhí)行 sudo 的使用者)的權(quán)限
-v 因為 sudo 在第一次執(zhí)行時或是在 N 分鐘內(nèi)沒有執(zhí)行(N 預(yù)設(shè)為五)會問密碼,這個參數(shù)是重新做一次確認,如果超過 N 分鐘,也會問密碼
-k 將會強迫使用者在下一次執(zhí)行 sudo 時問密碼(不論有沒有超過 N 分鐘)
-b 將要執(zhí)行的指令放在背景執(zhí)行
-p prompt 可以更改問密碼的提示語,其中 %u 會代換為使用者的帳號名稱, %h 會顯示主機名稱
-u username/#uid 不加此參數(shù),代表要以 root 的身份執(zhí)行指令,而加了此參數(shù),可以以 username 的身份執(zhí)行指令(#uid 為該 username 的使用者號碼)
-s 執(zhí)行環(huán)境變數(shù)中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-H 將環(huán)境變數(shù)中的 HOME (家目錄)指定為要變更身份的使用者家目錄(如不加 -u 參數(shù)就是系統(tǒng)管理者 root )
command 要以系統(tǒng)管理者身份(或以 -u 更改為其他人)執(zhí)行的指令
范例:
sudo -l 列出目前的權(quán)限
sudo -V 列出 sudo 的版本資訊
指令名稱:sudoers(在fc5下顯示不能找到此命令,但用man可以查到其用法。)
用來顯示可以使用sudo的用戶
sudoers的配置
sudoers 是sudo的主要配置文件,linux下通常在/etc目錄下,如果是solaris,缺省不裝sudo的,編譯安裝后通常在安裝目錄的etc目錄下,不 過不管sudoers文件在哪兒,sudo都提供了一個編輯該文件的命令:visudo來對該文件進行修改。強烈推薦使用該命令修改 sudoers,因為它會幫你校驗文件配置是否正確,如果不正確,在保存退出時就會提示你哪段配置出錯的。?
言歸正傳,下面介紹如何配置sudoers?
首先寫sudoers的缺省配置:?
#############################################################?
# sudoers file.?
#?
# This file MUST be edited with the 'visudo' command as root.?
#?
# See the sudoers man page for the details on how to write a sudoers file.?
#?
# Host alias specification?
# User alias specification?
# Cmnd alias specification?
# Defaults specification?
# User privilege specification?
root??? ALL=(ALL) ALL?
# Uncomment to allow people in group wheel to run all commands?
# %wheel??????? ALL=(ALL)?????? ALL?
# Same thing without a password?
# %wheel??????? ALL=(ALL)?????? NOPASSWD: ALL?
# Samples?
# %users? ALL=/sbin/mount /cdrom,/sbin/umount /cdrom?
# %users? localhost=/sbin/shutdown -h now?
##################################################################?
1. 最簡單的配置,讓普通用戶support具有root的所有權(quán)限?
執(zhí)行visudo之后,可以看見缺省只有一條配置:?
root??? ALL=(ALL) ALL?
那么你就在下邊再加一條配置:?
support ALL=(ALL) ALL?
這樣,普通用戶support就能夠執(zhí)行root權(quán)限的所有命令?
以support用戶登錄之后,執(zhí)行:?
sudo su -?
然后輸入support用戶自己的密碼,就可以切換成root用戶了?
2. 讓普通用戶support只能在某幾臺服務(wù)器上,執(zhí)行root能執(zhí)行的某些命令?
首先需要配置一些Alias,這樣在下面配置權(quán)限時,會方便一些,不用寫大段大段的配置。Alias主要分成4種?
Host_Alias?
Cmnd_Alias?
User_Alias?
Runas_Alias?
1) 配置Host_Alias:就是主機的列表?
Host_Alias????? HOST_FLAG = hostname1, hostname2, hostname3?
2) 配置Cmnd_Alias:就是允許執(zhí)行的命令的列表,命令前加上!表示不能執(zhí)行此命令.
命令一定要使用絕對路徑,避免其他目錄的同名命令被執(zhí)行,造成安全隱患 ,因此使用的時候也是使用絕對路徑!?
Cmnd_Alias????? COMMAND_FLAG = command1, command2, command3 ,!command4
3) 配置User_Alias:就是具有sudo權(quán)限的用戶的列表?
User_Alias USER_FLAG = user1, user2, user3?
4) 配置Runas_Alias:就是用戶以什么身份執(zhí)行(例如root,或者oracle)的列表?
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3?
5) 配置權(quán)限?
配置權(quán)限的格式如下:?
USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG?
如果不需要密碼驗證的話,則按照這樣的格式來配置?
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG?
配置示例:?
############################################################################?
# sudoers file.?
#?
# This file MUST be edited with the 'visudo' command as root.?
#?
# See the sudoers man page for the details on how to write a sudoers file.?
#?
# Host alias specification?
Host_Alias????? EPG = 192.168.1.1, 192.168.1.2?
# User alias specification?
# Cmnd alias specification?
Cmnd_Alias????? SQUID = /opt/vtbin/squid_refresh, !/sbin/service, /bin/rm
Cmnd_Alias????? ADMPW = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd, !/usr/bin/passwd root?
# Defaults specification?
# User privilege specification?
root??? ALL=(ALL) ALL?
support EPG=(ALL) NOPASSWD: SQUID?
support EPG=(ALL) NOPASSWD: ADMPW
# Uncomment to allow people in group wheel to run all commands?
# %wheel??????? ALL=(ALL)?????? ALL?
# Same thing without a password?
# %wheel??????? ALL=(ALL)?????? NOPASSWD: ALL?
# Samples?
# %users? ALL=/sbin/mount /cdrom,/sbin/umount /cdrom?
# %users? localhost=/sbin/shutdown -h now?
###############################################################
總結(jié)
以上是生活随笔為你收集整理的[转]sudoers设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python Interview Que
- 下一篇: iOS开发缓存机制之—内存缓存机制