使用者身份切換

2021-08-08 04:28:11 字數 3308 閱讀 8636

su 是最簡單的身份切換命令了,它可以進行任何身份的切換。方法如下:

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

引數:-:單純使用 - 如「su - 」,代表使用 login-shell 的變數檔案讀取方式來登入系統;

若使用者名稱沒有加上去,則代表切換為 root 的身份。

-l :與 - 類似,但後面需要加預切換的使用者賬號。也是 login-shell 的方式。

-m :-m 與 -p 是一樣的,表示使用目前的環境設定,而不讀取新使用者的配置檔案。

-c :僅進行一次命令,所以 -c 後面可以加上命令

有沒有加上那個減號「-」差很多,因為涉及 login-shell 與 non-login shell 的變數讀取方法。切換身份時最好使用 su -

1、範例一:假設你原本是 flysheep 的身份,想要使用 non-login shell 的方式變成 root

[flysheep@www ~]$ su            <==注意提示符,是 flysheep 的身份

密碼: <==這裡輸入 root 的密碼

[root@www flysheep]# id <==提示符的目錄是 flysheep

uid=0(root) gid=0(root) 組=0(root) <==確實是 root 的身份!

[root@www flysheep]# env | grep 'flysheep'

user=flysheep

path=/usr/local

/jdk/bin

mail=/var/spool

/mail/flysheep

<==收到的 mailbox 是 flysheep

pwd=/home/flysheep

<==並非 root 的主資料夾

logname=flysheep

# 雖然你的 uid 已經是具有 root 的身份,但是還有一堆變數是 flysheep 的身份,所以很多資料還是無法直接使用。

[root@www flysheep]# exit <==這樣可以離開 su 的環境。

2、 範例二:使用 login shell 的方式切換為 root 的身份並檢視變數
[flysheep@www ~]$ su -

密碼:[root@www ~]# env | grep root

user=root

mail=/var/spool/mail/root

pwd=/root

home=/root

logname=root

[root@www ~]# exit

3、範例三:flysheep 想要執行「head -n 3 /etc/shadow」 一次,且已知 root 密碼
[flysheep@www ~]$ head -n 3 /etc/shadow

head: 無法開啟"/etc/shadow" 讀取資料: 許可權不夠

[flysheep@www ~]$ su - -c "head -n 3 /etc/shadow"

密碼:root:

$6$uf6eielu

$mpmi2hvihiw3gsplczi25v.26pnv0.jpdowqiwqs9er5iby93snbddwcnwiph/kzv5i4tnyv2b3biii92disc.:

17268:0

:99999:7

:::bin:*:

16231:0

:99999:7

:::daemon:*:

16231:0

:99999:7

:::[flysheep@www ~]$

一開始系統預設僅有 root 可以執行 sudo

sudo [-b] [-u 新使用者賬號]

引數:-b :將後續的命令讓系統自動執行,而不與前面的 shell 產生影響。

-u :後面可以接欲切換的使用者,若無此項則代表切換身份為 root。

1、範例一:以 flysheep 的身份在 /tmp 下面新建乙個名為 myfile 的檔案
[root@www ~]# sudo -u flysheep touch /tmp/myfile

[root@www ~]# ll /tmp/myfile

-rw-r--r-- 1 flysheep flysheep 0

9月 14 08:

10 /tmp/myfile

# 特別留意,這個檔案的許可權是由 flysheep 所建立的。

2、範例二:以 flysheep 的身份新建 ~flysheep/www 並於其中新建 index.html 檔案
[root@www ~]# sudo -u flysheep sh -c "mkdir ~flysheep/www; cd ~flysheep/www; echo 'this is index.html file' > index.html"

[root@www ~]# ll -a ~flysheep/www

總用量 4

drwxr-xr-x

2 flysheep flysheep 23

9月 14 08:16 .

drwx------ 6 flysheep flysheep 131

9月 14 08:16 ..

-rw-r--r-- 1 flysheep flysheep 24

9月 14 08:16

index.html

# 要注意,新建者的身份是 flysheep ,且我們使用 sh -c "一串命令" 來執行

除了 root 之外的賬號,若想要使用 sudo 執行屬於 root 的許可權命令,則 root 需要先使用 visudo 去修改/etc/sudoers,讓該賬號能夠使用全部或部分的 root 命令功能。

3、範例三:讓 flysheep 這個賬號可以使用 root 的任何命令

[root@www ~]# visudo 

...(前面省略)...

## allow root to run any commands anywhere

root all=(all) all >==找到這一行,大約在76行左右

flysheep all=(all) all >==這一行是你要新增的!

...(前面省略)...

使用者身份切換

一 su 1 su 切換到root使用者 需要輸入root密碼 代表使用non login shell的變數檔案讀取方式來登入系統 2 su 切換到root使用者 需要輸入root密碼 代表使用login shell的變數檔案讀取方式來登入系統 3 su l 使用者名稱 切換到指定的使用者 輸入要切...

使用者身份切換

1年 ago mqzi 使用者身份切換 使用su的時候但不加 有區別 當不使用 的時候使用者的主目錄還是原來的賬戶 郵件各方面的都是原來賬號的 加 使用的是login shell 但是沒有加的話就是non login shell 使用 c 執行乙個只有root才能進行的命令 su c head n ...

使用者身份切換 su sudo

使用一般賬號 系統平日操作的好習慣 事實上,為了安全的緣故,盡量一般以一般身份使用者來操作linux的日常作業,等到需要設定系統環境時,才變換身份稱為root來進行系統管理,相對比較安全,避免做錯一些嚴重的命令,例如 rm rf 用較低許可權啟動系統服務 相對於系統安全,有的時候,我們必須要以某些系...