小编Jak*_*ake的帖子

为什么有很多账号?我是唯一的用户

我正在运行 Ubuntu 12.04 桌面系统。到目前为止,我只安装了一些程序(我有 sudo 权限)。

  1. 当我查看系统上的用户列表时,我看到一个很长的列表,比如超过 20 个用户——这些用户是什么时候创建的(例如 daemon、sys、sync、games、pulse 等)?这些与正在安装的新程序有什么关系?

  2. 如果我在我的系统上运行一个程序,它应该使用我的 UID 运行。但是在执行ps 时,我看到许多其他程序以不同的 UID 运行(如 root、daemon、avahi、syslog、colord 等)——这些程序是如何以不同的 UID 启动的?

process users software-installation accounts

16
推荐指数
3
解决办法
8304
查看次数

shell 如何执行程序?

如果我使用 gcc 编译一个程序,并尝试从 bash shell 执行它,那么 bash 执行它所遵循的确切步骤顺序是什么?

我知道fork()execve()loaderdynamic linker(和其他东西)都参与,但也有人给的步骤的确切顺序和一些适合阅读的参考?

编辑:

从答案来看,这个问题似乎意味着很多可能性。我想缩小到一个简单的案例:

(test.c 只打印 hello world)

$ gcc test.c -o test
$ ./test
Run Code Online (Sandbox Code Playgroud)

上述案例(./test)中的步骤是什么,具体涉及一些子进程中的bash启动程序,进行加载,链接等?

shell process executable

11
推荐指数
1
解决办法
6267
查看次数

zsh 报告的“trace trap”是什么意思?

我正在尝试使用 zsh shell 在 UNIX 中运行设置 UID 根程序。但我不断收到此消息

\n\n
$ ./progExe\nzsh: trace trap ./progExe\n
Run Code Online (Sandbox Code Playgroud)\n\n

谁能告诉我 \xe2\x80\x9czsh: 跟踪陷阱\xe2\x80\x9d 是什么意思?

\n

zsh signals

9
推荐指数
1
解决办法
3万
查看次数

关于 Linux 中“挂载”一词的混淆

我正在阅读mountclone的手册页。

我知道 mount 用于将目录层次结构添加到挂载点(目录)。

在 clone 的手册页中,在 CLONE_NEWNS 部分下,它们将挂载称为进程所看到的文件层次结构。

我的问题是,术语“挂载”是否用于指进程看到的目录层次结构中的各个目录,“挂载点”是否用于指代可以挂载文件系统的目录?

linux mount terminology

8
推荐指数
1
解决办法
615
查看次数

Bash - Shell 变量中的函数

我正在阅读这篇关于在 bash shell 变量中使用函数的文章。我观察到要使用 shell 函数,必须导出它们并在子 shell 中执行它们,如下所示:

$ export foo='() { echo "Inside function"; }'
$ bash -c 'foo'
Inside function
Run Code Online (Sandbox Code Playgroud)

我想问一下是否可以在 bash shell 变量中定义函数,以便它们可以在当前 shell 中执行而不使用 export & running new shell?

bash

7
推荐指数
2
解决办法
5633
查看次数

互不信任的应用程序文件如何在 Linux 中得到保护

我正在运行 Ubuntu Linux 机器。当我运行 Chrome 和 Firefox 等不同供应商编写的应用程序时,我注意到它们都使用我的 uid 运行。但如果是这样,他们在文件系统上创建的任何文件也将具有相同的 uid。那么在 linux 中,两个互不信任的应用程序如何使它们的文件彼此安全?

  • 应用 A 使用 ACL 策略仍可能允许应用 B 读取 A 的文件 - 通过(用户、组、其他)的用户部分
  • 应用程序是否需要使用加密来保护彼此的数据?

security files application

5
推荐指数
1
解决办法
724
查看次数

Linux - 带有 init 的 IPC

init 进程作为 linux 系统上所有进程的祖先存在。这个过程是否有任何类型的 IPC 入口点?其他进程是否曾经出于任何原因使用 init 执行 IPC?

init

4
推荐指数
1
解决办法
402
查看次数

Linux PID 命名空间

我有一个关于 Linux PID 命名空间中进程的 PID 数量的问题。

假设:(NS = 命名空间)

P1 (PID NS1) -> 克隆 -> P2 (PID NS2) -> 克隆 -> P3 (PID NS3)

P3 有多少个 PID?

我认为以下内容,但我不确定是否正确:

  • 一个用于 NS3
  • 主机一台
  • 一个用于 NS2
  • 一个用于 NS1

谢谢。

linux namespace

2
推荐指数
1
解决办法
1096
查看次数

启动后进程启动

我知道以下是进程在 Linux 中启动的方式

  • 来自 init.d(或类似的)
  • 从外壳(由用户)
  • 由正在运行的本机守护程序分叉

是否有可能在 Linux 上启动一个进程,并且它不属于上述类别?例如,是否可以在用户不知情的情况下启动进程?

process

2
推荐指数
1
解决办法
313
查看次数

Linux - 为什么 su 和 sudo 二进制文件需要设置 UID 根?

我正在努力为上述问题找到正确的原因。我的理解是:

  • sudo需要读取/etc/sudoers只有root才能读取的文件,这就是为什么它需要设置-UID root
  • su将要创建一个具有不同真实有效 UID 的新 shell,并且需要检查密码。要检查密码,它需要读取/etc/shadow,这就是为什么它需要设置-UID root。检查密码后,它需要调用setuid()分叉进程,并且要使用任意UID参数,其父进程必须具有root作为有效UID,因此这也是另一个原因。

以上理由是否正确?

setuid su sudo

1
推荐指数
1
解决办法
361
查看次数