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 用較低許可權啟動系統服務 相對於系統安全,有的時候,我們必須要以某些系...