分页: 1 / 1

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

发表于 : 2005-10-04 17:31
songqing
不知怎样做,编写了就是不行

s=root

if [ s != `whoami` ]
then
echo $s
echo `whoami`
echo "The user is not root!"
fi

发表于 : 2005-10-04 20:02
oneleaf
if [ !$USER = "root" ]; then
echo "$0 must run by sudo";
exit 1;
fi

发表于 : 2005-10-05 1:21
yonsan
if [ "`whoami`" != "root" ] ; then
echo "You must run $0 as root"
exit 1
fi

发表于 : 2007-05-17 11:23
greco
if [ `id -u` != 0 ]; then
echo "You must be root to run this command."
exit 1
fi

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

发表于 : 2007-05-17 19:22
alinmn
songqing 写了:不知怎样做,编写了就是不行

s=root

if [ s != `whoami` ]
~~~~~ "$s"
then
echo $s
echo `whoami`
echo "The user is not root!"
fi

发表于 : 2007-06-25 14:59
fego
呵呵,这个问题有意思啊,
我也写一个。

代码: 全选

if [ $UID -gt 0 ] && [ “`id -un`" != "root" ]; then 
echo "The user is not root!"
fi

发表于 : 2007-06-25 16:07
eexpress
直接id取就是啊。

发表于 : 2007-07-02 17:27
volans
这个问题的答案似乎有N种,哈哈,有兴趣的整理一个集合,看谁实现的方式最好玩。

发表于 : 2007-09-11 11:48
ambitiousboy
经验证,如果考虑sudo的情况,使用$UID/$USER不太合适。

whoami / id 都会认为是root。但$UID/$USER还会是当前的用户。看来系统变量是不会因为使用sudo而变化的,必须切换回root才行。

发表于 : 2007-09-23 0:15
wen1987
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命令的结果。