单纯使用『
su
』切换成为
root
的身份,
读取的变量设定方式为
non-login shell
的方式,这种方式
很多原本的变量不会被改变
尤其是我们之前谈过很多次的
PATH
这个变量,由于没有改变成为
root
的环境,
因此很多
root
惯用的指令就只能使用绝对路径来执行咯。其他的还有
MAIL
这个变
量,你输入
mail
时,
收到的邮件竟然还是
dmtsai
的,而不是
root
本身的邮件!是否觉得很奇怪
啊!所以切换身份时,请务必使用如下的范例二:
范例二:使用
login shell
的方式切
换为
root
的身份并
[dmtsai@study ~]$
su
-
Password:
<==
root
的密
喔!
[root@study ~]#
env | grep root
USER=root
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
HOME=/root
LOGNAME=root
#
了½差异了吧?下次
变换
root
得最好使用
su
-
喔!
[root@study ~]#
exit
<==
这样
可以离
su
境!
上述的作法是让使用者的身份变成
root
并开始操作系统,如果想要离开
root
的身份则得要利用
exit
离开才行。
那我如果只是想要执行『一个只有
root
才能½行的指令,且执行完毕就恢复原本
的身份』呢?那就可以加上
-c
这个选项啰!
请参考底下范例三!
范例三:
dmtsai
想要
行『
head
-
n 3 /etc/shadow
』一次,且已知
root
[dmtsai@study ~]$
head
-
n 3 /etc/shadow
head: cannot open `/etc/shadow' for reading: Permission denied
[dmtsai@study ~]$
su
-
-
c
"head
-
n 3 /etc/shadow"
Password:
<==
root
的密
喔!
root:$6$wtbCCce/PxMeE5wm$KE2IfSJr.YLP7Rcai6oa/T7KFhOYO62vDnqfLw85...:16559:0:99999:7:::
bin:*:16372:0:99999:7:::
daemon:*:16372:0:99999:7:::
[dmtsai@study ~]$
<==
注意看,身份
dmtsai
喔!
继续
使用
的身份
½
行系
操作!
由于
/etc/shadow
权限的关系,该文件½有
root
可以查阅。为了查阅该文件,所以我们必须要使用
root
的身份工作。
但我只想要½行一次该指令而已,此时就使用类似上面的语法吧!好,那½下来,
如果我是
root
或者是其他人,
想要变更成为某些特殊账号,可以使用如下的方法来切换喔!
范例四:原本是
dmtsai
这个
使用者,想要
变换
身份成
vbird1
[dmtsai@study ~]$
su
-
l vbird1
Password:
<==
vbird1
的密
喔!
[
vbird1
@study ~]$
su
-
Password:
<==
root
的密
喔!
[
root
@study ~]#
id sshd