su和sudo命令詳解

2021-08-15 18:03:01 字數 3424 閱讀 8773

我們知道,在linux下對很多檔案進行修改都需要有root(管理員)許可權,比如對/ect/profile等檔案的修改。很多情況下,我們在進行開發的時候都是使用普通使用者進行登入的,尤其在進行一些環境變數的配置工作時,常常需要對一些檔案進行修改。那麼我們如何獲取管理員許可權呢?

​ 一般來說,有兩種方法。一是:利用su命令切換到root使用者,在root使用者下對那些檔案進行修改,完成相關配置工作。二是:利用su命令切換到root使用者,修改/etc/sudoers檔案,讓普通使用者具有sudo許可權,然後利用su命令切換回普通使用者,在執行相關命令前加上sudo。下面我會先介紹這兩個命令。

linux su命令用於變更為其他使用者的身份,除 root 外,需要鍵入該使用者的密碼

使用許可權:所有使用者。

su

[-fmp]

[-c command]

[-s shell]

[--help]

[--version]

[-][user [arg]

]

選項

說明-c《指令》或–command=《指令》

執行完指定的指令後,即恢復原來的身份;

-f或——fast

適用於csh與tsch,使shell不用去讀取啟動檔案;

-l或——login

改變身份時,也同時變更工作目錄,以及home,shell,user,logname。此外,也會變更path變數;

-m,-p或–preserve-environment

變更身份時,不要變更環境變數;

-s或–shell=

指定要執行的shell;

–help

顯示幫助;

–version

顯示版本資訊。

變更帳號為 root 並在執行 ls 指令後退出變回原使用者

su -c ls root
變更帳號為 root 並傳入 -f 引數給新執行的 shell

su root -f
變更帳號為 clsung 並改變工作目錄至 clsung 的家目錄(home dir)

su - clsung
切換使用者

hnlinux@ylg:~$ whoami //顯示當前使用者

hnlinux

hnlinux@wylg:~$ pwd //顯示當前目錄

/home/hnlinux

hnlinux@ylg:~$ su root //切換到root使用者

密碼:

root@ylg:/home/hnlinux# whoami

root

root@ylg:/home/hnlinux# pwd

/home/hnlinux

切換使用者,改變環境變數

hnlinux@ylg:~$ whoami //顯示當前使用者

hnlinux

hnlinux@ylg:~$ pwd //顯示當前目錄

/home/hnlinux

hnlinux@ylg:~$ su - root //切換到root使用者

密碼:

root@ylg:/home/hnlinux# whoami

root

root@ylg:/home/hnlinux# pwd //顯示當前目錄

/root

linux sudo命令用來以其他身份來執行命令,預設的身份為root。在/etc/sudoers中設定了可執行sudo指令的使用者。若其未經授權的使用者企圖使用sudo,則會發出警告的郵件給管理員。使用者使用sudo時,必須先輸入密碼,之後有5分鐘的有效期限,超過期限則必須重新輸入密碼。

sudo(選項)

(引數)

選項

說明-b

在後台執行指令;

-h顯示幫助;

-h將home環境變數設為新身份的home環境變數;

-k結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼;。

-l列出目前使用者可執行與無法執行的指令;

-p改變詢問密碼的提示符號;

-s執行指定的shell;

-u《使用者》

以指定的使用者作為新的身份。若不加上此引數,則預設以root作為新的身份;

-v延長密碼有效期限5分鐘;

-v顯示版本資訊。

sudo命令使用

$ sudo

ls[sudo] password for hnlinux:

hnlinux is not in the sudoers file. this incident will be reported.

指定使用者執行命令

# sudo -u userb ls -l
以root許可權執行上一條命令

$ sudo

!!

以特定使用者身份進行編輯文字

$ sudo -u uggc vi ~www/index.html

//以 uggc 使用者身份編輯 home 目錄下www目錄中的 index.html 檔案

一般情況下,linux下root使用者預設是沒有密碼,要利用su命令切換到root使用者,需要先利用sudo passwd root命令對root使用者設定初始密碼

sudo

passwd root #設定初始密碼

在修改完root使用者的密碼之後,我們利用su root命令,輸入root使用者的密碼就可以切換到root使用者下來了。

在執行命令前加上sudo讓使用者獲得管理員許可權,首先需要在root使用者下,具有管理員許可權對/etc/sudoers檔案進行修改。

我們需要先利用su命令切換到root使用者下,輸入visudo -f /etc/sudoers命令進行編輯

visudo -f  /etc/sudoers
進入檔案之後,找到root all=(all) all這條語句所在的地方,將root替換成你想要具有管理員許可權的使用者名稱(比如:ylg),在這行語句下面輸入ylg all=(all) all,然後進行儲存

root all=

(all) all

# 新增

ylg all=

(all) all

在給普通使用者管理員許可權之後,以後為了修改檔案就可以直接在命令前加上sudo即可,如

sodu vi /etc/profile

Linux下su和sudo命令詳解

su 用以切換成不同的使用者的身份 預設只是切換身份,並沒有切換環境變數,環境變數依然是普通使用者的 切換使用者身份時,使用者的環境變數也切換成新使用者的環境變數,所以 不能省略,不然有些操作無法執行 sudo 使用超級使用者來執行命令,一般指的是root使用者 想要使用sudo首先得在 ect s...

學習linux命令su和sudo

出於安全考慮,我們往往不使用root登入,而用一般賬號來管理,但有時一些許可權不夠,必須要用root使用者,其實系統提供了兩個命令su和sudo來解決這個問題,這裡先介紹這兩個命令的常見用法,然後對它們使用再進行下對比。su是簡單用法 su的用途是讓使用者暫時改變登入者的身份,變更時要輸入所要變更使...

Linux基礎命令之su和sudo

su su 用於使用者之間的切換。但是切換前的使用者依然保持登入狀態。如果是 root 向普通或虛擬使用者切換不需要密碼,反之普通使用者切換到其它任何使用者都需要密碼驗證。su 在不加任何引數,預設為切換到 root 使用者,但沒有轉到 root 使用者根目錄下 su 加引數 表示預設切換到 roo...