我已经使用主管来管理运行 Django 站点的 Gunicorn 进程,尽管这个问题可能与主管管理的任何事情有关。以前我是唯一管理和使用我们服务器的人,主管只是以 root 身份运行,我会supervisorctl restart myapp在需要时使用 sudo 运行。
现在我们的服务器要支持多个用户在不同的站点工作,而且每个项目都需要能够重启自己的gunicorn进程,而不能重启其他用户的进程。
我关注了这篇博文:
http://drumcoder.co.uk/blog/2010/nov/24/running-supervisorctl-non-root/
并且能够允许非 root 用户使用 supervisorctl,但现在任何人都可以重新启动其他人的进程。从表面上看,supervisor 没有办法进行每个用户的访问控制。
任何人对如何允许用户在没有 root 的情况下仅重启他们自己的进程有任何想法吗?
编辑:我们认为有些事情大约包括通过编写与根SUID位集,其中包含什么,但所拥有的脚本supervisorctl restart myapp,并把它在谁拥有用户的目录myapp。互联网似乎在说,如果操作不当,这样的脚本是不安全的。我们还考虑编写一个自定义守护进程,它会监听来自特定用户的命令,并在用户有权限的情况下重新启动主管进程。如果一个更简单的解决方案可行,这个想法似乎过于复杂。
我正在尝试以当前用户(=ayush)的身份运行 nginx。但是在设置user指令时出现以下错误:
Dec 11 22:26:13 manjaro nginx[17194]: 2015/12/11 22:26:13 [emerg] 17194#0: getgrnam("ayush") failed in /etc/nginx/nginx.conf:1
Dec 11 22:26:13 manjaro systemd[1]: nginx.service: Control process exited, code=exited status=1
Run Code Online (Sandbox Code Playgroud)
我的 nginx.conf :
user ayush;
worker_processes 1;
error_log /var/log/nginx/error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /code/server;
autoindex on;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = …Run Code Online (Sandbox Code Playgroud) 我已将jenkins用户添加到docker组中,认为它会允许 Jenkins 作业运行 Docker 命令。如果我切换到jenkins用户,我可以验证它是否有效(手动):
ubuntu@hostname:~$ ps aux | grep java
jenkins 2210 9.5 7.5 1950316 292896 ? Sl 00:01 1:00 /usr/bin/java -jar /data/jenkins/jenkins-1.586.war --httpPort=8080 -Xloggc:/var/log/jenkins/gc.log
ubuntu@hostname:~$ getent group docker
docker:x:999:jenkins
ubuntu@hostname:~$ ls -la /var/run/docker.*
-rw-r--r-- 1 root root 4 Oct 23 18:32 /var/run/docker.pid
srw-rw---- 1 root docker 0 Oct 23 18:32 /var/run/docker.sock
ubuntu@hostname:~$ sudo su -s /bin/bash jenkins
jenkins@hostname:/home/ubuntu$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Run Code Online (Sandbox Code Playgroud)
但是,在 Jenkins 构建/作业期间,它没有权限:
# …Run Code Online (Sandbox Code Playgroud) 我刚开始在一家从事 IT 支持的中小型公司工作。也许 150 个或更少的用户。
现在每个用户都拥有对自己机器的管理权限。这允许他们安装更新或他们想要的任何其他内容。
我已经厌倦了使用那些装满垃圾的用户机器。所以我的第一个想法是剥夺他们计算机的管理权限。这还将具有其他优势,例如防止网络上的大量偷渡式恶意软件等。
出现用户无法安装更新的问题。(尽管我发现大多数人都忽略了这些)
大公司如何处理所有客户端计算机上的软件更新?
编辑:Windows 环境。大多数服务器是 Windows Server 2003 Enterprise。客户端都是Windows。赢得 XP、Vista 和 7。
我是 Linux 管理新手。我创建了一个名为的用户webadmin,我想授予它在/var/www/html目录中读/写的权限。
我该怎么做?
我想递归地向目录上的特定用户授予写入权限,而不丢失该用户可能拥有的任何现有权限。我相信我可以使用类似的方法向用户授予写权限:
setfacl -R -m u:user:w dir/*
Run Code Online (Sandbox Code Playgroud)
但这样做的问题是它会剥夺用户可能已经拥有的任何现有权限。例如,如果用户在执行setfacl命令之前具有执行权限,它将用写权限替换执行权限。
如何在保留现有权限的同时向用户授予写权限?
在较早的 Windows Server 版本(2016 年之前)中,可以通过执行以下步骤授予非管理员用户运行计划任务的权限:
现在在服务器 2016 中,这不再起作用。你知道怎么做吗?
谢谢
相关帖子,没有得到回答,也没有帮助:允许非管理员用户在 Windows Server 2016 中运行计划任务
permissions scheduled-task user-permissions windows-server-2016 administrative-privileges
如何允许 Nagios 中的用户查看某些服务器的状态,但不禁用/启用任何内容?
我有一个管理员组之外的用户。如何为该(特定)用户授予服务控制管理器访问权限?
它就像来自以下链接的 SC_MANAGER_ALL_ACCESS:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms685981%28v=vs.85%29.aspx
我将在两个网络服务器之间设置 rsync。我的目标是从我的主服务器上备份数据,以防主服务器崩溃。我的问题与在主服务器上为 rsync 目的设置用户帐户有关。
出于显而易见的原因,我不想在这里使用我的“root”用户帐户。因此,我的目标是设置另一个仅用于 rsync 目的的帐户。据我了解,该用户需要对我需要传输的所有文件(apache 配置、用户 linux 文件、www-data)具有读取权限。
如何最好地设置此类权限?我应该授予 rsync 用户 root 权限还是有任何更安全的方法来为此类备份创建用户?
user-permissions ×10
linux ×4
permissions ×4
security ×2
docker ×1
jenkins ×1
nagios ×1
nginx ×1
rsync ×1
service ×1
setfacl ×1
supervisord ×1
update ×1
windows ×1