【问题标题】:File execute permission文件执行权限
【发布时间】:2017-01-06 02:04:53
【问题描述】:
lameta01dev:/tmp/test> ls -ltra
total 20
drwxrwxrwt 14 root root 12288 2016-08-29 14:21 ..
-rw-r--r--  1 root root    19 2016-08-29 14:24 a.sh
drwxr-xr-x  2 root root  4096 2016-08-29 14:24 .
lameta01dev:/tmp/test> whoami
apgimage
lameta01dev:/tmp/test> sh a.sh 
hello world

问题:如果我以 apgimage 身份登录,当文件所有者为 root 时,我如何使用“sh a.sh”命令提取 a.sh?

【问题讨论】:

    标签: shell ubuntu terminal permissions


    【解决方案1】:

    运行

    sh a.sh
    

    您需要 (a) 执行 sh 权限和 (b) 读取 a.sh 权限。


    a.sh 上的 执行 权限决定了以下操作是成功还是失败:

    ./a.sh
    

    注意事项:

    1. 只要用户对a.sh 具有读取权限,阻止sh a.sh 对安全没有任何帮助:用户只需将a.sh 的内容复制到他自己的文件中,并在他的文件中设置执行位复制。

    2. 为防止普通用户通过sh a.sh 执行脚本,root 可以删除该文件对“其他”的读/写/执行权限:

      chmod o-a a.sh
      

      如果文件属于普通用户所属的组,则还需要删除组权限:

      chmod go-a a.sh
      

    【讨论】:

    • 这是什么安全措施,我可以使用覆盖整个权限集的 sh 命令执行执行。
    • 只要您对a.sh读取 权限,防止sh a.sh 对安全没有任何帮助:您可以将a.sh 的内容复制到您自己的文件中并在您的副本上设置 execute 位。
    • root用户能否覆盖普通用户的权限?我发现对于没有权限的文件“---------- 1 apgimage root 19 2016-08-29 14:24 a.sh”我不能做任何事情作为 apaimage 但是当我以 root 身份登录时能够读、写但不能执行。
    • 是的,这行得通。如果脚本属于 root 并且 root 拒绝您读取权限,则您无法执行它。如果 root 运行 chmod go-a filename,那么其他人(不是 root 用户)读取、写入或执行文件的所有权限都将消失。
    • 但是如果文件属于非 root 用户并且权限集看起来像 -rwx------ 对于该用户,在这种情况下,root 似乎属于其他权限,即 - - 但我能读、写但不能执行文件。
    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 2014-01-18
    • 2014-06-17
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多