当前位置: 技术问答>linux和unix
进程中的用户切换(问题带送分)
来源: 互联网 发布时间:2014-12-14
本文导语: 我写了一个daemon,以root身分运行。最近,我想改成,在一般的情况下它以普通用户的身份运行;如果满足一定的条件后,它将切换为root用户方式完成一定的任务。这个一定的条件是由一个专门写的客户端软件触发的...
我写了一个daemon,以root身分运行。最近,我想改成,在一般的情况下它以普通用户的身份运行;如果满足一定的条件后,它将切换为root用户方式完成一定的任务。这个一定的条件是由一个专门写的客户端软件触发的。
setuid()??它可以从一个普通的用户身份切换成root身份吗?应该不可以:(
怎么做?谢谢大家:)
setuid()??它可以从一个普通的用户身份切换成root身份吗?应该不可以:(
怎么做?谢谢大家:)
|
1. chown root filename
2. chmod 04755 filename
3. 程序中 setuid(0)
2. chmod 04755 filename
3. 程序中 setuid(0)
|
同意楼上的。用粘住位。
但这样做有安全隐患。
但这样做有安全隐患。
|
用setuid()
|
setuid位(4***)不是粘住位
粘住位是(1***)
/tmp设置了粘住位,drwxrwxrwt
任何用户都可以读写执行。/tmp内的文件,但是不能删除别人的
早期的unix设置粘住位是为了访问文件时能够直接调入交换页面,提高访问速度,现在很少这么做了,主要对目录设置粘住位
粘住位是(1***)
/tmp设置了粘住位,drwxrwxrwt
任何用户都可以读写执行。/tmp内的文件,但是不能删除别人的
早期的unix设置粘住位是为了访问文件时能够直接调入交换页面,提高访问速度,现在很少这么做了,主要对目录设置粘住位
|
进程不能从普通用户权限切换到root,你只能是从root切换到普通用户。
你的那个setuid()根本是多余的,设置了s位之后,程序一运行就已经是超级用户的权限了,不信的话你在程序启动后用geteuid看看自己的有效id是不是0;
如果要反向切换权限,就必须经过系统的认证那一关,就象su一样。
你的那个setuid()根本是多余的,设置了s位之后,程序一运行就已经是超级用户的权限了,不信的话你在程序启动后用geteuid看看自己的有效id是不是0;
如果要反向切换权限,就必须经过系统的认证那一关,就象su一样。