Linux下使用者切換

2021-09-29 07:04:29 字數 3609 閱讀 6664

·使用一般使用者來進行系統的日常維護工作,避免在使用root使用者時候使用 rm -rf /(那就真的時linux從刪庫到跑路了)

·出於系統安全的考慮,用較低的許可權來啟動程式,比如我們可以建立乙個名為apache使用者來啟動apache,這樣即使apache被攻擊了,

那麼它的許可權也並不足以對系統造成絕對的殺傷

·軟體本身的限制,有些軟體時預設不允許uid為0的使用者執行的,所以只能使用其他使用者,這也是出於安全考慮

su [-lm] [-c 命令] [username]

選項意義

-單純使用-,如su -,則代表切換為root使用者,並使用login-shell的方式來登陸

-l與-類似,但後面必須接使用者名稱,也是login-shell的方式來登陸

-m與-p一樣,表示,即使切換使用者,也保持現有的環境變數,而不讀取目標使用者的配置

-c後接命令,表示以目標使用者的身份執行一條命令

# 下面僅演示-c的使用方法

# 當前在user1使用者下,想使用hadoop使用者的許可權,在/tmp/test_acl_extends/目錄下建立乙個名為b.txt的檔案

使用su命令雖然很方便,但是如果乙個伺服器上有n個使用者在操作,每個使用者都需要使用到管理員許可權,那麼豈不是所有人都需要知道root密碼?這可時很危險的,所以下面我們來介紹一下sudo

sudo [-b] [-u 使用者名稱]
選項

意義-b

將後續的命令放到後台執行,而不對當前的shell產生影響

-u後接使用者名稱,表示要切換的目標使用者,若不指定則預設為root使用者

# 使用hadoop使用者在/tmp/test_acl_extends路徑下建立乙個名為c.txt的檔案

sudo -u hadoop touch /tmp/test_acl_extends/c.txt

# 可以看到下面檔案的owner與group均為hadoop,而非root

sudo命令的強大之處還在於,由於它只是切換到目標使用者身份並執行命令,並不是登陸,所以很多系統使用者(系統使用者是/sbin/nologin的,是不能登陸的,所以你無法使用su命令進行切換,這時候sudo就排上用場了)sudo的執行過程

1.當使用者執行sudo時,系統回去/etcsudoers 檔案中檢視該使用者是否有執行sudo的許可權

2.若有許可權,則讓使用者輸入自己的密碼,來確認

3.若密碼輸入成功,便開始執行sudo後續命令,但root使用者執行sudo命令時時不需要輸入密碼的

4.若欲切換的身份與執行者身份相同,那也不需要密碼

visudo與/etc/sudoers

一般來講不建議直接修改此檔案,因為可能存在同時有多個使用者訪問的情況,所以一般都是使用visudo命令,來進行修改的,該命令會鎖定/etc/sudoers檔案,如果有人正在使用該命令修改/etc/sudoers,則你會收到一條稍後再試的資訊.

而且visudo還會在你儲存退出之前進行語法檢查,以避免語法格式錯誤導致的無法使用,這就是為什麼要用visudo命令而不是直接修改/etc/sudoers檔案的原因

單一使用者的配置

使用者賬號	登入主機名=可切換的身份	可執行的命令

hadoop all=(all) all

↑意思時hadoop使用者可以以任意身份執行任意命令

1.使用者賬號:表示使用sudo命令的使用者

2.登入主機名:表示這個使用者可以從哪台主機聯機過來

3.切換成什麼身份來下達命令,預設是root身份

4.可以下達的命令,這裡請使用絕對路徑,預設為所有命令

演示:這裡輸入的為當前的使用者的密碼,這也就可以避免多人知道root密碼所帶來的危險

wheel群組的配置

除了上述的指定單一使用者(hadoop)的配置之外,還可以指定wheel群組

%wheel		all=(all)	all
這裡要注意的是,wheel是乙個群組,而任何加入到該組的使用者都可以有使用該visudo所設定的許可權

# 把hadoop使用者新增到wheel群組

usermod -a -g wheel hadoop

另外還可以設定免密碼使用sudo:

%wheel		all=(all)	nopasswd:all

單使用者也是可以免密碼的

hadoop all=(all) nopasswd:all

帶有限定的sudo

如果不加任何限定,就像上面的設定,那麼普通使用者就可以用visudo來修改root的使用者的密碼了,所以我們要加以限定。

!表示不可執行的意思,也就是說當執行passwd不加引數或者引數為root的時,禁止執行,其他條件放行

hadoop all=(all) !/usr/bin/passwd,/usr/bin/passwd [a-za-z]*, !/usr/bin/passwd root

通過別名設定visudo

假設我們有這樣的需求,要為n個不同使用者都設定上面的帶有限定的設定時,如果依照之前的方法那豈不要新增n條內容了,而且每一條內容都要寫很長的限定對不對,這也太痛苦了,考慮到了這點,所有visudo還有乙個很強大的功能,那就是別名

visudo

user_alias admpw = user1, user2, user3, user4 .... usern

cmnd_alias admpwcom = !/usr/bin/passwd,/usr/bin/passwd [a-za-z]*, !/usr/bin/passwd root

admpw all=(all) admpwcom

怎麼樣,很強大對不對

但是要注意,這裡的user_alias與cmnd_alias,甚至host_alias都是關鍵字,而且後面的命名一定都要為大寫字母

另外,sudo的第一次執行需要輸入密碼,在成功輸入密碼後的5分鐘內是無需再次輸入密碼的,超過5分鐘則需要再次輸入密碼

還有乙個使用的小竅門,就是我們可以通過sudo與su的配合,達到切換root使用者但是只需要當前使用者密碼的方式,來將身份切換到root來維護

visudo

user_alias admpw = user1, user2, user3, user4 .... usern

admpw all=(root) /bin/su -

linux下切換使用者 su VS sudo

出於安全考慮,我們平時都是以一般身份的使用者來作業系統的日常作業的,但有時會有切換到root使用者或者是其他使用者的需要,那在linux下該如何切換身份呢?su 是最簡單的身份切換命令,能在任何身份間切換。su 和 su l 前者代表以 non login shell 的變數檔案讀取方式來登陸系統 ...

linux系統下使用者切換 3

su user 和 su user 的區別 su user 切換到其他使用者,但是不切換環境變數,su user 則是完整的切換到新的使用者環境。如 root rac1 pwd 當前目錄 root root rac1 su oracle 使用su user oracle rac1 root pwd ...

Linux下如何切換使用者

linux下如何切換使用者 1.切換使用者的命令為 su username username是你的使用者名稱哦 2.從普通使用者切換到root使用者,還可以使用命令 sudo su 3.在終端輸入exit或logout或使用快捷方式ctrl d,可以退回到原來使用者,其實ctrl d也是執行的exi...