Yad*_*esh 2 linux privileges process
我想知道Linux中的进程如何决定它具有哪些特权?假设有一个二进制程序Read_File从文件读取/home/myname/data.txt并将其内容显示给STD输出,现在如何Read_File判断它是否有权读取data.txt,它检查哪种类型的ID来决定权限?
首先,一点背景:
该过程通常由特定用户运行.因此,例如,如果您自己登录并运行程序,它将以与您自己相同的权限运行.您可以使用stat或检查文件的权限ls -l.
statmalbert@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
Run Code Online (Sandbox Code Playgroud)
这里重要的信息是:
Access: (0644/-rw-r--r--) Uid: (11204/ malbert) Gid: (10513/domain users)
Run Code Online (Sandbox Code Playgroud)
这告诉您owner(rw-),group(r--)和其他所有人()的权限r--.它还会显示当前所有者id(Uid)和当前组ID(Gid).
缩写代表:
r =读访问权限w =写访问权限x =执行/遍历目录访问ls -lls -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]
Run Code Online (Sandbox Code Playgroud)
在这里,您可以看到与之相同的信息stat,但作为摘要.此外,UID和gid的大小被分解成名称(在这种情况下,malbert和domain users).您可以使用ls -u它们将这些视为数值.
如果您希望以与自己不同的用户身份运行应用程序,您可以使用su,sudo 或者您的应用程序本身可以删除特权并更改其运行的用户.这通常是系统守护进程执行操作的方式.
扩展属性要小心.使用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]
Run Code Online (Sandbox Code Playgroud)
请注意以下行:
-rwxr--+ 1 malbert domain users 0 2011-06-10 13:03 foo
Run Code Online (Sandbox Code Playgroud)
在+注册-rwxr--+点扩展属性.这些可能是ACL.SuSE文档中有关于ACL的优秀文档.如果需要,去看看吧.解释ACL肯定会爆炸这篇文章,所以我不讨论这些.
扩展属性也可以与文件系统相关.有关详细信息,请参阅chattr的手册页.
现在,作为旁注:这是StackOverflow.问题应该与发展有关.对于像这样的问题,有http://www.serverfault.com.但是你不知道,这不是一个开发问题,而是与操作系统有关,我觉得我应该回答;)
祝好运并玩得开心点!