我有一个非 root 用户,我想授予他们 sudo 权限来启动和停止(等)systemd 服务文件,而无需密码。
\n我尝试在/etc/sudoers.d/servicename (其中[username]和[servicename]是实际名称)中创建以下文件:
[username] ALL=(root) NOPASSWORD: systemctl start [servicename]\n[username] ALL=(root) NOPASSWORD: systemctl stop [servicename]\n[username] ALL=(root) NOPASSWORD: systemctl restart [servicename]\nRun Code Online (Sandbox Code Playgroud)\n(对许多系统命令重复,例如reload// try-restart/ enable\xe2\x80\xa6)
但visudo告诉我这是一个语法错误。我该如何解决这个问题?
我想放入脚本(正在以非 root 用户身份运行)sudo systemctl stop [servicename]。
Ubuntu Linux 18.04,来自 ubuntu 的 systemd(这是 v245)。我也希望它能在 Ubuntu 20.04 上运行。
\n我希望能够在我管理的系统上为用户提供访问文件 X 的能力,使用命令 Y 使用 sudo。
有没有办法做到这一点,同时允许对命令 Y 的参数有一定的灵活性?
下列:
用户 ALL=NOPASSWD: /usr/bin/X /path/to/Y
将允许用户以 Y 作为唯一参数运行 X,但是如果我想允许用户为 X 提供一些可选参数怎么办?
这个:
用户 ALL=NOPASSWD: /usr/bin/X * /path/to/Y
不安全,因为用户可以使用通配符将其他文件参数传递给 X。我需要一些更严格的限制。
我可以用 sudo 简单地做到这一点吗?还是我需要使用不同的方法?
出于安全原因,我正在管理一个 CentOS 4.7 服务器,其中有几个无壳用户帐户。但有时无论如何我都需要一个用户外壳来进行安装。获得登录外壳的最佳方法是什么?刚才我用
sudo –u <user> bash –rcfile /home/<user>/.bash_profile
Run Code Online (Sandbox Code Playgroud)
但这并不完美。许多环境变量没有初始化。
埃里希
sudo 和 sudo -i 之间的特权区别是什么?
有了sudo它
$sudo echo "search foo.bar.baz" >> /etc/resolv.conf
bash: /etc/resolv.conf: Permission denied
Run Code Online (Sandbox Code Playgroud)
...与 sudo -i
$sudo -i
#echo "search foo.bar.baz" >> /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
...有用。特权是:
drwxr-xr-x 166 root root 12288 2009-10-17 21:02 .
-rw-r--r-- 1 root root 42 2009-10-17 20:55 /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
我很惊讶这些命令有不同的行为,是什么导致 justsudo版本失败?
如何设置它以便对于su当前登录的同一用户,即
foo$ su -c 'something' foo
Run Code Online (Sandbox Code Playgroud)
不需要密码?这不会添加或删除任何安全性,因为它应该是一个 noop。
想要这个的原因是我希望有一类“低于”root 的用户可以管理在该用户下运行的机器上的某些特定服务,例如,news或者mysql(检查他们的数据,更改配置,重新启动等.) 这些用户将获得sudo该帐户的权限,并且通常运行良好,除了在某些情况下 init 脚本调用
su -c 'start_daemon ...' daemonuser
Run Code Online (Sandbox Code Playgroud)
这使这个计划落空。当然,我可以更改 init 脚本或添加额外的sudo权限,但我想避免此类异常,因为从长远来看,它们是一团糟。
的配置su在 PAM 中,所以正确的魔法可能就在那里。
我正在编写一个只能由用户在 sudo 用户列表中运行的 shell 脚本,这样做的合适方法是什么?
我在想的是在 shell 脚本中,尝试在系统目录中创建一个虚拟文件,例如 /var/run/ 并将其删除,因此不在 sudo 列表中的用户将收到权限错误,但我相信必须有一个更合适的方法,最好检测用户是否在 shell 脚本中的 sudo 列表中。谢谢你的帮助
是否可以将 sudo 配置为要求输入 root 密码而不是用户密码?
服务器配置了一个 root 用户和一个具有有限权限的简单用户(我们称他为简单用户),用于部署托管在服务器上的所有应用程序。用户 simple 不在 sudoers 列表中,因此
$ sudo command
Run Code Online (Sandbox Code Playgroud)
不会工作,因为简单的密码不能授予他 root 权限。
有时,我需要通过 Capistrano(一种 ruby 部署工具)运行一些需要 root 访问权限的脚本,并且编写脚本以便以 root 身份登录、运行脚本然后注销非常困难。我希望能够执行以下语句
$ sudo god restart tasks-group
Run Code Online (Sandbox Code Playgroud)
并让 Capistrano 提示我输入 root 密码。目前,Capistrano 提示输入部署用户密码,这显然是一个非管理员帐户。
我有一个 Linode 的 VPS。我部署了 Ubuntu 10.04 服务器。我添加了一个用户并将其放在 sudoers 文件中。当我以用户身份写作时
apti <TAB>
Run Code Online (Sandbox Code Playgroud)
它与选项卡一起完成
aptitude <TAB>
Run Code Online (Sandbox Code Playgroud)
但是当我继续
aptitude upd <TAB>
Run Code Online (Sandbox Code Playgroud)
它没有完成,但在我的桌面上效果很好。更糟糕的是,如果我用 sudo 尝试相同的命令
sudo apti <TAB>
Run Code Online (Sandbox Code Playgroud)
不起作用我检查了 .basrc、.profile/.bashrc 和 /etc/bash.basrc 文件,但它们都没有被注释掉,所以出了什么问题。顺便说一句,当我扎根时它可以工作
我的 ~/bashrc
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
Run Code Online (Sandbox Code Playgroud) 任何人都可以解释或指出 sudo 命令的使用,也许操作系统给出 su 命令。是不是解决了超级用户登录的问题。
让我重新表述一下 1) sudo 比 su 有什么优势?2) sudo 的显着特点是什么?
我在我的服务器上配置了 ssh,有时我必须在它上面运行一些图形应用程序。当我与-X选项连接时,它工作得很好。我可以运行,例如google-chrome。但是,如果我将用户更改为sudo -i -u other_user,则无法以该用户身份运行 GUI 应用程序。
我认为它与环境和显示有关,但不知道该怎么做。我尝试添加-E,但随后收到错误消息,提示我无法将其与-i. 如何以其他用户身份通过 ssh 运行 GUI 应用程序?