如何nginx在 Ubuntu 中检查守护进程的用户和组?
或者为在 Ubuntu 中运行的守护进程查找用户和组的语法是什么?
我有以下 launchctl 命令作为 .plist 文件。它已加载并设置为每天运行一次,但是它需要以 root 身份运行,我不知道如何验证这一点。
此外,这个 cron 作业基本上 CD 到一个目录中并运行一个命令。我确信 launchd 有更好的方法来指定它应该运行命令的目录。
我怎么知道它是以 root 身份运行的,有没有更好的方法来编写它?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>dev.project.frontpage.feedparser</string>
<key>ProgramArguments</key>
<array>
<string>cd</string>
<string>/Users/eman/src/project/trunk/includes/;</string>
<string>./feed-parser.php</string>
<string>-c</string>
<string>./feed-parser-config.xml</string>
</array>
<key>QueueDirectories</key>
<array/>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>12</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>WatchPaths</key>
<array/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud) 当我sudo以普通的非特权用户身份运行时,它会询问我的密码,而不是 root 密码。这通常很方便,但它减少了某人为了以 root 身份运行命令而必须拥有的信息量。那么我怎样才能sudo要求输入 root 密码而不是调用用户的密码呢?
我知道它可以用 in 中的一行来完成/etc/sudoers,但我似乎永远无法正确解析手册页中的 BNF 语法来确切地找出要写的内容。
我需要wget一些东西(在 cwd 中产生一个压缩文件),然后我必须提取它,然后做一些复制/移动/修改的事情,也许最后执行一个脚本(从下载的存档)。
现在,所有这些任务直接(wget、提取等)或间接(运行脚本)都会导致创建文件和目录(都在当前工作目录中)。我做所有这些事情root(无法与最终的所需用户一起做)。
问题是:在进程中创建的任何东西都归 root 或 sudo 用户所有。当我完成(有时在中途)时,我必须发出一系列chmod和chown命令来使事情正确。
现在,如果能以某种方式告诉系统“从现在起,当我以 root 用户身份发出命令时创建的任何文件或目录,您将创建具有这样那样的所有权和权限”,那就太好了。
我刚刚在我的 Ubuntu 机器(ext3 文件系统)上注意到,从文件中删除写权限并不会阻止 root 写入它。
这是 UNIX 文件权限的一般规则吗?还是特定于 Ubuntu?还是我的机器上配置错误?
# 触摸 abc
# chmod ugo-w abc
# Python
Python 2.6.4(r264:75706,2009 年 12 月 7 日,18:45:15)
[GCC 4.4.1] 在 linux2 上
输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。
>>> open('abc','w').write('AAA\n')
>>>
#猫abc
AAA
如果我从普通用户帐户执行此操作,则写入文件将失败(如预期)。
这是正常行为吗?
有没有办法防止 root 意外写入文件?(最好使用普通的文件系统机制,而不是 AppArmor 等)
请教我一些我绝对不明白的东西。
注意:我知道root 可以完全控制系统,例如,可以更改任何文件的权限。我的问题是当前设置的权限是否对以 root 身份运行的代码强制执行。这个想法是 root 用户防止她/他自己意外写入文件。
注意:我也明白不应以 root身份登录进行正常操作。我刚刚注意到这种行为,并正在询问您。
如何让脚本以 root 身份执行,不管是谁执行的?
我阅读了有关 setuid 的信息,但我不确定如何执行此操作。
我使用的是 Linux、Ubuntu 12.04 LTS。
我需要安装一个包。为此,我需要 root 访问权限。但是系统说我不在 sudoers 文件中。当试图编辑一个时,它会抱怨!如果我没有编辑权限,我应该如何将自己添加到 sudoers 文件中?
我已经安装了这个系统,只有管理员。我能做什么?
编辑:我已经试过visudo了。它首先要求我在 sudoers 中。
amarzaya@linux-debian-gnu:/$ sudo /usr/sbin/visudo
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for amarzaya:
amarzaya is not in the sudoers file. This incident will be reported.
amarzaya@linux-debian-gnu:/$
Run Code Online (Sandbox Code Playgroud) 几天前,我的一个朋友想告诉我,即使我不告诉他我的密码,他也可以使用我的 linux。
他进入 GRUB,选择了恢复模式选项。我的第一个问题是他已经可以访问我的文件(只读)。他试图做 passwd 但失败了。然后他进行了某种重新安装(我猜这给了他写权限),之后他就可以更改我的密码。
为什么这是可能的?我个人认为这是一个安全问题。在我工作的地方,有几个人使用 linux,但他们都没有设置 BIOS 密码或其他类型的安全墙。
在一些自动更新(或被黑客入侵?)之后,我有很多事情都坏了,而且还有一个很大的问题需要解决,因为我不能再以 root 身份登录了。
我尝试过的:
我不知道发生了什么。有什么建议吗?
最近,我通过 /etc/hostname.conf 更改了 sudoers 文件和主机名。更改此文件后,我的 sudo 命令需要花费大量时间。此外,它说 sudo 无法解析主机 kaagini(我机器的主机名)。
为什么 sudo 必须知道主机名才能为某些东西提供权限?
我的 sudoers 文件有一个命令“默认值 env_reset”。我看到了一些类似的问题,但这里的上下文不是远程登录。错误显示在本地主机上。
该问题的初始谷歌搜索表明 /etc/hosts 文件必须具有 127.0.0.1 的实际主机名。这解决了我的问题。但我的实际问题是:为什么我们需要这个 sudo ?无论登录位置如何,sudo 都应该工作。