如何在bash脚本中以su模式运行命令?

时间:2013-11-29 18:32:57

标签: linux bash su

我需要运行这两个命令:

  

ulimit -s 1024

     

echo 120000>的/ proc / SYS /内核/线程-MAX

第一个可以在用户模式下运行(不使用sudo或su),第二个只能在su mode中运行。我想编写一个bash脚本,让我运行这两个命令。第一个是好的。对于第二个,我需要su(将用户更改为root),运行命令,然后退出。实际上,我想使用bash脚本在su模式下运行第二个命令。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果您的用户有权使用“sudo tee”,那么一个解决方案是:

echo 120000 | sudo tee /proc/sys/kernel/threads-max

答案 1 :(得分:1)

作为安全措施,您无法在不预先添加sudo的情况下以超级用户身份运行脚本。如果您希望它是无密码的,则需要运行visudo并允许您(或执行用户)以超级用户身份运行此命令,而无需密码确认。

另一种方法是在编译代码上使用setuid位。编译一个简单的程序,它将执行echo 120000 > /proc/...,然后将其更改为root [{1}}和chown 0:0 executable_name所有,以设置它的setuid位。这将导致执行此程序,并以其所有者的权限运行,即root。

这与允许chmod u+s executable_name修改需要超级用户权限但实际上不是超级用户或sudoer的文件的方式相同。