su和sudo命令詳解


我們知道,在Linux下對很多文件進行修改都需要有root(管理員)權限,比如對/ect/profile等文件的修改。很多情況下,我們在進行開發的時候都是使用普通用戶進行登錄的,尤其在進行一些環境變量的配置工作時,常常需要對一些文件進行修改。那么我們如何獲取管理員權限呢?

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

su

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=<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

sudo

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

語法

sudo(選項)(參數)

選項

選項 說明
-b 在后台執行指令;
-h 顯示幫助;
-H 將HOME環境變量設為新身份的HOME環境變量;
-k 結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼;。
-l 列出目前用戶可執行與無法執行的指令;
-p 改變詢問密碼的提示符號;
-s<shell> 執行指定的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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM