在Debian(5.0.3)服务器上,我有一个拥有某个shell脚本的用户svnsync : -rwsrwsr-x 1 svnsync users 119 Dec 21 13:45 mirror-svn.sh 我希望users组中的每个人都能够使用svnsync的特权执行此脚本。 这与触发post-commit脚本中的“ svnsync synchorize ”命令有关; 引用svnbook : 您可能希望您的主存储库将更改推送到一个或多个有福的镜像,作为其提交后和修订后的更改挂接实现的一部分。 这将使镜子尽可能接近实时地最新。 无论如何,我不能得到SUID的工作,显然是因为Linux / Debian是这里提到的现代Unix系统之一: 由于这个原因,一些现代UNIX系统忽略了shell脚本上的SUID和SGID位。 这个SF问题提出了同样的问题:“你不能使用SUID根目录作为shell脚本”。 所以,这是我的后续问题: 如果我真的想用自己的主人的特权来运行一个脚本,不pipe任何潜在的风险,是否有任何无忧的方法来做到这一点? build议将脚本编译为二进制文件,但如果可能的话,我宁愿采用更简单的方法。 如何从例如一个Perl脚本调用shell脚本(我实际上尝试过,但不能得到它的工作)? 添加每个人sudoers文件也不是一个很好的select。 更新 :得到它通过安装perl-suid工作, build议使用0x89,并使用像下面的Perl包装脚本。 #!/usr/bin/suidperl -T $ENV{PATH} = "/bin:/usr/bin"; system("/path/to/mirror-svn.sh"); 在这个包装脚本上设置chmod +s 。 还要注意$ENV{PATH}需要在脚本中设置; 否则你会得到一个抱怨,这是不安全的 。
我们开发一个Linux应用程序来处理不同的RedHat / SUSE发行版。 这个应用程序(即守护进程)预计将在启动时自动运行,因此我们将启动脚本放在/etc/init.d/目录中,并在运行级目录(../rc.d/rc5.d/)中创build符号链接实例)。 如果用户删除我们的应用程序,我们的卸载脚本将删除我们所有的东西,包括符号链接。 如果操作系统不提供并行脚本运行,它工作正常。 如果启用并行运行,我们需要另一个解决scheme。 例如,在SLES 10中,我们在/ etc / sysconfig / boot中: # Run all scripts or rather start/stop all services # which are independent from each other in parallel. RUN_PARALLEL="yes" 据我们了解,我们必须注册我们的脚本insserv实用程序。 在这种情况下,系统分析一个脚本头文件,并创build/删除它自己的符号链接。 如果这是真的,如何组织安装/卸载我们的应用程序,以涵盖并行和顺序启动脚本运行? 看起来当并行运行被禁用或启用时,我们应该有不同的performance。 在第一种情况下,我们应该关心符号链接。 在第二种情况下,我们应该委托给insserv。 这是正确的方法? 如果是这样,我们应该通过检查/ etc / sysconfig / boot来分析是否启用了并行运行? 它看起来不可靠,因为在不同的Linux发行版中,它可能是不同的位置和不同的参数。 安装/卸载Linux应用程序的最佳做法是什么?涵盖并行和顺序系统启动的最佳做法? 谢谢,
无论出于何种原因,垃圾邮件发送者都find了通过侧面系统中继邮件的方法。 这个漏洞已经被解决了。 问题是我的/ var / spool / mqueue目录中有大量的电子邮件(至less100,000+),我仍然需要过滤。 我停止了sendmail,并将mqueue目录的内容移动到新的位置… 从那以后,我一直试图用下面的一个class轮来帮忙: for x in `find . -type f -name “qf*” | xargs grep -l "foo" | cut -b3-`; do y=d`echo $x | cut -b2-`; mv $x /root/spammessages; mv $y /root/spammessages/; done 这个想法是: 1)检查QF文件的唯一垃圾邮件相关的标题内容(foo)。 2)findDF对应文件 3)将df和qf文件移至隔离区域。 问题是,查询正在运行,但不希望移动任何文件。 如果我跑顶,我会偶尔看到xargs和grep使用一些资源,但不会超过1%-2%。 此外…当我检查spammessages文件夹,我没有看到任何文件。 如果我在一个较小的消息子集上运行相同的命令,它似乎工作正常。 这里有一些Linux文件的限制吗? 有没有方法来优化单线? 谢谢。 -M
我拥有一个Linux的Apache网站,我宿主exe文件下载。 现在,当用户点击这个链接到我的网站(发布在另一个网站上): http://mysite.com/downloads/file.exe 我需要dynamic检查他们的用户代理并redirect到任一 http://mysite.com/downloads/file-1.exe 要么 http://mysite.com/downloads/file-2.exe 在我看来,我有两个select: 放一个.htaccess文件,说明.exe文件应该被认为是脚本。 然后编写一个脚本来检查用户代理并将其redirect到放置在另一个文件夹中的真实exe文件。 调用这个脚本file.exe。 使用Apache mod-rewrite将file.exe指向redirect.php。 哪个更好? 任何其他的考虑? 谢谢。
我有一个batch file,它需要一个计算机名称作为它的参数,并远程安装Java JRE。 现在,我试图运行这个Powershell脚本来重复调用batch file,并在没有最新版本的任何系统上安装Java。 它似乎运行无错误,但if代码块内的语句似乎永远不会运行 – 即使if条件testing的计算结果为true。 任何人都可以看看这个脚本,并指出我可能失踪? 我正在使用Quest AD cmdlet和BSOnPosh模块。 谢谢。 get-qadcomputer -sizelimit 0 -name mypc* -searchroot 'OU=MyComputers,DC=MyDomain,DC=lcl'| test-host -property name |ForEach-Object -process { $targnm = $_.name $tststr=reg query "\\$targnm\HKLM\SOFTWARE\JavaSoft\Java Runtime Environment" /v Java6FamilyVersion if(-not ($tststr | select-string -SimpleMatch '1.6.0_20')) { $mssg="Updating to JRE 6u20 on $targnm" Out-Host $mssg Out-File -filepath c:\install_jre_log.txt -inputobject […]
我们有一些电子邮件存档,将所有的电子邮件转储到一个目录。 由于服务器的某些性能原因,我想设置一个自动化的任务,每天运行一个脚本,如果主目录中有超过3000个(或任何数量)的文件,则创build一个包含date的新目录并将所有的主目录文件移动到它。 我相信有人已经写了类似的东西,所以如果有人能指出我的意思,那将是很棒的。 batch file或Powershell都将罚款。
我目前正在build立一个绑定到Active Directory中的Linux机器。 这个盒子将允许用户使用他们的AD用户名和密码进行SSH连接以收集信息(框A)。 问题是我试图在/etc/bash.bashrc中创build一个函数,所以用户所要做的就是键入“get_info”,例如,函数将SSH连接到远程机器(Box B)运行一个命令并输出信息回到用户。 这个问题是,我已经生成了框A的RSA密钥,将其添加到框B authorized_keys,它工作正常。 我遇到的问题是,如何为当前用户和任何login到框A的新用户设置一次。 有没有比我目前做的更好的方法。 基本上我只需要连接到远程盒子,运行一个命令,输出信息返回给用户,就是这样。 我怎样才能允许新用户通过脚本连接到远程盒,而不必为他们生成RSA密钥。 get_info函数将被提供一个值“get_info 012345”并返回结果。
我有一些像[17.440000] eth0:XYZCOMPANY ABC4353 802.11无线控制器 [17.540000] eth1:XYZCOMPANY ABC4353 802.11无线控制器 eth0:XYZCOMPANY ABC4353 802.11无线控制器[17.640000] 我需要在shell脚本中将eth0,eth1,eth2变成一个variables。 正如你可以注意到XYZCOMPANY ABC4353的所有其他行保持不变。但接口名称不断变化。 我需要将这些接口名称变成一个variables。 谢谢!
我试图使用一个脚本(Evan Anderson在另一个线程中友好地提供)来closures运行我们的Cisco Unity系统的几个Windows 2000服务器,如果我们的环境监测软件检测到一个问题,例如空调故障。 脚本是: – net use \ xxxx \ ipc $ / user:pipe理员密码shutdown -s -t 10 -f -m \ xxxx met ise \ xxxx \ ipc $ / delete 当脚本运行Windows注销,但随后出现一条消息,告诉我“现在可以安全closures您的计算机”屏幕。 奇怪的是,我可以使用开始关机closures计算机,当我这样做时,服务器关机,所以我知道硬件能够被closures。 我已经检查了BIOS,并开启了高级电源pipe理。 我已经看过控制面板,但没有进入电源pipe理。 我已经在“HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon”中添加了REG_SZ值“PowerdownAfterShutdown”并将其设置为“1”,但仍得到相同的行为。 由于整个问题的目的是为了防止服务器的油炸,如果房间过热,我真的需要让他们断电。 有没有人有任何想法? 非常感谢 Shaz
我在Windows 2008服务器上,想要删除15个用户(user1,直到user15),而无需手动完成。 完全删除它们之后,我想读取它们(再次使用脚本),并为它们提供脚本所要求的相同密码。 任何帮助(提示,完整的脚本)表示赞赏。