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 / 问题 / 1137389
Accepted
SledgehammerPL
SledgehammerPL
Asked: 2023-07-16 21:50:31 +0800 CST2023-07-16 21:50:31 +0800 CST 2023-07-16 21:50:31 +0800 CST

sudoers 中的 sudo 文件 - 为什么用户可以修改文件?

  • 772

我想允许一个用户以 root 身份运行specialscript.sh

所以在我创建的他的文件夹中

-rwxr----  1 root deployers     142 Jul 16 14:07 specialscript.sh

在 sudoers.d/specialscripts 中:

user123 ALL=(root) NOPASSWD: /home/user123/specialscript.sh



$ sudo specialscript.sh
Running script as user root
$

完美的

其他用户无法访问/home/user123文件 - 因此它是安全的。如果某些用户将其移动到其他文件夹,它将无法工作。

但

因为用户位于组部署者中,所以他可以看到该文件的内容(这是故意的)。

但他也可以编辑这个文件。保存后所有权更改为

-rwxr----  1 user123 user123    142 Jul 16 14:07 specialscript.sh

但他仍然可以以 root 身份运行它......

$ sudo specialscript.sh
Running script as user root
HAHAHA! I CAN RUN rm -rf!
$

目前我能看到的唯一预防措施是更改组或删除读取(这会阻止读取)或chattr +i /home/user123/specialscript.sh

但这不是明显的行为......

security
  • 1 1 个回答
  • 50 Views

1 个回答

  • Voted
  1. Best Answer
    Esa Jokinen
    2023-07-17T17:44:59+08:002023-07-17T17:44:59+08:00

    父目录的所有者无法编辑该文件,但可以删除并重新创建它:

    移动:

    $ ls -aslh
    total 8,0K
    4,0K drwxr-xr-x 2 user user 4,0K 17. 7. 12:35 .
    4,0K drwxr-xr-x 6 user user 4,0K 17. 7. 12:34 ..
       0 -rwxr-x--- 1 root adm     0 17. 7. 12:35 test.sh
    $ rm test.sh 
    rm: remove write-protected regular empty file 'test.sh'? y
    

    使用不同的用户重新创建(从父目录继承):

    $ touch test.sh
    $ chmod 750 test.sh 
    $ ls -aslh
    total 8,0K
    4,0K drwxr-xr-x 2 user user 4,0K 17. 7. 12:36 .
    4,0K drwxr-xr-x 6 user user 4,0K 17. 7. 12:34 ..
       0 -rwxr-x--- 1 user user    0 17. 7. 12:36 test.sh
    

    为了防止这种情况,请将脚本放置在所有父目录都属于 的路径中root:root。根据Linux 目录结构约定,此类路径为/usr/local/sbin/script.sh.

    该/usr/local目录是本地编译的应用程序默认安装的位置 - 这可以防止它们弄乱系统的其余部分。

    目录/sbin与目录类似/bin。它包含通常由 root 用户运行以进行系统管理的基本二进制文件。

    • 2

相关问题

  • OpenSSH 漏洞 [重复]

  • 选择什么安全套件?

  • 安全地授予对 SQL 2005 复制监视器的访问权限以创建快照

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • 如何将安全组添加到正在运行的 EC2 实例?

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