gpt4 book ai didi

linux - linux中的进程如何决定它拥有的特权

转载 作者:太空狗 更新时间:2023-10-29 11:28:00 25 4
gpt4 key购买 nike

我想知道 Linux 中的进程如何决定它拥有哪些特权?

假设有一个二进制程序 Read_File 从文件 /home/myname/data.txt 中读取并将其内容显示到 STD 输出;现在,Read_File 如何决定它是否有权读取 data.txt,它检查什么类型的 id 来决定权限?

最佳答案

首先,一些背景知识:

进程通常由特定用户运行。因此,例如,如果您自己登录并运行该程序,它将以与您相同的权限运行。您可以使用 statls -l 检查文件的权限。

使用stat

malbert@dredg:/tmp$ stat foo
File: `foo'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fb00h/64256d Inode: 618 Links: 1
Access: (0644/-rw-r--r--) Uid: (11204/ malbert) Gid: (10513/domain users)
Access: 2011-06-10 13:03:27.181227226 +0200
Modify: 2011-06-10 13:03:27.181227226 +0200
Change: 2011-06-10 13:03:27.181227226 +0200

这里的重要信息是:

Access: (0644/-rw-r--r--)  Uid: (11204/ malbert)   Gid: (10513/domain users)

这告诉您所有者 (rw-)、组 (r--) 的权限和其他所有人 (r--)。它还会显示当前所有者 ID (Uid) 和当前组 ID (Gid)。

缩写代表:

  • r = 读取权限
  • w = 写入权限
  • x = 执行/遍历目录访问

使用 ls -l

ls -l 给你一个快速总结:

malbert@dredg:/tmp$ ls -l /tmp
total 48
drwx------ 2 malbert domain users 4096 2011-06-10 08:51 akonadi-malbert.zOSngu
-rw-r--r-- 1 malbert domain users 0 2011-06-10 13:03 foo
drwx------ 2 kdm nogroup 4096 2011-06-10 08:51 kde-kdm
drwx------ 3 malbert domain users 4096 2011-06-10 08:51 kde-malbert
[snip]

在这里您可以看到与 stat 相同的信息,但只是一个摘要。此外,uid 和 gid 被解析为名称(在本例中为 malbertdomain users)。您可以使用 ls -u 将它们视为数值。

如果您想以与自己不同的用户身份运行应用程序,您可以使用susudo 您的应用程序本身可以放弃特权并更改其运行的用户。这通常是系统守护进程做事的方式。

ACL/扩展属性

小心扩展属性。使用 ls -l 列出文件时,这些文件带有附加的 + 符号。例如:

malbert@dredg:/tmp$ ls -l
total 48
drwx------ 2 malbert domain users 4096 2011-06-10 08:51 akonadi-malbert.zOSngu
-rw-rwxr--+ 1 malbert domain users 0 2011-06-10 13:03 foo
drwx------ 2 kdm nogroup 4096 2011-06-10 08:51 kde-kdm
drwx------ 3 malbert domain users 4096 2011-06-10 08:51 kde-malbert
[snip]

注意下面一行:

-rwxr--+ 1 malbert domain users    0 2011-06-10 13:03 foo

-rwxr--+ 中的 + 符号指向扩展属性。这些可能是 ACL。有 an excellent document on ACLs在 SuSE 文档中。需要的话就去看看吧。解释 ACL 肯定会使这篇文章爆炸,所以我不会讨论这些。

扩展属性也可能与文件系统有关。参见 the man page of chattr有关这方面的更多信息。

现在,作为旁注:这是 StackOverflow。问题应该与发展有关。对于像这样的问题,有 http://www.serverfault.com .但是正如您所不知道的,这不是开发问题,而是与操作系统更相关,我觉得我还是应该回答 ;)

祝你好运,玩得开心!

关于linux - linux中的进程如何决定它拥有的特权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6305416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com