sudo高級(jí)配置

sudo高級(jí)配置

從編寫 sudo 配置文件/etc/sudoers開始葵孤;

sudo的配置文件是/etc/sudoers 尤仍,我們可以用他的專用編輯工具visodu 宰啦,此工具的好處是在添加規(guī)則不太準(zhǔn)確時(shí)赡模,保存退出時(shí)會(huì)提示給我們錯(cuò)誤信息;配置好后教硫,可以用切換到您授權(quán)的用戶下瞬矩,通過sudo -l 來查看哪些命令是可以執(zhí)行或禁止的景用;

/etc/sudoers 文件中每行算一個(gè)規(guī)則伞插,前面帶有#號(hào)可以當(dāng)作是說明的內(nèi)容剿干,并不執(zhí)行置尔;如果規(guī)則很長榜轿,一行列不下時(shí)谬盐,可以用\號(hào)來續(xù)行飞傀,這樣看來一個(gè)規(guī)則也可以擁有多個(gè)行;

/etc/sudoers 的規(guī)則可分為兩類弃鸦;一類是別名定義唬格,另一類是授權(quán)規(guī)則购岗;別名定義并不是必須的喊积,但授權(quán)規(guī)則是必須的注服;

/etc/sudoers 配置文件中別名規(guī)則

別名規(guī)則定義格式如下:

Alias_Type NAME = item1, item2, ...

或
Alias_Type NAME = item1, item2, item3 : NAME = item4, item5

別名類型(Alias_Type):別名類型包括如下四種

Host_Alias 定義主機(jī)別名溶弟;
User_Alias 用戶別名辜御,別名成員可以是用戶擒权,用戶組(前面要加%號(hào))
Runas_Alias 用來定義runas別名阁谆,這個(gè)別名指定的是“目的用戶”场绿,即sudo 允許切換至的用戶;
Cmnd_Alias 定義命令別名咒林;

NAME 就是別名了垫竞,NMAE的命名是包含大寫字母欢瞪、下劃線以及數(shù)字遣鼓,但必須以一個(gè)大寫字母開頭譬正,比如SYNADM檬姥、SYN_ADM或SYNAD0是合法的健民,sYNAMDA或1SYNAD是不合法的秉犹;

item 按中文翻譯是項(xiàng)目崇堵,在這里我們可以譯成成員鸳劳,如果一個(gè)別名下有多個(gè)成員赏廓,成員與成員之間幔摸,通過半角,號(hào)分隔;成員在必須是有效并事實(shí)存在的既忆。什么是有效的 呢驱负?比如主機(jī)名嗦玖,可以通過w查看用戶的主機(jī)名(或ip地址),如果您只是本地機(jī)操作电媳,只通過hostname 命令就能查看踏揣;用戶名當(dāng)然是在系統(tǒng)中存在 的庆亡,在/etc/paswd中必須存在匾乓;對(duì)于定義命令別名又谋,成員也必須在系統(tǒng)中事實(shí)存在的文件名(需要絕對(duì)路徑)拼缝;

item成員受別名類 型 Host_Alias、User_Alias彰亥、Runas_Alias咧七、Cmnd_Alias 制約,定義什么類型的別名任斋,就要有什么類型的成員相 配继阻。我們用Host_Alias定義主機(jī)別名時(shí),成員必須是與主機(jī)相關(guān)相關(guān)聯(lián)废酷,比如是主機(jī)名(包括遠(yuǎn)程登錄的主機(jī)名)瘟檩、ip地址(單個(gè)或整段)、掩碼等澈蟆; 當(dāng)用戶登錄時(shí)墨辛,可以通過w命令來查看登錄用戶主機(jī)信息;用User_Alias和 Runas_Alias定義時(shí)趴俘,必須要用系統(tǒng)用戶做為成員睹簇;用 Cmnd_Alias 定義執(zhí)行命令的別名時(shí),必須是系統(tǒng)存在的文件寥闪,文件名可以用通配符表示太惠,配置Cmnd_Alias時(shí)命令需要絕對(duì)路徑;

其中 Runas_Alias 和User_Alias 有點(diǎn)相似疲憋,但與User_Alias 絕對(duì)不是同一個(gè)概念凿渊,Runas_Alias 定義的是某個(gè)系統(tǒng)用戶可以sudo 切換身份到Runas_Alias 下的成員;我們在授權(quán)規(guī)則中以實(shí)例進(jìn)行解說柜某;

別名規(guī)則是每行算一個(gè)規(guī)則嗽元,如果一個(gè)別名規(guī)則一行容不下時(shí),可以通過\來續(xù)行喂击;同一類型別名的定義剂癌,一次也可以定義幾個(gè)別名,他們中間用:號(hào)分隔翰绊,

Host_Alias HT01=localhost,st05,st04,10,0,0,4,255.255.255.0,192.168.1.0/24 注:定義主機(jī)別名HT01佩谷,通過=號(hào)列出成員
Host_Alias HT02=st09,st10 注:主機(jī)別名HT02旁壮,有兩個(gè)成員;
Host_Alias HT01=localhost,st05,st04,10,0,0,4,255.255.255.0,192.168.1.0/24:HT02=st09,st10 注:上面的兩條對(duì)主機(jī)的定義谐檀,可以通過一條來實(shí)現(xiàn)抡谐,別名之間用:號(hào)分割;

注: 我們通過Host_Alias 定義主機(jī)別名時(shí)桐猬,項(xiàng)目可以是主機(jī)名麦撵、可以是單個(gè)ip(整段ip地址也可以),也可以是網(wǎng)絡(luò)掩碼溃肪;如果是主機(jī)名免胃,必須是多臺(tái) 機(jī)器的網(wǎng)絡(luò)中,而且這些機(jī)器得能通過主機(jī)名相互通信訪問才有效惫撰。那什么才算是通過主機(jī)名相互通信或訪問呢羔沙?比如 ping 主機(jī)名,或通過遠(yuǎn)程訪問主機(jī)名 來訪問厨钻。在我們局域網(wǎng)中扼雏,如果讓計(jì)算機(jī)通過主機(jī)名訪問通信,必須設(shè)置/etc/hosts夯膀, /etc/resolv.conf 诗充,還要有DNS做解析, 否則相互之間無法通過主機(jī)名訪問棍郎;在設(shè)置主機(jī)別名時(shí)其障,如果項(xiàng)目是中某個(gè)項(xiàng)目是主機(jī)名的話,可以通過hostname 命令來查看本地主機(jī)的主機(jī)名涂佃,通過w 命令查來看登錄主機(jī)是來源励翼,通過來源來確認(rèn)其它客戶機(jī)的主機(jī)名或ip地址;對(duì)于主機(jī)別名的定義辜荠,看上去有點(diǎn)復(fù)雜汽抚,其實(shí)是很簡單。

如果您不明白Host_Alias 是怎么回事伯病,也可以不用設(shè)置主機(jī)別名造烁,在定義授權(quán)規(guī)則時(shí)通過ALL來匹配所有可能出現(xiàn)的主機(jī)情況。如果您把主機(jī)方面的知識(shí)弄的更明白午笛,的確需要多多學(xué)習(xí)惭蟋。

User_Alias SYSAD=beinan,linuxsir,bnnnb,lanhaitun 注:定義用戶別名,下有四個(gè)成員药磺;要在系統(tǒng)中確實(shí)在存在的告组;
User_Alias NETAD=beinan,bnnb 注:定義用戶別名NETAD ,我想讓這個(gè)別名下的用戶來管理網(wǎng)絡(luò)癌佩,所以取了NETAD的別名木缝;
User_Alias WEBMASTER=linuxsir 注:定義用戶別名WEBMASTER便锨,我想用這個(gè)別名下的用戶來管理網(wǎng)站;
User_Alias SYSAD=beinan,linuxsir,bnnnb,lanhaitun:NETAD=beinan,bnnb:WEBMASTER=linuxsir 注:上面三行的別名定義我碟,可以通過這一行來實(shí)現(xiàn)放案,請看前面的說明,是不是符合矫俺?

Cmnd_Alias USERMAG=/usr/sbin/adduser,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,/bin/chown,/bin/chmod
 注意:命令別名下的成員必須是文件或目錄的絕對(duì)路徑吱殉;
Cmnd_Alias DISKMAG=/sbin/fdisk,/sbin/parted
Cmnd_Alias NETMAG=/sbin/ifconfig,/etc/init.d/network
Cmnd_Alias KILL = /usr/bin/kill
Cmnd_Alias PWMAG = /usr/sbin/reboot,/usr/sbin/halt
Cmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \
                                /usr/local/bin/tcsh, /usr/bin/rsh, \
                                /usr/local/bin/zsh
注:這行定義命令別名有點(diǎn)長,可以通過 \ 號(hào)斷行恳守;
Cmnd_Alias SU = /usr/bin/su,/bin,/sbin,/usr/sbin,/usr/bin

在上面的例子中考婴,有KILL和PWMAG的命令別名定義贩虾,我們可以合并為一行來寫催烘,也就是等價(jià)行;

Cmnd_Alias KILL = /usr/bin/kill:PWMAG = /usr/sbin/reboot,/usr/sbin/halt 注:這一行就代表了KILL和PWMAG命令別名缎罢,把KILL和PWMAG的別名定義合并在一行寫也是可以的伊群;

Runas_Alias OP = root, operator
Runas_Alias DBADM=mysql:OP = root, operator 注:這行是上面兩行的等價(jià)行;至于怎么理解Runas_Alias 策精,我們必須得通過授權(quán)規(guī)則的實(shí)例來理解舰始;

/etc/sudoers中的授權(quán)規(guī)則:

授權(quán)規(guī)則是分配權(quán)限的執(zhí)行規(guī)則,我們前面所講到的定義別名主要是為了更方便的授權(quán)引用別名咽袜;如果系統(tǒng)中只有幾個(gè)用戶丸卷,其實(shí)下放權(quán)限比較有限的話,可以不用定義別名询刹,而是針對(duì)系統(tǒng)用戶直接直接授權(quán)谜嫉,所以在授權(quán)規(guī)則中別名并不是必須的;

授權(quán)規(guī)則并不是無章可尋凹联,我們只說基礎(chǔ)一點(diǎn)的沐兰,比較簡單的寫法,如果您想詳細(xì)了解授權(quán)規(guī)則寫法的蔽挠,請參看man sudoers

授權(quán)用戶 主機(jī)=命令動(dòng)作

這三個(gè)要素缺一不可住闯,但在動(dòng)作之前也可以指定切換到特定用戶下,在這里指定切換的用戶要用( screen.width/2)this.style.width=screen.width/2;" border="0"<號(hào)括起來澳淑,如果不需要密碼直接運(yùn)行命令的比原,應(yīng)該加NOPASSWD:參數(shù),但這些可以省略杠巡;舉例說明量窘;

實(shí)例一:

beinan ALL=/bin/chown,/bin/chmod

如 果我們在/etc/sudoers 中添加這一行,表示beinan 可以在任何可能出現(xiàn)的主機(jī)名的系統(tǒng)中忽孽,可以切換到root用戶下執(zhí)行 /bin/chown 和/bin/chmod 命令绑改,通過sudo -l 來查看beinan 在這臺(tái)主機(jī)上允許和禁止運(yùn)行的命令谢床;

值得注意的是,在這里省略了指定切換到哪個(gè)用戶下執(zhí)行/bin/shown 和/bin/chmod命令厘线;在省略的情況下默認(rèn)為是切換到root用戶下執(zhí)行识腿;同時(shí)也省略了是不是需要beinan用戶輸入驗(yàn)證密碼,如果省略了造壮,默認(rèn)為是需要驗(yàn)證密碼渡讼。

為了更詳細(xì)的說明這些,我們可以構(gòu)造一個(gè)更復(fù)雜一點(diǎn)的公式耳璧;

授權(quán)用戶 主機(jī)=[(切換到哪些用戶或用戶組)] [是否需要密碼驗(yàn)證] 命令1,[(切換到哪些用戶或用戶組)] [是否需要密碼驗(yàn)證] [命令2],[(切換到哪些用戶或用戶組)] [是否需要密碼驗(yàn)證] [命令3]......

注解:

凡是[ ]中的內(nèi)容成箫,是可以省略;命令與命令之間用,號(hào)分隔旨枯;通過本文的例子蹬昌,可以對(duì)照著看哪些是省略了,哪些地方需要有空格攀隔;
在[(切換到哪些用戶或用戶組)] 皂贩,如果省略,則默認(rèn)為root用戶昆汹;如果是ALL 明刷,則代表能切換到所有用戶;注意要切換到的目的用戶必須用()號(hào)括起來满粗,比如(ALL)辈末、(beinan)

實(shí)例二:

beinan ALL=(root) /bin/chown, /bin/chmod

如 果我們把第一個(gè)實(shí)例中的那行去掉,換成這行映皆;表示的是beinan 可以在任何可能出現(xiàn)的主機(jī)名的主機(jī)中挤聘,可以切換到root下執(zhí)行 /bin/chown ,可以切換到任何用戶招執(zhí)行/bin/chmod 命令劫扒,通過sudo -l 來查看beinan 在這臺(tái)主機(jī)上允許和禁止運(yùn)行 的命令檬洞;

實(shí)例三:

beinan ALL=(root) NOPASSWD: /bin/chown,/bin/chmod

如 果換成這個(gè)例子呢?表示的是beinan 可以在任何可能出現(xiàn)的主機(jī)名的主機(jī)中沟饥,可以切換到root下執(zhí)行 /bin/chown 添怔,不需要輸入 beinan用戶的密碼;并且可以切換到任何用戶下執(zhí)行/bin/chmod 命令贤旷,但執(zhí)行chmod時(shí)需要beinan輸入自己的密碼广料;通過sudo -l 來查看beinan 在這臺(tái)主機(jī)上允許和禁止運(yùn)行的命令;

關(guān)于一個(gè)命令動(dòng)作是不是需要密碼幼驶,我們可以發(fā)現(xiàn)在系統(tǒng)在默認(rèn)的情況下是需要用戶密碼的艾杏,除非特加指出不需要用戶需要輸入自己密碼,所以要在執(zhí)行動(dòng)作之前加入NOPASSWD: 參數(shù)盅藻;

有可能有的弟兄對(duì)系統(tǒng)管理的命令不太懂购桑,不知道其用法畅铭,這樣就影響了他對(duì) sudoers定義的理解,下面我們再舉一個(gè)最簡單勃蜘,最有說服務(wù)力的例子硕噩;

實(shí)例四:

比如我們想用beinan普通用戶通過more /etc/shadow文件的內(nèi)容時(shí),可能會(huì)出現(xiàn)下面的情況缭贡;

[beinan@localhost ~]$ more /etc/shadow
/etc/shadow: 權(quán)限不夠

這時(shí)我們可以用sudo more /etc/shadow 來讀取文件的內(nèi)容炉擅;就就需要在/etc/soduers中給beinan授權(quán);

于是我們就可以先su 到root用戶下通過visudo 來改/etc/sudoers 阳惹;(比如我們是以beinan用戶登錄系統(tǒng)的)
[beinan@localhost ~]$ su
Password: 注:在這里輸入root密碼
下面運(yùn)行visodu谍失;
[root@localhost beinan]# visudo 注:運(yùn)行visudo 來改 /etc/sudoers

加入如下一行,退出保存莹汤;退出保存快鱼,在這里要會(huì)用vi,visudo也是用的vi編輯器体啰;至于vi的用法不多說了攒巍;

beinan ALL=/bin/more 表示beinan可以切換到root下執(zhí)行more 來查看文件;

退回到beinan用戶下荒勇,用exit命令;

[root@localhost beinan]# exit
exit
[beinan@localhost ~]$

查看beinan的通過sudo能執(zhí)行哪些命令闻坚?

[beinan@localhost ~]$ sudo -l
Password: 注:在這里輸入beinan用戶的密碼
User beinan may run the following commands on this host:  注:在這里清晰的說明在本臺(tái)主機(jī)上沽翔,beinan用戶可以以root權(quán)限運(yùn)行more ;在root權(quán)限下的more 窿凤,可以查看任何文本文件的內(nèi)容 的仅偎;
    (root) /bin/more

最后,我們看看是不是beinan用戶有能力看到/etc/shadow文件的內(nèi)容雳殊;

[beinan@localhost ~]$ sudo more /etc/shadow

beinan 不但能看到 /etc/shadow文件的內(nèi)容橘沥,還能看到只有root權(quán)限下才能看到的其它文件的內(nèi)容,比如夯秃;

[beinan@localhost ~]$ sudo more /etc/gshadow

對(duì)于beinan用戶查看和讀取所有系統(tǒng)文件中座咆,我只想把/etc/shadow 的內(nèi)容可以讓他查看;可以加入下面的一行仓洼;

beinan ALL=/bin/more /etc/shadow

題外話:有的弟兄會(huì)說介陶,我通過su 切換到root用戶就能看到所有想看的內(nèi)容了,哈哈色建,對(duì)啊哺呜。但咱們現(xiàn)在不是在講述sudo的用法嗎?如果主機(jī)上有多個(gè)用戶并且不知道root用戶的密碼箕戳,但又想查看某些他們看不到的文件某残,這時(shí)就需要管理員授權(quán)了国撵;這就是sudo的好處;

實(shí)例五:練習(xí)用戶組在/etc/sudoers中寫法玻墅;

如果用戶組出現(xiàn)在/etc/sudoers 中卸留,前面要加%號(hào),比如%beinan 椭豫,中間不能有空格耻瑟;

%beinan ALL=/usr/sbin/*,/sbin/*

如果我們在 /etc/sudoers 中加上如上一行,表示beinan用戶組下的所有成員赏酥,在所有可能的出現(xiàn)的主機(jī)名下喳整,都能切換到root用戶下運(yùn)行 /usr/sbin和/sbin目錄下的所有命令;

實(shí)例六:練習(xí)取消某類程序的執(zhí)行裸扶;

取消程序某類程序的執(zhí)行框都,要在命令動(dòng)作前面加上!號(hào); 在本例中也出現(xiàn)了通配符的*的用法呵晨;

beinan ALL=/usr/sbin/*,/sbin/*,!/usr/sbin/fdisk 注:把這行規(guī)則加入到/etc/sudoers中魏保;但您得有beinan這個(gè)用戶組,并且beinan也是這個(gè)組中的才行摸屠;

本規(guī)則表示beinan用戶在所有可能存在的主機(jī)名的主機(jī)上運(yùn)行/usr/sbin和/sbin下所有的程序谓罗,但fdisk 程序除外;

[beinan@localhost ~]$ sudo -l
Password: 注:在這里輸入beinan用戶的密碼季二;
User beinan may run the following commands on this host:
(root) /usr/sbin/*
(root) /sbin/*
(root) !/sbin/fdisk

[beinan@localhost ~]$ sudo /sbin/fdisk -l
Sorry, user beinan is not allowed to execute '/sbin/fdisk -l' as root on localhost.

注:不能切換到root用戶下運(yùn)行fdisk 程序檩咱;

實(shí)例七:別名的運(yùn)用的實(shí)踐;

假 如我們就一臺(tái)主機(jī)localhost胯舷,能通過hostname 來查看刻蚯,我們在這里就不定義主機(jī)別名了,用ALL來匹配所有可能出現(xiàn)的主機(jī)名桑嘶;并且有 beinan炊汹、linuxsir、lanhaitun 用戶逃顶;主要是通過小例子能更好理解讨便;sudo雖然簡單好用,但能把說的明白的確是件難事口蝠;最好的辦 法是多看例子和man soduers 器钟;

User_Alias SYSADER=beinan,linuxsir,%beinan
User_Alias DISKADER=lanhaitun
Runas_Alias OP=root
Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk 注:定義命令別名DSKCMD,下有成員parted和fdisk 妙蔗;
SYSADER ALL= SYDCMD,DSKCMD
DISKADER ALL=(OP) DSKCMD

注解:

第一行:定義用戶別名SYSADER 下有成員 beinan傲霸、linuxsir和beinan用戶組下的成員,用戶組前面必須加%號(hào);
第二行:定義用戶別名 DISKADER 昙啄,成員有l(wèi)anhaitun
第三行:定義Runas用戶穆役,也就是目標(biāo)用戶的別名為OP,下有成員root
第四行:定義SYSCMD命令別名梳凛,成員之間用,號(hào)分隔耿币,最后的!/usr/bin/passwd root 表示不能通過passwd 來更改root密碼;
第五行:定義命令別名DSKCMD韧拒,下有成員parted和fdisk 淹接;
第 六行: 表示授權(quán)SYSADER下的所有成員,在所有可能存在的主機(jī)名的主機(jī)下運(yùn)行或禁止 SYDCMD和DSKCMD下定義的命令叛溢。更為明確遙說塑悼, beinan、linuxsir和beinan用戶組下的成員能以root身份運(yùn)行 chown 楷掉、chmod 厢蒜、adduser、passwd烹植,但不能 更改root的密碼斑鸦;也可以以root身份運(yùn)行 parted和fdisk ,本條規(guī)則的等價(jià)規(guī)則是;

beinan,linuxsir,%beinan ALL=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk

第七行:表示授權(quán)DISKADER 下的所有成員,能以O(shè)P的身份省核,來運(yùn)行 DSKCMD ,不需要密碼攒庵;更為明確的說 lanhaitun 能以root身份運(yùn)行 parted和fdisk 命令;其等價(jià)規(guī)則是:

lanhaitun ALL=(root) /sbin/parted,/sbin/fdisk

可能有的弟兄會(huì)說我想不輸入用戶的密碼就能切換到root并運(yùn)行SYDCMD和DSKCMD 下的命令败晴,那應(yīng)該把把NOPASSWD:加在哪里為好?理解下面的例子吧栽渴,能明白的尖坤;

SYSADER ALL= NOPASSWD: SYDCMD, NOPASSWD: DSKCMD

/etc/sudoers中其它的未盡事項(xiàng);

在授權(quán)規(guī)則中闲擦,還有 NOEXEC:和EXEC的用法慢味,自己查man sudoers 了解;還有關(guān)于在規(guī)則中通配符的用法墅冷,也是需要了解的纯路。這些內(nèi)容不多說了,畢竟只是一個(gè)入門性的文檔寞忿。soduers配置文件要多簡單就有多簡單驰唬,要多難就有多難,就看自己的應(yīng)用了。

sudo的用法叫编;

我們在前面講的/etc/sudoers 的規(guī)則寫法辖佣,最終的目的是讓用戶通過sudo讀取配置文件中的規(guī)則來實(shí)現(xiàn)匹配和授權(quán),以便替換身份來進(jìn)行命令操作搓逾,進(jìn)而完成在其權(quán)限下不可完成的任務(wù)卷谈;

我們只說最簡單的用法;更為詳細(xì)的請參考man sudo

sudo [參數(shù)選項(xiàng)] 命令
-l 列出用戶在主機(jī)上可用的和被禁止的命令霞篡;一般配置好/etc/sudoers后世蔗,要用這個(gè)命令來查看和測試是不是配置正確的;
-v 驗(yàn)證用戶的時(shí)間戳朗兵;如果用戶運(yùn)行sudo 后污淋,輸入用戶的密碼后,在短時(shí)間內(nèi)可以不用輸入口令來直接進(jìn)行sudo 操作矛市;用-v 可以跟蹤最新的時(shí)間戳芙沥;
-u 指定以以某個(gè)用戶執(zhí)行特定操作;
-k 刪除時(shí)間戳浊吏,下一個(gè)sudo 命令要求用求提供密碼而昨;

舉列:

首先我們通過visudo 來改/etc/sudoers 文件,加入下面一行找田;

beinan,linuxsir,%beinan ALL=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk

然后列出beinan用戶在主機(jī)上通過sudo 可以切換用戶所能用的命令或被禁止用的命令歌憨;

[beinan@localhost ~]$ sudo -l 注:列出用戶在主機(jī)上能通過切換用戶的可用的或被禁止的命令;
Password: 注:在這里輸入您的用戶密碼墩衙;
User beinan may run the following commands on this host:
    (root) /bin/chown 注:可以切換到root下用chown命令务嫡;
    (root) /bin/chmod 注:可以切換到root下用chmod命令;
    (root) /usr/sbin/adduser 注:可以切換到root下用adduser命令漆改;
    (root) /usr/bin/passwd [A-Za-z]* 注:可以切換到root下用 passwd 命令心铃;
    (root) !/usr/bin/passwd root 注:可以切換到root下,但不能執(zhí)行passwd root 來更改root密碼挫剑;
    (root) /sbin/parted 注:可以切換到 root下執(zhí)行parted 去扣;
    (root) /sbin/fdisk 注:可以切換到root下執(zhí)行 fdisk ;

通過上面的sudo -l 列出可用命令后樊破,我想通過chown 命令來改變/opt目錄的屬主為beinan 愉棱;
[beinan@localhost ~]$ ls -ld /opt 注:查看/opt的屬主;
drwxr-xr-x 26 root root 4096 10月 27 10:09 /opt 注:得到的答案是歸屬root用戶和root用戶組哲戚;
[beinan@localhost ~]$ sudo chown beinan:beinan /opt 注:通過chown 來改變屬主為beinan用戶和beinan用戶組奔滑;
[beinan@localhost ~]$ ls -ld /opt 注:查看/opt屬主是不是已經(jīng)改變了;
drwxr-xr-x 26 beinan beinan 4096 10月 27 10:09 /opt

我們通過上面的例子發(fā)現(xiàn)beinan用戶能切換到root后執(zhí)行改變用戶口令的passwd命令顺少;但上面的sudo -l 輸出又明文寫著不能更改root的口令朋其;也就是說除了root的口令王浴,beinan用戶不能更改外,其它用戶的口令都能更改令宿。下面我們來測試叼耙;

對(duì)于一個(gè)普通用戶來說,除了更改自身的口令以外粒没,他不能更改其它用戶的口令筛婉。但如果換到root身份執(zhí)行命令,則可以更改其它用戶的口令癞松;

比如在系統(tǒng)中有l(wèi)inuxsir這個(gè)用戶, 我們想嘗試更改這個(gè)用戶的口令爽撒,

[beinan@localhost ~]$ passwd linuxsir 注:不通過sudo 直接運(yùn)行passwd 來更改linuxsir用戶的口令;
passwd: Only root can specify a user name. 注:失敗响蓉,提示僅能通過 root來更改硕勿;
[beinan@localhost ~]$ sudo passwd linuxsir 注:我們通過/etc/sudoers 的定義,讓beinan切換到root下執(zhí)行 passwd 命令來改變linuxsir的口令枫甲;
Changing password for user linuxsir.
New UNIX password: 注:輸入新口令源武;
Retype new UNIX password: 注:再輸入一次;
passwd: all authentication tokens updated successfully. 注:改變成功想幻;

附:

visudo 必須在root環(huán)境下運(yùn)行粱栖。 
在用命令"su"的時(shí)候沒有把root的環(huán)境變量傳過去,還是當(dāng)前用乎的環(huán)境變量脏毯,應(yīng)該施用"su -"命令將環(huán)境變量也一起帶過去闹究,就象和root登錄一樣,這樣才能使用visudo命令食店。 
環(huán)境變量的問題吧渣淤,你可以運(yùn)行幾個(gè)命令比較一下: 
#在你的用戶下 
$ env >; my.env 
$ su 
#env >; my_root.env 
# su  -  root 
#env >; root.env 
your_user_name ALL=(ALL) #加入sudo組 
your_user_name ALL=(ALL)NOPASSWD: ALL #加入sudo組且不用輸入密碼
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吉嫩,隨后出現(xiàn)的幾起案子价认,更是在濱河造成了極大的恐慌,老刑警劉巖自娩,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刻伊,死亡現(xiàn)場離奇詭異,居然都是意外死亡椒功,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門智什,熙熙樓的掌柜王于貴愁眉苦臉地迎上來动漾,“玉大人,你說我怎么就攤上這事荠锭『得校” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長删豺。 經(jīng)常有香客問我共虑,道長,這世上最難降的妖魔是什么呀页? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任妈拌,我火速辦了婚禮,結(jié)果婚禮上蓬蝶,老公的妹妹穿的比我還像新娘尘分。我一直安慰自己,他們只是感情好丸氛,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布培愁。 她就那樣靜靜地躺著,像睡著了一般缓窜。 火紅的嫁衣襯著肌膚如雪定续。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天禾锤,我揣著相機(jī)與錄音私股,去河邊找鬼。 笑死时肿,一個(gè)胖子當(dāng)著我的面吹牛庇茫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播螃成,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼旦签,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了寸宏?” 一聲冷哼從身側(cè)響起宁炫,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎氮凝,沒想到半個(gè)月后羔巢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡罩阵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年竿秆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稿壁。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡幽钢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出傅是,到底是詐尸還是另有隱情匪燕,我是刑警寧澤蕾羊,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站帽驯,受9級(jí)特大地震影響龟再,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尼变,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一利凑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧享甸,春花似錦截碴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蚯嫌,卻和暖如春哲虾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背择示。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國打工束凑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栅盲。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓汪诉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谈秫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扒寄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容