当前位置: 技术问答>linux和unix
Linux下文件权限中的SUID位不起作用,求大侠解释!!
来源: 互联网 发布时间:2017-02-07
本文导语: 我也查了一些关于权限中SUID和SGID位的资料,以为明白了,但当我做一下测试的时候发现不对! 是这样的: 我先用普通账户ljd登录系统,然后输入su切换到root账户创建一个hello.c文件,编译成可执行文件hello, [root@loca...
我也查了一些关于权限中SUID和SGID位的资料,以为明白了,但当我做一下测试的时候发现不对!
是这样的:
我先用普通账户ljd登录系统,然后输入su切换到root账户创建一个hello.c文件,编译成可执行文件hello,
[root@localhost ljd]# ll hello
-rwxr-xr-x. 1 root root 4659 Mar 6 16:26 hello
我又用命令chmod go-x hello 取消组用户和其它用户的执行权限;
[root@localhost ljd]# chmod go-x hello; ll hello
-rwxr--r--. 1 root root 4659 Mar 6 16:26 hello
然后注销root账户,用ljd用户区执行hello,当然就提示:
[ljd@localhost ~]$ ./hello
-bash: ./hello: Permission denied
所以我再切换到root下用命令chmod u+s hello设置了hello文件的SUID位:
[root@localhost ljd]# ll hello
-rwsr--r--. 1 root root 4659 Mar 6 16:26 hello
这时我再注销root,按理说我已经用root账户设置了SUID,就可以用普通账户去执行hello了啊,但还是出现上面的错误提示!
难道是我对SUID理解错了??请知道原因的大侠解释一下吧!
是这样的:
我先用普通账户ljd登录系统,然后输入su切换到root账户创建一个hello.c文件,编译成可执行文件hello,
[root@localhost ljd]# ll hello
-rwxr-xr-x. 1 root root 4659 Mar 6 16:26 hello
我又用命令chmod go-x hello 取消组用户和其它用户的执行权限;
[root@localhost ljd]# chmod go-x hello; ll hello
-rwxr--r--. 1 root root 4659 Mar 6 16:26 hello
然后注销root账户,用ljd用户区执行hello,当然就提示:
[ljd@localhost ~]$ ./hello
-bash: ./hello: Permission denied
所以我再切换到root下用命令chmod u+s hello设置了hello文件的SUID位:
[root@localhost ljd]# ll hello
-rwsr--r--. 1 root root 4659 Mar 6 16:26 hello
这时我再注销root,按理说我已经用root账户设置了SUID,就可以用普通账户去执行hello了啊,但还是出现上面的错误提示!
难道是我对SUID理解错了??请知道原因的大侠解释一下吧!
|
木有执行权限当然不行.
|
SUID 是说你在执行这个程序的过程中临时具有属主(这里是root)的权限
在执行之前,你还是你,你没有权限执行这个文件
在执行之前,你还是你,你没有权限执行这个文件
|
你还没搞明白suid
执行之前,你是你
执行过程中,你变成属主(这里是root)
执行之后,你还是你
执行之前,你是你
执行过程中,你变成属主(这里是root)
执行之后,你还是你
|
前提是你先把这个程序执行起来,SUID才有它的作用。