我需要运行这两个命令:
ulimit -s 1024
echo 120000>的/ proc / SYS /内核/线程-MAX
第一个可以在用户模式下运行(不使用sudo或su),第二个只能在su mode
中运行。我想编写一个bash脚本,让我运行这两个命令。第一个是好的。对于第二个,我需要su(将用户更改为root),运行命令,然后退出。实际上,我想使用bash脚本在su模式下运行第二个命令。有什么想法吗?
答案 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的文件的方式相同。