shell root啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell root啥意思相关的知识,希望对你有一定的参考价值。

Root是安卓系统的最高管理员权限,Root之后手机系统将不再受android安卓机制的约束,个人可以根据需要进行修改。

参考技术A

  root指的是安卓手机获取权限的意思。手机root后,您就可以获取手机系统的超级管理员权限,能访问或者修改几乎所有的文件,出于安全和稳定性原因手机厂商是不想让用户访问和修改的。获取root之后可以更改系统中的功能、软件,但也有可能会导致系统运行不稳定出现漏洞。具体介绍如下:

  1、root指的是安卓手机获取权限的意思;

  2、安卓手机root之后,您就可以获取手机系统的超级管理员权限,能够在文件管理器中访问或者修改几乎所有的文件,其中有一些系统文件是手机厂商处于安全性或者是稳定性考虑不想被消费者访问修改的;

  3、如果您想要删除系统自带的软件,为系统更改一些默认软件,刷入一些服务和功能,需要先获取root权限;但获取root之后可能会导致系统运行不稳定,或者导致系统出现安全漏洞。

华为Mate50 Pro曲面旗舰手机

¥6799

苹果 AirPods Pro 2代

¥1699

索尼65英寸4K HDR专业游戏电视

¥7499

惠普战66五代15.6英寸轻薄本

¥4399

参考技术B Suid shell是一种可用于以拥有者权限运行的shell。也就是说,如果拥有者
是root,那你就可能以root的
身份执行命令。普通的shell文件属性为rwxr-xr-x,拥有者为root,root可读/写
/执行这个shell,而其他用户
则只能以自己的权限读和运行它。然而,如果有一个文件属性为rwsr-xr-x的she
ll,就可以获得文件拥有者权
限;如果文件拥有者是root,那么任何运行了这个shell的用户便可以控制整个系
统,如增加用户、修改root口
令、清除日志等等。

为什么需要它?

这是一个非常容易回答的问题。当通过某些方法进入系统后,如果系统管理
员有一定的水平,会很快发现
问题。通常他们会查看日志和修改root口令,你可能就要跟这个系统说再见了。

这就是需要suid shell的原因 。:)

怎样才能得到suid shell呢?

首先你要足够狡猾,这取决于你面对的是什么样的系统管理员。当你用尽一
切方法,如猜口令、苦难root 、
安全漏洞攻击等等,终于成功地取得了root权限,尽快找到一个几乎从未使用过
的目录。无论如何,不要将
suid shell放在你的主目录下。一个比较好的地方是/usr下的深层子目录,如/u
sr/X11/include/X11/。这个目
录几乎不会有人进去的,而且很少会因存放过多文件而使系统管理员检查里面的
文件。另外,suid shell的名
字应该尽量与其它文件相似。例如,在这个目录下有sync.h、shape.h等文件,s
uid shell可以取part.h这种隐
蔽性较好的名字。

另一个比较好的地方是将suid shell与其它suid程序放置在一起,如/usr/s
bin,并同样取一个隐蔽的名字。

接着,就是在这些目录下创建suid shell了。如:

cp /bin/sh /usr/X11/include/X11/extensions/part.h
chmod 4755 /usr/X11/include/X11/extensions/part.h

注意,为了使整个过程在最短的时间内完成,应该在进入系统前做好相应准
备。最好在尝试攻击前仔细研
究系统和计划。另外总是多创建几个suid shell,这样即使其中一个被发现了,
仍然有通过使用其它
suid shell控制系统的机会。

如何利用suid shell呢?

在许多系统中,往往限制用户所能使用的shell。这个只要检查一下/etc下的
相应文件就能知道。在Linux
系统中这个文件是/etc/shells,其中列出了所有的shell程序。但你可以用suid
shell做任何事!例如,你准
备将/etc/passwd改名为/etc/passwd.heh,编写如下脚本即可:

#!/usr/X11/include/X11/extensions/part.h

mv /etc/passwd /etc/passwd.heh
exit

(这只是个示例,最好别这样做:))
上面的例子好象只提供了一个非交互的程序,但只要精心编写脚本,同样可
以实现虚拟的“交互”程序。 谢谢采纳
参考技术C Suid shell是一种可用于以拥有者权限运行的shell。也就是说,如果拥有者是root,那你就可能以root的 身份执行命令。普通的shell文件属性为rwxr-xr-x,拥有者为root,root可读/写
/执行这个shell,而其他用户 则只能以自己的权限读和运行它。然而,如果有一个文件属性为rwsr-xr-x的shell,就可以获得文件拥有者权 限;如果文件拥有者是root,那么任何运行了这个shell的用户便可以控制整个系统,如增加用户、修改root口 令、清除日志等等。
参考技术D shell 一个执行命令的环境root 一般是管理员账号

$-#*i 在 shell 脚本中是啥意思?

【中文标题】$-#*i 在 shell 脚本中是啥意思?【英文标题】:What does the $-#*i mean in shell script?$-#*i 在 shell 脚本中是什么意思? 【发布时间】:2017-06-22 20:22:37 【问题描述】:

在 CentOS 6 上的文件 /etc/profile 中有一个 for 循环:

for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        if [ "$-#*i" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null 2>&1
        fi
    fi
done

上述 for 循环中的$-#*i 是什么意思? 感谢您的帮助。

【问题讨论】:

当我读到标题时,我以为你在那儿删掉了一个 $-#*ing 坏词...... 【参考方案1】:

tl;博士:

如果当前 shell 是 交互式,则条件 [ "$-#*i" != "$-" ] 评估为逻辑 true,在这种情况下,退出代码设置为 @987654328 @,表示 true,这会导致执行封闭的 if 语句的 then 分支。

问题中的条件和代码作为一个整体故意仅使用 POSIX-compliant shell-language syntax and commands 以便可移植(与所有可能起作用的 POSIX-兼容 shell 一起使用如/bin/sh)。

请注意,如果bash 可以假定为外壳,例如,相同的条件可以更易读地表示为[[ $- == *i* ]]


说明

$-#*i 是一个 parameter expansion,它从命名参数 $- 的值中删除与 pattern *i 匹配的最短前缀 (#)(命名参数通常称为变量)。

$- 是special parameter,其中(添加了链接和重点):

扩展为 当前option 标志单字母选项名称连接成一个字符串),如调用时指定的,由 set 特殊内置命令, 或由 shell 隐含。

一个交互式 shell隐式将选项标志i添加到$-的值;换句话说:$- 的值中存在字母 i 意味着手头的 shell 是交互式的,相反,@987654343 的 不存在 @ 表示 shell 非交互式

1234563 /em> *i 匹配的内容,返回$-子字符串(在本例中为后缀)。 换句话说:只有在 interactive shell 中,$-#*i not 才等于 $-,因为在 noninteractive shell 中 - 由于不存在i - 参数展开作用,两个操作数相等。

问题中的代码的作用作为一个整体

简而言之:代码使用在/etc/profile.d 中找到的shell 脚本来初始化当前shell;更具体地说:

当前用户 (-r) 可以读取的目录 /etc/profile.d 中的脚本(名为 *.sh 的文件)按字母顺序一一传递给 . (dot) utility。 dot 实用程序从 current shell 中的每个文件执行命令,通常用于定义别名、函数和环境变量。这通常称为采购文件。

输出每个源脚本产生的处理方式不同,具体取决于当前 shell 是否是交互式的:

交互式 shell:输出通过(将在交互式 shell 中可见)。

noninteractive shell:输出被抑制>/dev/null 2>&1 是符合 POSIX 标准的方式来使 stdout 和 stderr 都静音)。

李>

【讨论】:

【参考方案2】:

请参阅Unix & Linux 上的top answer 至What does “$-#*i” != “$-” mean? cuonglm:

$- 是 shell 本身在调用时设置的当前选项标志, 或使用set 内置命令:

$ echo $-
himBH
$ set -a
$ echo $-
ahimBH

"$-#*i" 是删除字符串的语法:(来自POSIX documentation)

$参数#[单词]

删除最小前缀模式。该词应扩展为产生 一种模式。然后参数扩展将导致参数, 前缀的最小部分与模式匹配 已删除。

如果存在,单词不应以未引用的“#”开头。

$参数##[单词]

删除最大前缀模式。该词应扩展为产生一个 图案。然后参数扩展将导致参数,与 与删除的模式匹配的前缀的最大部分。

所以$-#*i 删除最短的字符串直到第一个i 字符:

enter code here
$ echo "$-#*i"
mBH

在您的情况下,if [ "$-#*i" != "$-" ] 检查您的外壳是否是 互动与否。

【讨论】:

我已经编辑了您的答案,以正确引用和归属原作者。在帮助中心查看Referencing;建议是“仅引用相关部分”,而不是完整答案。【参考方案3】:

$- 表示 shell 标志。

$-#*i 表示 shell 标志减去 *i 的第一个匹配项。

如果这两个不相等,则认为 shell 是交互式的(存在标志 i)。

【讨论】:

以上是关于shell root啥意思的主要内容,如果未能解决你的问题,请参考以下文章

Linux shell 脚本中, $@ 和$# 分别是啥意思?

Linux:shell script,这里的两个EOF分别是啥意思呢

shell脚本中#是啥意思

shell是啥意思?

shell是啥意思阿!!!

$@ 在 shell 脚本中是啥意思?