分页: 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命令的结果。