用SHELL脚本怎样判断当前用户不为ROOT

sh/bash/dash/ksh/zsh等Shell脚本
回复
songqing
帖子: 15
注册时间: 2005-09-28 13:32

用SHELL脚本怎样判断当前用户不为ROOT

#1

帖子 songqing » 2005-10-04 17:31

不知怎样做,编写了就是不行

s=root

if [ s != `whoami` ]
then
echo $s
echo `whoami`
echo "The user is not root!"
fi
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#2

帖子 oneleaf » 2005-10-04 20:02

if [ !$USER = "root" ]; then
echo "$0 must run by sudo";
exit 1;
fi
头像
yonsan
帖子: 887
注册时间: 2005-07-01 18:56
来自: 广州市

#3

帖子 yonsan » 2005-10-05 1:21

if [ "`whoami`" != "root" ] ; then
echo "You must run $0 as root"
exit 1
fi
I will be back!
头像
greco
帖子: 2487
注册时间: 2007-04-06 10:24
来自: ~/Shanghai

#4

帖子 greco » 2007-05-17 11:23

if [ `id -u` != 0 ]; then
echo "You must be root to run this command."
exit 1
fi
http://silenceisdefeat.com/~greco

代码: 全选

''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
头像
alinmn
帖子: 185
注册时间: 2006-05-19 21:42
来自: NIT

Re: 用SHELL脚本怎样判断当前用户不为ROOT

#5

帖子 alinmn » 2007-05-17 19:22

songqing 写了:不知怎样做,编写了就是不行

s=root

if [ s != `whoami` ]
~~~~~ "$s"
then
echo $s
echo `whoami`
echo "The user is not root!"
fi
fego
帖子: 8
注册时间: 2007-05-31 10:26

#6

帖子 fego » 2007-06-25 14:59

呵呵,这个问题有意思啊,
我也写一个。

代码: 全选

if [ $UID -gt 0 ] && [ “`id -un`" != "root" ]; then 
echo "The user is not root!"
fi
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#7

帖子 eexpress » 2007-06-25 16:07

直接id取就是啊。
● 鸣学
头像
volans
帖子: 67
注册时间: 2006-11-15 14:28
来自: Beijing

#8

帖子 volans » 2007-07-02 17:27

这个问题的答案似乎有N种,哈哈,有兴趣的整理一个集合,看谁实现的方式最好玩。
ambitiousboy
帖子: 44
注册时间: 2007-02-04 14:22

#9

帖子 ambitiousboy » 2007-09-11 11:48

经验证,如果考虑sudo的情况,使用$UID/$USER不太合适。

whoami / id 都会认为是root。但$UID/$USER还会是当前的用户。看来系统变量是不会因为使用sudo而变化的,必须切换回root才行。
头像
wen1987
帖子: 88
注册时间: 2007-07-04 21:54

#10

帖子 wen1987 » 2007-09-23 0:15

ambitiousboy 写了:经验证,如果考虑sudo的情况,使用$UID/$USER不太合适。

whoami / id 都会认为是root。但$UID/$USER还会是当前的用户。看来系统变量是不会因为使用sudo而变化的,必须切换回root才行。
root@atlas:/home/wen# ls -l /usr/bin/sudo
-rwsr-xr-x 1 root root 91508 2006-10-09 19:37 /usr/bin/sudo

sudo的作用就是伪装成root(注意到权限中user的运行位是s),一般来说没有必要区分sudoer和root,或者说不应该区分,否则会造成其他人的困惑。
一定要区分的话,恐怕只能分析ps命令的结果。
Study or die.
回复