AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 993722
Accepted
S.Goswami
S.Goswami
Asked: 2019-11-29 22:51:12 +0800 CST2019-11-29 22:51:12 +0800 CST 2019-11-29 22:51:12 +0800 CST

启用粘滞位的脚本无法写入根文件

  • 772

我在 /tmp/ 中有 2 个文件。

  • 第一个是一个名为“file”的空文件,具有权限-rw-------和所有者root:root。

  • 第二个文件名为“script”,它是一个简单的 Ruby 脚本,具有权限-rwsr-xr-x和所有者root:root。脚本文件的内容是:

#!/usr/bin/env ruby
$-v = true

IO.write( File.join(Dir.pwd, 'file'), 100.times.map { rand(97..122).chr }.join << ?\n )

文件“file”与文件具有相同的权限/etc/shadow:

# ls -l /etc/shadow
-rw------- 1 root root 1045 Sep 22 04:13 /etc/shadow

# ls -l file
-rw------- 1 root root 6 Nov 29 12:22 file

passwdruby 脚本 "script" 与命令具有相同的权限:

$ ls -l $(type -p passwd)
-rwsr-xr-x 1 root root 63624 Nov 13 22:28 /usr/bin/passwd

# ls -l script
-rwsr-xr-x 1 root root 78 Nov 29 12:22 script

我可以./script以 root 身份运行,它用一些随机字符串替换文件“file”的内容。

但是当我./script以非 root 用户身份运行时,Ruby 会引发Errno::EACCES.


我可以通过正确设置SUID权限以非root用户身份写入root可写文件“file”吗?

setuid
  • 1 1 个回答
  • 109 Views

1 个回答

  • Voted
  1. Best Answer
    gm3dmo
    2019-11-29T23:29:11+08:002019-11-29T23:29:11+08:00

    您可以尝试改用访问控制列表 (ACL)。在下面的命令中,我 (dmo) 授予用户bob对名为test的文件的读/写访问权限:

    $ setfacl -m u:bob:rw test
    

    现在在权限末尾ls显示一个标志,表明 ACL 对文件有效。+

    $ ls -l
    total 4
    -rw-rw-r--+ 1 dmo dmo 0 Nov 29 07:22 test
    

    要查看 ACL 允许使用的内容getfacl:

    $ getfacl test
    # file: test
    # owner: dmo
    # group: dmo
    user::rw-
    user:bob:rw-
    group::rw-
    mask::rw-
    other::r--
    

    如您所见,鲍勃现在拥有他需要的写访问权限。

    如果要删除 ACL,可以使用setfacl --remove-all:

    $ setfacl --remove-all test
    $ ls -l
    total 0
    -rw-rw-r--. 1 dmo dmo 0 Nov 29 07:22 test
    

    有一些关于 ACL 的很好的教程,这是一个经常被忽视的功能:https ://linuxconfig.org/how-to-manage-acls-on-linux

    最后,要非常小心您允许谁写入由root用户拥有/读取的文件。

    • 2

相关问题

  • 为windows设置uid

  • 为 NFS 映射 UID

  • 您如何以文件所有者而不是网络服务器用户的身份运行 PHP 脚本?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve