首页 >>  正文

shell+函数参数

来源:baiyundou.net   日期:2024-09-22

IT之家 9 月 19 日消息,近年来,Rust 重构的热潮席卷整个开发圈,Rust 在安全性、高效性和可维护性等方面都有一定优势,包括 Windows、Linux 内核也带来了 Rust 支持。

统信软件今日宣布,统信 UOS 服务器版将于不久后推出 Rust 版 Bash,名为 utshell,旨在突破传统 Shell 所面临的安全局限。

IT之家注:Bash 是一种广泛应用于各种 Unix 和 Linux 系统的 Shell 程序,是 Bourne shell 的后继兼容版本与开放源代码版本。

统信软件表示,在 Bash 中,有一些命令没有对参数进行防篡改检查,因而给系统带来了安全风险。

例如,alias 命令允许用户为其他命令或命令序列创建别名,然而它并未对参数进行防篡改检查,进而导致未经检查的参数可能会被利用来执行恶意代码或进行未经授权的操作。

为了应对上述问题,utshell 对 alias 命令的规则进行了明确界定,目的在于确保使用的便捷性,并且能够有效地防止命令被恶意篡改,从而限制恶意行为或误操作的发生。

  • 当别名和 $PATH 下可执行文件重名时,只允许别名和可执行文件一致。例如,如果我们想要创建一个别名“ls”,那么与之对应的可执行命令也必须是“ls”,且允许在命令中添加参数,以便用户可以根据自己的需求对命令进行个性化制定。

  • 别名不能与其他别名、函数名称发生重名,以避免在使用别名时出现二义性,进而更好地确保操作系统能够正确理解用户的指令,避免混淆和误解。

不仅仅限于 alias 命令,utshell 还对所有命令进行了检查,并对那些可能受到恶意篡改威胁的命令进行了规则的优化处理,如 hash 和 function 命令等。

在 Bash 中,mapfile 命令是用于对数组进行赋值的工具,但它并没有对数组的越界情况进行有效的检查和控制。当用户输入的参数数量超过数组容量时,溢出部分可能会被误当作命令来执行,从而引发潜在的安全隐患。

为了避免上述情况的发生,utshell 采取了对数组边界的判断措施。例如,当传入的参数过多时,自动截断或给出警示等,从而保证只有合法、预期的参数才能被传递给 mapfile 命令。

此外,通过使用 Rust 重构 Bash,utshell 不仅能继承 Rust 的“源生”安全性,还能在代码层面实现更高的自主可控性,从而提升系统的安全性和可靠性。

6 月初,统信 UOS 服务器版 V20(1060)已集成了 utshell 的部分功能,为即将发布的完整版 utshell 提供了初步体验。IT之家附下载地址:

deepin 社区地址:

https://github.com/linuxdeepin/utshell

欧拉社区地址:

https://gitee.com/openeuler/utshell

龙蜥社区地址:

https://gitee.com/anolis/utshell

","gnid":"9b80c77066eec6e39","img_data":[{"flag":2,"img":[{"desc":"","height":"608","title":"","url":"https://p0.ssl.img.360kuai.com/t010d628ec60b0a0806.jpg","width":"1080"},{"desc":"","height":"608","title":"","url":"https://p0.ssl.img.360kuai.com/t0110a398adb1339b88.jpg","width":"1080"},{"desc":"","height":"608","title":"","url":"https://p0.ssl.img.360kuai.com/t01db58fc8ab01bf4f3.jpg","width":"1080"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"cache","pub_time":1695118884000,"pure":"","rawurl":"http://zm.news.so.com/4075f03cc0bbdac1714ff8e38afed7c0","redirect":0,"rptid":"86051489ff1aeb6b","rss_ext":[],"s":"t","src":"IT之家","tag":[{"clk":"ktechnology_1:linux","k":"linux","u":""}],"title":"统信 UOS 将推 Rust 版 Bash 命令行工具 utshell

霍影民4688如何给shell脚本挂参数 -
殷娴券18248961958 ______ sh yourshell 参数1 参数2 ........

霍影民4688shell脚本中怎么利用参数' -
殷娴券18248961958 ______ 在执行脚本时,后面可以跟参数,例如 ./xxx.sh arg1 arg2 arg3 ... 那么arg1 arg2 arg3 就是传入的参数,在xxx.sh脚本中要引用参数,则使用$1,$2,$3来引用.

霍影民4688vb 用shell或者shellexecute 执行exe文件就是打开不了 -
殷娴券18248961958 ______ 跟大小没关系 可能是你的shell参数 设置成了隐藏(vbHide或者是0) 正确代码如下 Shell "exe文件绝对路径", vbNormalFocus 将shell的参数2设置为普通的窗口模式就能够显示出exe了

霍影民4688VB如何打开其他程序? -
殷娴券18248961958 ______ 是的.或用ShellExecuteShell 函数执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0.语法Shell(pathname[,windowstyle])Shell 函...

霍影民4688VB程序设计,编程高手试写代码.
殷娴券18248961958 ______ 运行指定程序用SHELL函数,退出的代码如下: unload me Shell 函数 执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0.语法Shell(pathname[,windowstyle])Shell 函数的语法含...

霍影民4688shell命令与api函数有什么关系? -
殷娴券18248961958 ______ 每个shell命令其实都是一个小程序,比如ls,就是一个程序.而这种程序多半都是需要调用api的.

霍影民4688用vba宏怎样打开非office文件,譬如,cad、记事本程序 -
殷娴券18248961958 ______ 用Shell 函数 例子:示例中用到的 Shell 语句均假定该应用程序已经存在指定的路径中 MyAppID =Shell("C:\WINDOWS\system32\notepad.exe", 1) ' 运行系统自带的记事本 AppActivate MyAppID '激活已经运行的记事本窗体 VBA帮助的函数说...

霍影民4688如何从VB编程中启动其他程序 -
殷娴券18248961958 ______ 你在窗体上新建一个commandbutton,然后输入以下代码: 比例启动QQ,你家的QQ装在E盘下的QQ文件夹里,输入: Private Sub Command1_Click() Shell ("e:\qq\qq.exe") End Sub 就可以啦,shell是调用外部程序的,记得()里的路径要""的,还有程序的扩展名不要忘啦

霍影民4688vb编程的代码和函数 -
殷娴券18248961958 ______ 我自己整理了一些,不多,你看看吧.如果要有列子的再找我. (一)类型转换类函数1. CType(X) [格式]:P=CBool(X) ' 将X转换为“布尔”(Boolean)类型 P=CByte(X) ' 将X转换为“字节”(Byte)类型 P=CCur(X) ' 将X转换为“金额”(Currency)...

霍影民4688启动当前目录下的EXE文件的vb代码 -
殷娴券18248961958 ______ Dim pid As Long pid = Shell(App.Path & "\*.exe", vbNormalFocus) 其中app.path表示当前目录 vb的shell函数用法: 功能:执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0. ...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024