我可以为perl脚本setuid吗?
我制作了一个perl脚本来更改其他用户拥有的文件的所有者.脚本完成了.我的管理员将其保存在/ sbin目录中,并使用chmod的name_of_script为其设置uid.但是当我运行这个脚本时,它给我一个错误,即不允许chown操作.我做了一个C程序,它按照相同的步骤工作.所以我的问题是如果setuid正在为perl工作,那么我不应该得到那个错误,因为C代码没有给我任何错误.所以我可以为perl脚本setuid,或者我应该使用c代码.
不要告诉我每次都要求管理员更改所有者.实际上在服务器我有用户名暂存,我在其中托管一个joomla网站.现在,当我安装一些插件时,与该插件相关的文件归www-data所有.这就是为什么我不想每次都去管理员.或者你也可以给我一些关于我的问题的其他解决方案. 谢谢. 解决方法
许多unix系统(可能是最现代的系统)忽略了解释器脚本上的suid位,因为它打开了太多的安全漏洞.
但是,如果您使用perl< 5.12.0,您可以使用setuid set运行perl脚本,它们将以root身份运行.它是如何工作的,当正常的perl解释器运行时,检测到你试图执行的文件设置了setuid位,然后执行一个名为suidperl的程序. Suidperl负责提升用户的权限,并以超级安全模式启动perl解释器. suidperl本身就是用setuid root运行的. 其中一个后果是污染模式自动打开.还执行其他额外检查.您可能会看到以下消息: Insecure $ENV{PATH} while running setuid at ./foobar.pl line 3. perlsec提供了有关保护此类脚本的一些有用信息. 默认情况下,通常不会安装suidperl.您可能必须通过单独的包安装它.如果未安装,则会收到以下消息: Can't do setuid (cannot exec sperl) 说完所有这些之后 – 使用sudo执行具有提升权限的操作会更好.它更加安全,因为您可以准确指定允许通过sudoers文件执行的内容. 截至perl 5.12.0,suidperl被丢弃.因此,如果要使用setuid set在perl> = 5.12.0上运行perl脚本,则必须编写自己的C包装器.我再次推荐sudo作为更好的选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |