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

问题[sudo](server)

Martin Hope
Diagon
Asked: 2025-03-28 07:29:23 +0800 CST

sudoers :为一个用户工作,但不为另一个用户工作

  • 5

我在 Ubuntu 22.04 上,并且为用户 拥有以下 sodoers 文件btrbk,位于/etc/sudoers.d/btrbk,运行良好:

Cmnd_Alias BTRFS_FILESYSTEM_USAGE = /usr/bin/btrfs filesystem usage *
Cmnd_Alias BTRFS_SUBVOLUME_SHOW = /usr/bin/btrfs subvolume show *
Cmnd_Alias BTRFS_SUBVOLUME_LIST = /usr/bin/btrfs subvolume list *
Cmnd_Alias BTRFS_SUBVOLUME_SNAP = /usr/bin/btrfs subvolume snapshot *
Cmnd_Alias BTRFS_SUBVOLUME_DELETE = /usr/bin/btrfs subvolume delete *
Cmnd_Alias BTRFS_SEND = /usr/bin/btrfs send *
Cmnd_Alias BTRFS_RECEIVE = /usr/bin/btrfs receive *
Cmnd_Alias READLINK = /usr/bin/readlink *
Cmnd_Alias TEST = /usr/bin/test *

btrbk ALL= NOPASSWD: BTRFS_FILESYSTEM_USAGE, BTRFS_SUBVOLUME_SHOW, BTRFS_SUBVOLUME_LIST, BTRFS_SUBVOLUME_SNAP, BTRFS_SUBVOLUME_DELETE, BTRFS_SEND, BTRFS_RECEIVE, READLINK, TEST

另一方面,我有dev位于 的用户的以下内容/etc/sudoers.d/dev,其中大部分是 的子集btrbk,但全部失败:

Cmnd_Alias BTRFS_FILESYSTEM_SHOW_DEV = /usr/bin/btrfs filesystem show *
Cmnd_Alias BTRFS_FILESYSTEM_USAGE_DEV = /usr/bin/btrfs filesystem usage *
Cmnd_Alias BTRFS_SUBVOLUME_SHOW_DEV = /usr/bin/btrfs subvolume show *
Cmnd_Alias BTRFS_SUBVOLUME_LIST_DEV = /usr/bin/btrfs subvolume list *

Cmnd_Alias TRANSMISSION_RESTART_DEV = /usr/bin/systemctl restart transmission-daemon.service

dev ALL= NOPASSWD: BTRFS_FILESYSTEM_SHOW_DEV, BTRFS_FILESYSTEM_USAGE_DEV, BTRFS_SUBVOLUME_SHOW_DEV, BTRFS_SUBVOLUME_LIST_DEV
dev ALL= NOPASSWD: TRANSMISSION_RESTART_DEV

该文件/etc/soders确实有正确的

@includedir /etc/sudoers.d

并且,sudoers和 的权限为sudoers.d/*440,所有者为root。 sudo -lU btrbk与 的输出相比, 的输出dev似乎是正确的:

$ sudo -l -U btrbk
Matching Defaults entries for btrbk on ThinkPad:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty

User btrbk may run the following commands on ThinkPad:
    (root) NOPASSWD: /usr/bin/btrfs filesystem usage *, /usr/bin/btrfs subvolume show *, /usr/bin/btrfs subvolume list *, /usr/bin/btrfs
        subvolume snapshot *, /usr/bin/btrfs subvolume delete *, /usr/bin/btrfs send *, /usr/bin/btrfs receive *, /usr/bin/readlink *,
        /usr/bin/test *

$ sudo -l -U dev
Matching Defaults entries for dev on ThinkPad:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty

User dev may run the following commands on ThinkPad:
    (ALL : ALL) ALL
    (root) NOPASSWD: /usr/bin/btrfs filesystem show *, /usr/bin/btrfs filesystem usage *, /usr/bin/btrfs subvolume show *, /usr/bin/btrfs subvolume
        list *
    (root) NOPASSWD: /usr/bin/systemctl restart transmission-daemon.service

对于用户dev,btrfs 给出权限失败:

$ btrfs filesystem show
ERROR: cannot open /dev/mapper/luks.root: Permission denied
ERROR: cannot open /dev/mapper/ub.luks.root: Permission denied
ERROR: cannot open /dev/mapper/luks.data: Permission denied
ERROR: cannot open /dev/mapper/sd.luks.backup: Permission denied

对于传输也类似,会弹出一个身份验证窗口,当取消时...

$ systemctl restart transmission-daemon.service 
Failed to restart transmission-daemon.service: Access denied
See system logs and 'systemctl status transmission-daemon.service' for details.

$ journalctl -x -b0 | grep transmission | tail -n1
Apr 03 15:38:53 ThinkPad polkitd(authority=local)[2612]: Operator of unix-session:3 FAILED to authenticate to gain authorization for action org.freedesktop.systemd1.manage-units for system-bus-name::1.1042 [systemctl restart transmission-daemon.service] (owned by unix-user:dev)

有人可以就为什么会出现这种情况提出建议吗?

sudo
  • 1 个回答
  • 154 Views
Martin Hope
Dagelf
Asked: 2022-04-20 12:22:03 +0800 CST

是否可以从命令行锁定 sudo,而无需编辑 sudoers 或注销并重新登录?

  • 9

当您运行时sudo,它不会在您上次运行后至少 5 分钟内询问密码。Defaults timestamp_timeout=0您可以通过添加到sudoerswith来更改此超时sudo visudo。这也立即将其锁定。

我的问题是,是否有办法只做一次,而没有visudo.

linux sudo
  • 1 个回答
  • 938 Views
Martin Hope
Charlweed
Asked: 2022-04-14 11:09:39 +0800 CST

Linux bash 让非特权用户仅拥有一个特定目录的内容的方式?

  • 0

我希望特定用户递归更改特定目录的所有内容的所有者和组,并且仅更改该目录。目录是一种“收件箱”,服务在其中写入文件和子目录。

目前,我有一个管理员sudo chown,但我希望目标所有者自己做,而不需要该用户拥有更多权限。假设原所有者是“headsman”,最终所有者应该是“audience”。两个用户都不在同一个组中。

sudo chown -R audience:watchers /usr/files/pathofdir 不太对,因为我不希望观众有无限的权限使用 chown。我的第一个猜测是尝试在 /usr/bin/chown 和 /usr/bin/chgrp 的许可下向 /etc/sudoers 添加“受众”。但这太权威了。

我想专门为观众编写一个脚本,但我不知道如何使该脚本具有正确的权限,仅此而已。

有什么好方法可以做到这一点?

permissions sudo chown
  • 2 个回答
  • 41 Views
Martin Hope
alex.b.bg
Asked: 2022-02-21 09:31:29 +0800 CST

用于服务器管理的 root 登录或 sudo 用户?

  • 19

我试图了解直接与 root 进行 ssh 或在维护服务器的上下文中创建辅助 sudo 用户之间的技术论点/安全含义。为了澄清,我们谈论的是由单个管理员拥有的服务器。对于在机器上工作的多人来说,很明显,每个真实的人都有唯一的用户和细粒度的权限有审计跟踪的好处。

我的想法是,如果这是一个桌面站,这是有道理的,建议使用非 root 用户进行日常工作,但在服务器上,您通常登录来维护它,并且 99% 的时间您的所有活动都需要 root权限。

那么创建一个“代理”用户是否有任何安全优势,您无论如何都要 sudo 到 root,而不是直接提供对 root 的 ssh 访问?

我能想到的唯一好处是通过默默无闻的安全性,即机器人通常会尝试探测“root”用户。但是从我的角度来看,如果sudoers的用户被盗用了,就和盗用root用户一样,所以游戏结束。

此外,大多数远程管理框架、NAS 系统、管理程序都鼓励使用 root 用户进行 Web 登录。

linux security ssh root sudo
  • 9 个回答
  • 3938 Views
Martin Hope
Patrick Bucher
Asked: 2021-07-29 10:23:05 +0800 CST

使用 ACME 用户重新加载 Apache

  • 1

我在 Debian 10 (Buster) 和 Apache 2.4.38 上运行一个 Web 服务器。我创建了一个acme运行脚本以更新 TLS 证书的特殊用户。

$ cat /etc/passwd | grep ^acme
acme:x:1002:1002::/var/acme:/usr/bin/nologin
$ cat /etc/group | grep ^acme
acme:x:1002:

acme更新证书后,应允许此用户重新加载 Apache 2 配置。所以我将此行添加到我的/etc/sudoersusing 中visudo(8):

%acme   ALL=(root) NOPASSWD: /etc/init.d/apache2 reload

不幸的是,这不起作用:

$ sudo -u acme /etc/init.d/apache2 reload
[....] Reloading apache2 configuration (via systemctl): apache2.serviceFailed to reload apache2.service: Access denied                                                                                                                  
See system logs and 'systemctl status apache2.service' for details.                                                                                                                                                                     
 failed!

我错过了什么吗?

sudo apache2 debian-buster
  • 1 个回答
  • 54 Views
Martin Hope
alvan
Asked: 2021-07-26 08:18:49 +0800 CST

CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh 不工作

  • 1

试图做一个web界面IPtables管理。

创建了一个文件test.php

$output = shell_exec('sudo bash /usr/bin/iptables.sh 2>&1');
echo $output;

给 /usr/bin/iptables.sh NOPASSWD 这样我就可以通过 apache 使用 sudo 执行文件,而无需使用密码

sudo iptables -L

sudoers 文件:

apache ALL=(root) NOPASSWD: /usr/bin/iptables.sh

但我仍然收到错误

我们相信您已经收到了本地系统管理员的常规讲座。它通常归结为以下三件事:#1) 尊重他人的隐私。#2) 打字前三思。#3) 权力越大,责任越大。sudo:需要终端才能读取密码;使用 -S 选项从标准输入读取或配置 askpass 助手{"mode":"full","isActive":false}

但是,如果我使用

apache ALL=(root) NOPASSWD: ALL

一切正常。

我仔细检查了我的目录并使用了确切的路径

[root@CentOS bin]# readlink -f iptables.sh
/usr/bin/iptables.sh

这里超级无能,有人可以帮我指路吗?:'(

bash shell sudo apache-2.4 centos8
  • 2 个回答
  • 474 Views
Martin Hope
Codejoy
Asked: 2021-06-12 08:59:13 +0800 CST

试图让 sudoers 在 openldap/centos7 上工作

  • 0

我在这里关注本教程:

https://kifarunix.com/how-to-configure-sudo-via-openldap-server/

很多都是有道理的,但对于 openldap 来说仍然是新的,所以其中一些也很神秘。我让 openldap 运行,用户在其他机器上进行身份验证,甚至使用 phpldapadmin。所以是时候让 sudoers 为一些用户工作了。我运行了sudoers2ldif命令,得到了一个类似于教程中显示的文件,并进行了相应的编辑。当它运行ldapadd -Y EXTERNAL -H ldapi:/// -f sudoers_modified.ldif时失败并出现错误:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=defaults,ou=SUDOers,dc=apo,dc=local"
ldap_add: Invalid syntax (21)
    additional info: objectClass: value #1 invalid per syntax

21 是 .ldif 文件的行号吗?或其他一些错误代码...也不知道 objectClass 命令上的无效内容...发布的是下面的 ldif 文件。

dn: cn=defaults,ou=SUDOers,dc=bbb,dc=local
objectClass: top
objectClass: sudoRole
cn: defaults
description: Default sudoOption's go here
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: match_group_by_gid
sudoOption: always_query_group_plugin
sudoOption: env_reset
sudoOption: env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
sudoOption: env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
sudoOption: env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
sudoOption: env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
sudoOption: env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
sudoOption: secure_path = /sbin:/bin:/usr/sbin:/usr/bin

dn: cn=sudo,OU=SUDOers,dc=bbb,dc=local
objectClass: top
objectClass: sudoRole
cn: sudo
sudoUser: bobby
sudoHost: ALL
sudoRunAsUser: ALL
sudoCommand: ALL

也许 sudoRole 需要以某种方式添加?我为此成功添加的另一个 ldif 是:

dn: ou=SUDOers,dc=bbb,dc=local
objectCLass: top
objectClass: organizationalUnit
ou: SUDOers
description: BBB SUDOers container

我在这里找到了另一个教程:

https://forums.centos.org/viewtopic.php?t=73807

由于类似的信息略有不同,我没有使用这个,因为发布的一个 ldif 文件有很多东西说它是“自动生成的”,我不知道它是如何或从哪里来的。

在一个答案之后,我相信上面链接中显示的文件包含数据:

vi /testfolder/sudoers.ldif
#------------------------
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 b181185c
dn: cn=sudoers,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: sudoers
olcAttributeTypes: {0}( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s
) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Substrin
gsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {1}( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s
) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Substring
sMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {2}( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Com
mand(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4
.1.1466.115.121.1.26 )
olcAttributeTypes: {3}( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(
s) impersonated by sudo (deprecated)' EQUALITY caseExactIA5Match SYNTAX 1.3
.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {4}( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Opti
ons(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466
.115.121.1.26 )
olcAttributeTypes: {5}( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'U
ser(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.
1466.115.121.1.26 )
olcAttributeTypes: {6}( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC '
Group(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.
1.1466.115.121.1.26 )
olcAttributeTypes: {7}( 1.3.6.1.4.1.15953.9.1.8 NAME 'sudoNotBefore' DESC 'S
tart of time interval for which the entry is valid' EQUALITY generalizedTim
eMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.12
1.1.24 )
olcAttributeTypes: {8}( 1.3.6.1.4.1.15953.9.1.9 NAME 'sudoNotAfter' DESC 'En
d of time interval for which the entry is valid' EQUALITY generalizedTimeMa
tch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1
.24 )
olcAttributeTypes: {9}( 1.3.6.1.4.1.15953.9.1.10 NAME 'sudoOrder' DESC 'an i
nteger to order the sudoRole entries' EQUALITY integerMatch ORDERING intege
rOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
olcObjectClasses: {0}( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' DESC 'Sudoer
Entries' SUP top STRUCTURAL MUST cn MAY ( sudoUser $ sudoHost $ sudoCommand
$ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ sudoOrder $ su
doNotBefore $ sudoNotAfter $ description ) )

一旦我意识到该文件是我添加它的架构并最终使这一切正常工作,因此我接受了答案,即使我不得不深入研究我正在做的事情。顺便说一句,我的 ldap 中没有使用架构文件,我必须通过 ldapadd 添加它

sudo openldap centos7
  • 1 个回答
  • 361 Views
Martin Hope
Rayen Ben Said
Asked: 2021-04-17 04:11:48 +0800 CST

如何创建脚本外壳命令

  • 0

大家好,有人可以帮我用 scrit shell 获取这个命令吗?

root@VPS:/work# cpan
Loading internal logger. Log::Log4perl recommended for better logging

CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.

Would you like to configure as much as possible automatically? [yes] yes


Autoconfiguration complete.

commit: wrote '/root/.cpan/CPAN/MyConfig.pm'

You can re-run configuration any time with 'o conf init' in the CPAN shell
Terminal does not support AddHistory.

To fix enter>  install Term::ReadLine::Perl


cpan shell -- CPAN exploration and modules installation (v2.22)
Enter 'h' for help.

cpan[1]>install Geo::IP
monitoring bash sudo awstats cpan
  • 1 个回答
  • 59 Views
Martin Hope
Kingindanord
Asked: 2021-04-05 15:41:50 +0800 CST

允许用户重新启动服务

  • 0

我正在尝试在没有 root 身份的情况下重新启动服务。这是正在使用命令的代码片段

template {
  source      = "{{vault_template_dir}}/agent.crt.tpl"
  destination = "{{vault_tls_dir}}/agent.crt"
  command     = "/usr/bin/systemctl restart vault.service"
}

在研究和阅读了类似的问题之后,我尝试通过编辑/etc/sudoers文件并添加以下行来为我使用的组(user=vault,group=vault)提供一个有限的 sudo 命令:

%vault ALL=(root) NOPASSWD: /usr/bin/systemctl restart vault.service

但是,当我尝试运行命令时仍然出现错误。错误日志文件:

Apr  4 23:27:41 xxxxxx vault[133973]: Failed to restart vault.service: Interactive authentication required.

保险库服务

[Unit]
After=network.service hostname.service consul-init.service consul.service
Description="Hashicorp Vault - A tool for managing secrets"
Documentation=https://www.vaultproject.io/docs/
StartLimitInterval=200
StartLimitBurst=5

[Service]
User=vault
Group=vault
ExecStart=/usr/bin/vault server -config="{{vault_server_config_file}}"
ExecReload=/usr/bin/kill -HUP $MAINIP
CapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCK
LimitNOFILE=65536
LimitMEMLOCK=infinity
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

有人可以帮我解决这个问题吗?

sudo systemd systemctl
  • 1 个回答
  • 319 Views
Martin Hope
kurupt89
Asked: 2021-03-29 02:34:55 +0800 CST

在 cron 中运行 newusers util 来批量创建用户不会运行 [重复]

  • 0
这个问题在这里已经有了答案:
为什么我的 crontab 不工作,我该如何排除故障? (7 个回答)
去年关闭。

我正在尝试使用newusersubuntu 18 上的 util 从文件中批量创建一些用户。

以 root 用户身份在 cron 中运行时,没有任何反应。当我手动运行命令时,它会按预期工作并在文件中创建用户。这是我的 crontab,每分钟运行一次以进行测试:

*/1 * * * * newusers /tmp/ftp_users.txt

像这样手动运行它很好newusers /tmp/ftp_users.txt。

我不知道让这个命令在 cron 中运行我缺少什么。

ubuntu cron permissions root sudo
  • 2 个回答
  • 24 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