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 / 问题

问题[setuid](server)

Martin Hope
chichi
Asked: 2020-02-27 07:18:19 +0800 CST

setuid 没有按预期工作

  • 0

我有一个侦听某个端口的节点 js 脚本。

如果此脚本接收到一个 json 文件,它需要在用户主目录中执行部署脚本。

节点脚本在 node_user 下运行。

主目录是 user_b。

我设置了一个 acl,以便用户 'node_user' 可以访问用户 'user_b' 目录并执行部署脚本。

setfacl -mu:node_user:rx deploy.sh

还要在部署脚本上设置 uid,以便它应该在 (user_b) 拥有的用户下执行:chmod u+s deploy.sh

当我测试它时,部署脚本被执行,所以那里有足够的权限,但脚本仍然作为 node_user 而不是作为它的所有者(user_b)执行

我通过以下方式验证了这一点: watch -n1 'lsof | grep 部署.sh'

我想知道是否有人知道为什么它不能按预期工作。

统计部署.sh

  File: ‘deploy.sh’
  Size: 918             Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 25242546    Links: 1
Access: (4750/-rwsr-x---)  Uid: ( 1003/ user_b)   Gid: ( 1005/ user_b)

getfacl 部署.sh:

# file: deploy.sh
# owner: user_b
# group: user_b
# flags: s--
user::rwx
user:node_user:r-x
group::r-x
mask::r-x
other::---
setuid centos7
  • 1 个回答
  • 52 Views
Martin Hope
S.Goswami
Asked: 2019-11-29 22:51:12 +0800 CST

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

  • 0

我在 /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 个回答
  • 109 Views
Martin Hope
Richard T
Asked: 2013-10-14 16:00:19 +0800 CST

升级 Fedora Core 后二进制可执行文件上的 SETUID / SETGID 停止工作

  • 1

我有一个 C 程序需要访问一个受保护的充满东西的目录。strong text这个想法是只有程序或管理员才能访问。

过去在 Linux 平台上,我相当成功地使用了文件系统的 SETUID 和 SETGID 位。该程序运行得很好,因为文件系统所说的任何 UID 和 GID 都是可执行文件的所有者,无论谁运行它。

或者,更确切地说,它曾经成功运行。

我不知道这个变化是什么时候发生的,因为我只倾向于在出现硬件故障时更新操作系统,所以我会同时获得两个更新......所以,鉴于很多版本都被跳过了,我,只有正确的现在,Fedora Core 17 上的开发系统不再支持这些位。由于 FC 19 是当前版本,我想最新版本只会变得更糟,而不是更好。

这是“ls -l”输出:

-rwsrwsr-x 1 cu cu 26403 Aug 28  2012 comp

在调查解决方案时,我发现 chmod 的手册页是这样说的:

其他限制可能会导致 MODE 或 RFILE 的 set-user-ID 和 set-group-ID 位被忽略。此行为取决于底层 chmod 系统调用的策略和功能。如有疑问,请检查底层系统行为。

好的,但我不知道如何按照建议检查该政策和功能!他们没有提供任何帮助,只能使用 info 命令 - 但我发现那里没有任何帮助,只有有关用于创建新文件的默认用户和组所有权的数据。

SELINUX 已关闭。

问题:

  1. 在现代做这种事情的“正确”方法是什么?

  2. 我如何检查政策 - 并更改它们?

感谢您的任何意见。

更多数据:

C 程序只有这一行分支以输出错误 - 摘录:

  line=malloc(large);
  if (!line) printf("virtual memory exhausted\n");
  if (line && FileExists(filename))
  {
     if (access(filename,R_OK)==0)
     {
        cfile=fopen(filename, "r");
setuid
  • 1 个回答
  • 629 Views
Martin Hope
Jazz
Asked: 2012-06-13 08:40:20 +0800 CST

如何在 shell 脚本上使用 SetUID 以非 root 用户身份运行?

  • 5

我们公司的服务器运行的是 Ubuntu 12.04 (Precise) 和 Apache 2。我们安装了自定义的内部 Web 应用程序。我有一个 bash 脚本,它可以将对该应用程序的任何更新从源代码管理提取到服务器。系统上只有一个用户(脚本文件的所有者)拥有连接到源代码管理所需的 SSH 密钥,但我希望系统上的任何用户都能够运行此脚本来更新应用程序。

我做了一些研究,看起来这正是设计 setuid 位的目的,这样系统上的任何用户都可以运行脚本,并且脚本将以脚本所有者的用户 ID 运行. 然而,现代发行版似乎忽略了脚本的 setuid 位,因为如果执行 root 拥有的脚本会带来安全风险。

我想我可以通过将它变成一个 perl 脚本来暂时解决这个问题,但是从 Precise 开始,也不再有 suid-perl 包了。看起来这已被弃用。

我发现一些网站建议通过将用户添加到 sudoers 文件来解决这个问题,但是我的脚本不需要 root 权限来运行,并且它不会对文件系统的任何部分进行任何更改,除了网站,所以我宁愿不授予任何人 sudoer 特权。该脚本只需要脚本所有者的权限才能正常运行。

那么,使用(不同的、非 root、非 sudo)用户的 UID 执行脚本的首选现代方法是什么?

linux scripting ubuntu setuid suid
  • 1 个回答
  • 6274 Views
Martin Hope
Akilan
Asked: 2009-06-23 22:54:04 +0800 CST

为windows设置uid

  • 8

Windows(XP)是否有等效的set uid?“运行方式”选项每次运行时都需要管理员密码。我希望用户能够在不知道管理员密码的情况下运行该特定的可执行文件。我对 Windows 区域非常陌生。:(

windows-xp setuid
  • 4 个回答
  • 11035 Views
Martin Hope
churnd
Asked: 2009-06-05 11:41:51 +0800 CST

为 NFS 映射 UID

  • 3

我有一个通过 SMB/CIFS 和 AFP 服务的 Mac OS X 文件服务器。服务器是通过金三角方法的域客户端,但这会导致用户的 UID 非常大。这对我当前的设置来说很好,但我想让 NFS 也能正常工作。显然我需要做一些 UID 映射,但我不确定如何去做。有什么建议吗?

nfs mount setuid
  • 4 个回答
  • 20433 Views
Martin Hope
jes5199
Asked: 2009-05-13 15:50:37 +0800 CST

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

  • 5

我确信对此有一个众所周知的答案,但我似乎找不到它。

我如何使用户的 PHP 脚本(~user/public_html例如在 中)以所有者身份而不是以 (eg) 身份运行www-data?

假设 Apache、Linux 和 PHP 5。

php setuid
  • 1 个回答
  • 4737 Views

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