Linux之用戶身份切換與特殊的Shell

關於用戶的切換,大家應該都不會覺得陌生,在實際的操作中,經常會切換到不同的用戶環境中進行操作,爲什莫會有這樣的要求呢?因爲在入行的時候,可能都會有一些老師傅在提醒我們:平時千萬不要使用root用戶登錄啊,除非要做系統的配置,否則的話就儘可能使用一般賬戶登錄,這樣可以避免在使用root賬戶時輸入一些嚴重的命令,比如【rm -rf /】,這個命令會刪除Linux系統的所有系統文件,是不是很可怕,所以說,一般情況下就用一般賬戶登錄,比如在Linux的主機上有一個apache軟件,這個時候你就可以額外建立一個apache用戶專門用來執行這個apache軟件。
一、su
su是簡單的切換命令,它可以進行任何身份的切換,平時我們做切換的時候,都會用到[su - 用戶名],有沒有考慮過如果不加中間的[-]
會是什麼什麼結果?我們看一看
在這裏插入圖片描述
我們分析一下上面的這幅圖:首先最開始的時候,是在gao這個用戶下,之後我使用了su這個命令(注意這裏沒有‘ - ’,僅僅是su),輸入密碼之後使用id這個命令的時候,可以看到這個命令的提示字符仍然是‘gao’,雖然此時用戶的身份已經是root了。最要命的是以PATH開頭的那一行,依舊在提示着我們雖然你的UID已經具有了ROOT的身份,但是還有一些變量爲原本的‘gao’的身份,也就是說此時還有很多數據是無法直接使用的。簡單的說,單純的使用【su】切換成root的身份,讀取的變量設置方式爲非登錄Shell的方式,這種方式很多原本的變量不會被修改。
**問題:**假如此時還是在gao 這個用戶下,我想要直接看到原本root環境下才能看到的文件怎麼辦呢?第一種方法是【su - root】,輸入密碼後即可;第二種方法是【su - -c ‘‘命令串’’】,我們看一看例子: 在這裏插入圖片描述
二、sudo
接下來咱們聊一聊sudo,說實在的這個命令我見過,但是還真的沒有用過,所以一直沒有在意,直到今天,我才發現它真的有它存在的意義,還真得好好講一講
**問題:**可能你會問既然有了su這個命令幹嘛又多了一個sudo,這不是多此一舉嗎?然而有這樣一個問題你可能需要思考,假如你的主機是多人共用的環境,如果大家都需要使用 su - root 來切換成root的身份和環境,那麼豈不是說大家都知道了你的root用戶的密碼?是不是很恐怖?爲了避免密碼流出去,於是有了sudo
相對於使用su需要了解到切換用戶的密碼(一般是root用戶的密碼)而sudo的執行僅需要自己的密碼即可,甚至可以設置不需要密碼來執行sudo。由於sudo可以讓你以其他用戶的身份來執行命令(通常是使用root的身份來執行命令),所以這個sudo並不是所有用戶都可以使用的。而是僅有規範到/etc/sudoers 內的用戶才能夠執行這個命令。
示例一:在這裏插入圖片描述
**註釋:**在上面的圖中,首先我在/sbin/nologin環境下創建了用戶test2,當我們使用su - test2命令時,發現提示該賬號不可用(這就是我要說的特殊的Shell,使用該Shel創建出的用戶不可以使用bash或其shell來登錄系統),那我就非要用這個用戶創建文件怎麼辦呢?這個時候就可以用到sudo了,【-u】後面接要切換的用戶即可。此時可以看到該文件的屬主與屬組都是test2了。
還要強調的是,除了root之外其他的賬號若要使用sudo執行屬於root的權限的命令,則root需要先使用visudo去修改/etc/sudoders,讓該賬號能夠使用全部或部分root賬號的功能。爲什莫不是使用vi,而是使用visudo?因爲/etc/sudoders是設置過語法的,如果使用vi 修改的話很容易 出現語法錯誤,而是用visudo的好處就是它可以在修改完成後檢查語法是否正確。其實這個visudo的命令就是使用vi將/etc/sudoders調用出來修改而已
在這裏插入圖片描述
一般來說,要修改的這個地方大概在98行左右,我的這個是在第100行,在修改的時候只需在第100行的下面加上一行
“gao ALL=(ALL) ALL”即可,當然了還有其他的方法,此處不再一一介紹。

今天關於su 與sudo就講到這裏,接下來我麼們會講到磁盤配額與夠愛文件系統管理,再見!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章