linux命令學(xué)習(xí)系列-用戶切換su,sudo

這一節(jié)片任,我們來(lái)說(shuō)一下用戶切換相關(guān)命令

為什么要進(jìn)行用戶切換偏友?

在操作過(guò)程中需要使用特定的用戶進(jìn)行特定的操作,多數(shù)情況下是因?yàn)闄?quán)限对供,比如要修改一個(gè)文件位他,只有root用戶有權(quán)限修改,那么就要切換到root用戶下進(jìn)行操作产场。切換用戶一般有兩個(gè)命令:

1. su命令

su命令不加參數(shù)鹅髓,默認(rèn)切到root用戶,需要輸入root用戶密碼進(jìn)行驗(yàn)證京景,

image.png

image.png

exit命令可退出root用戶窿冯。

su命令可以加一個(gè)“-”再加上用戶名,此時(shí)确徙,不但身份變化了醒串,同時(shí)也擁有了此用戶的“用戶環(huán)境”执桌,比如用戶家目錄以及此用戶的其它個(gè)性化設(shè)置。

image.png

普通用戶切換其它用戶需要知道其它用戶的密碼厦凤,root用戶使用su命令切換其它用戶鼻吮,不需要知道用戶密碼


image.png
  1. sudo命令

Linux是多用戶多任務(wù)的操作系統(tǒng), 共享該系統(tǒng)的用戶往往不只一個(gè)。
出于安全性考慮, 有必要通過(guò)useradd創(chuàng)建一些非root用戶, 只讓它們擁有不完全的權(quán)限; 如有必要较鼓,再來(lái)提升權(quán)限執(zhí)行椎木。

sudo就是來(lái)解決這個(gè)需求的: 這些非root用戶不需要知道root的密碼,就可以提權(quán)到root博烂,執(zhí)行一些root才能執(zhí)行的命令香椎。

執(zhí)行sudo -u <用戶名> <命令>, 將允許當(dāng)前用戶,提權(quán)到<用戶名>的身份禽篱,再執(zhí)行后面的<命令>, 即使<命令>原本需要root權(quán)限畜伐。
提權(quán)到<用戶名>身份時(shí),是以<用戶名>的身份來(lái)執(zhí)行命令的躺率,因此創(chuàng)建的文件默認(rèn)屬于<用戶名>用戶玛界。

因此,當(dāng)userB執(zhí)行如下命令時(shí):

sudo -u userA touch /tmp/belong-to-who.tmp

創(chuàng)建的/tmp/belong-to-who.tmp 文件屬于用戶userA悼吱。

如果不帶-u, 則默認(rèn)使用root用戶慎框,而大多數(shù)時(shí)候sudo都是要提權(quán)到root的,所以-u <用戶名>可以省略為:

sudo <命令>

需要注意的是: 執(zhí)行sudo時(shí)輸入的密碼是當(dāng)前用戶的密碼, 并非<用戶名>的密碼后添。
sudo -u <用戶名>和su - <用戶名>相比:
前者需要輸入當(dāng)前用戶的密碼笨枯,提權(quán)到<用戶名>身份執(zhí)行命令后返回當(dāng)前用戶;
后者則是輸入目標(biāo)用戶的密碼,切換到目標(biāo)用戶遇西。

賦予用戶sudo操作的權(quán)限

通過(guò)useradd添加的用戶馅精,并不具備sudo權(quán)限。在ubuntu/centos等系統(tǒng)下, 需要將用戶加入admin組或者wheel組或者sudo組粱檀。

以root用戶身份執(zhí)行如下命令, 將用戶加入wheel/admin/sudo組:

usermod -a -G wheel <用戶名>

如果提示wheel組不存在, 則還需要先創(chuàng)建該組:

groupadd wheel

用公式講解/etc/sudoers的內(nèi)容

sudo的權(quán)限控制可以在/etc/sudoers文件中查看到洲敢。

如果想要控制某個(gè)用戶(或某個(gè)組用戶)只能執(zhí)行root權(quán)限中的一部分命令, 或者允許某些用戶使用sudo時(shí)不需要輸入密碼,就需要對(duì)該文件有所了解。

一般來(lái)說(shuō)茄蚯,通過(guò)cat /etc/sudoers指令來(lái)查看該文件, 會(huì)看到如下幾行代碼:

root   ALL=(ALL:ALL) ALL
%wheel ALL=(ALL) ALL
%sudo  ALL=(ALL:ALL) ALL

對(duì)/etc/sudoers文件進(jìn)行編輯的代碼公式可以概括為:

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

凡是[ ]中的內(nèi)容, 都能省略; 命令和命令之間用,號(hào)分隔;

為了方便說(shuō)明, 將公式的各個(gè)部分稱呼為字段1 - 字段5:

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

字段3沦疾、字段4,是可以省略的第队。

在上面的默認(rèn)例子中, "字段1"不以%號(hào)開(kāi)頭的表示"將要授權(quán)的用戶", 比如例子中的root;
以%號(hào)開(kāi)頭的表示"將要授權(quán)的組", 比如例子中的%wheel組 和 %sudo組刨秆。

"字段2"表示允許登錄的主機(jī), ALL表示所有; 如果該字段不為ALL,表示授權(quán)用戶只能在某些機(jī)器上登錄本服務(wù)器來(lái)執(zhí)行sudo命令. 比如:

jack mycomputer=/usr/sbin/reboot,/usr/sbin/shutdown

表示: 普通用戶jack在主機(jī)(或主機(jī)組)mycomputer上, 可以通過(guò)sudo執(zhí)行reboot和shutdown兩個(gè)命令凳谦。"字段3"和"字段4"省略。

"字段3"如果省略, 相當(dāng)于(root:root)衡未,表示可以通過(guò)sudo提權(quán)到root; 如果為(ALL)或者(ALL:ALL), 表示能夠提權(quán)到(任意用戶:任意用戶組)尸执。

請(qǐng)注意家凯,"字段3"如果沒(méi)省略,必須使用( )雙括號(hào)包含起來(lái)。這樣才能區(qū)分是省略了"字段3"還是省略了"字段4"如失。

"字段4"的可能取值是NOPASSWD:绊诲。請(qǐng)注意NOPASSWD后面帶有冒號(hào):。表示執(zhí)行sudo時(shí)可以不需要輸入密碼褪贵。比如:

lucy ALL=(ALL) NOPASSWD: /bin/useradd

表示: 普通用戶lucy可以在任何主機(jī)上, 通過(guò)sudo執(zhí)行/bin/useradd命令, 并且不需要輸入密碼.

又比如:

peter ALL=(ALL) NOPASSWD: ALL

表示: 普通用戶peter可以在任何主機(jī)上, 通過(guò)sudo執(zhí)行任何命令, 并且不需要輸入密碼掂之。

"字段5"是使用逗號(hào)分開(kāi)一系列命令,這些命令就是授權(quán)給用戶的操作; ALL表示允許所有操作。

你可能已經(jīng)注意到了, 命令都是使用絕對(duì)路徑, 這是為了避免目錄下有同名命令被執(zhí)行脆丁,從而造成安全隱患世舰。

如果你將授權(quán)寫(xiě)成如下安全性欠妥的格式:

lucy ALL=(ALL) chown,chmod,useradd

那么用戶就有可能創(chuàng)建一個(gè)他自己的程序, 也命名為userad, 然后放在它的本地路徑中, 如此一來(lái)他就能夠使用root來(lái)執(zhí)行這個(gè)"名為useradd的程序"。這是相當(dāng)危險(xiǎn)的!

命令的絕對(duì)路徑可通過(guò)which指令查看到: 比如which useradd可以查看到命令useradd的絕對(duì)路徑: /usr/sbin/useradd

公式還要擴(kuò)充

例子1:

papi ALL=(root) NOPASSWD: /bin/chown,/usr/sbin/useradd

表示: 用戶papi能在所有可能出現(xiàn)的主機(jī)上, 提權(quán)到root下執(zhí)行/bin/chown, 不必輸入密碼; 但運(yùn)行/usr/sbin/useradd 命令時(shí)需要密碼.

這是因?yàn)镹OPASSWD:只影響了其后的第一個(gè)命令: 命令1.

上面給出的公式只是簡(jiǎn)化版槽卫,完整的公式如下:

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

在具有sudo操作的用戶下, 執(zhí)行sudo -l可以查看到該用戶被允許和被禁止運(yùn)行的命令.

通配符和取消命令

例子2:

papi ALL=/usr/sbin/*,/sbin/*,!/usr/sbin/fdisk

用例子2來(lái)說(shuō)明通配符*的用法, 以及命令前面加上!號(hào)表示取消該命令跟压。

該例子的意思是: 用戶papi在所有可能出現(xiàn)的主機(jī)上, 能夠運(yùn)行目錄/usr/sbin和/sbin下所有的程序, 但fdisk除外.

開(kāi)始編輯

“你講了這么多,但是在實(shí)踐中,我去編輯/etc/sudoers文件,系統(tǒng)提示我沒(méi)權(quán)限啊歼培,怎么辦?”

這是因?yàn)?etc/sudoers的內(nèi)容如此敏感震蒋,以至于該文件是只讀的。所以躲庄,編輯該文件前查剖,請(qǐng)確認(rèn)清楚你知道自己正在做什么。

強(qiáng)烈建議通過(guò)visudo命令來(lái)修改該文件读跷,通過(guò)visudo修改梗搅,如果配置出錯(cuò),會(huì)有提示效览。

不過(guò)液斜,系統(tǒng)文檔推薦的做法净当,不是直接修改/etc/sudoers文件,而是將修改寫(xiě)在/etc/sudoers.d/目錄下的文件中。

如果使用這種方式修改sudoers兰伤,需要在/etc/sudoers文件的最后行,加上#includedir /etc/sudoers.d一行(默認(rèn)已有):

#includedir /etc/sudoers.d

注意了逗物,這里的指令#includedir是一個(gè)整體, 前面的#號(hào)不能丟方库,并非注釋,也不能在#號(hào)后有空格弯院。

任何在/etc/sudoers.d/目錄下辱士,不以~號(hào)結(jié)尾的文件和不包含.號(hào)的文件,都會(huì)被解析成/etc/sudoers的內(nèi)容听绳。

文檔中是這么說(shuō)的:

# This will cause sudo to read and parse any files in the /etc/sudoers.d
# directory that do not end in '~' or contain a '.' character.

# Note that there must be at least one file in the sudoers.d directory (this
# one will do), and all files in this directory should be mode 0440.

# Note also, that because sudoers contents can vary widely, no attempt is
# made to add this directive to existing sudoers files on upgrade.

# Finally, please note that using the visudo command is the recommended way
# to update sudoers content, since it protects against many failure modes.

其他小知識(shí)

輸入密碼時(shí)有反饋

當(dāng)使用sudo后輸入密碼颂碘,并不會(huì)顯示任何東西 —— 甚至連常規(guī)的星號(hào)都沒(méi)有。有個(gè)辦法可以解決該問(wèn)題椅挣。

打開(kāi)/etc/sudoers文件找到下述一行:

Defaults env_reset

修改成:

Defaults        env_reset,pwfeedback

修改sudo會(huì)話時(shí)間

如果你經(jīng)常使用sudo 命令头岔,你肯定注意到過(guò)當(dāng)你成功輸入一次密碼后塔拳,可以不用再輸入密碼就可以運(yùn)行幾次sudo命令。
但是一段時(shí)間后峡竣,sudo 命令會(huì)再次要求你輸入密碼靠抑。默認(rèn)是15分鐘,該時(shí)間可以調(diào)整适掰。添加timestamp_timeout=分鐘數(shù)即可颂碧。
時(shí)間以分鐘為單位,-1表示永不過(guò)期攻谁,但強(qiáng)烈不推薦稚伍。

比如我希望將時(shí)間延長(zhǎng)到1小時(shí),還是打開(kāi)/etc/sudoers文件找到下述一行:

Defaults env_reset

修改成:

Defaults        env_reset,pwfeedback,timestamp_timeout=60
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末戚宦,一起剝皮案震驚了整個(gè)濱河市个曙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌受楼,老刑警劉巖垦搬,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異艳汽,居然都是意外死亡猴贰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)河狐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)米绕,“玉大人,你說(shuō)我怎么就攤上這事馋艺≌じ桑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵捐祠,是天一觀的道長(zhǎng)碱鳞。 經(jīng)常有香客問(wèn)我,道長(zhǎng)踱蛀,這世上最難降的妖魔是什么窿给? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮率拒,結(jié)果婚禮上崩泡,老公的妹妹穿的比我還像新娘。我一直安慰自己猬膨,他們只是感情好允华,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般靴寂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上召耘,一...
    開(kāi)封第一講書(shū)人閱讀 51,215評(píng)論 1 299
  • 那天百炬,我揣著相機(jī)與錄音,去河邊找鬼污它。 笑死剖踊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的衫贬。 我是一名探鬼主播德澈,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼固惯!你這毒婦竟也來(lái)了梆造?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤葬毫,失蹤者是張志新(化名)和其女友劉穎镇辉,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體贴捡,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡忽肛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烂斋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屹逛。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖汛骂,靈堂內(nèi)的尸體忽然破棺而出罕模,到底是詐尸還是另有隱情,我是刑警寧澤香缺,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布手销,位于F島的核電站,受9級(jí)特大地震影響图张,放射性物質(zhì)發(fā)生泄漏锋拖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一祸轮、第九天 我趴在偏房一處隱蔽的房頂上張望兽埃。 院中可真熱鬧,春花似錦适袜、人聲如沸柄错。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)售貌。三九已至给猾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颂跨,已是汗流浹背敢伸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恒削,地道東北人池颈。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像钓丰,于是被迫代替她去往敵國(guó)和親躯砰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

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