请输入您要查询的百科知识:

 

词条 fakeroot
释义

简介

fakeroot 可以用来模拟 root 权限,以便建立特定权限与档案拥有者的压缩文件案(tar, ar, .deb 等)。透过 LD_PRELOAD 的 dynamic loader 功能,用户不必实际拥有 root 权限。fakeroot最初是为了创建debian包使用的。

例如Debian在生成package的时候,编译完之后,不能立刻在当前环境执行make install,需要执行make install DESTDIR=$(pwd)/debian/tmp把生成的文件安装到build目录的里面$(pwd)/debian/tmp。然后使用那个目录里面的全部内容生成Debian包(实际上包里面还会包含control和maintainer script等)。这个包里面的文件所有者必须是root,所以需要以root来执行打包命令。但是应该避免在制作Debian包的时候使用root权限。为了解决这个矛盾,fakeroot被开发出来了。在fakeroot环境中,操作文件就像使用root操作文件一样。但是,实际上系统中文件的权限还是原来的权限。这个包里面的文件所有者必须是root,所以需要以root来执行打包命令。

fakeroot与sudo的区别

fakeroot不能获得root的权限,sudo可以。

fakeroot只是伪装成root,它不能改变需要root权限才能改变的文件,它只是让程序执行时按照有root权限的情况来运行,而对文件的操作实际上是在普通用户下进行的。

1
2 fakeroot tar cvf /tmp/local.tar /usr/local
sudo tar cvf /tmp/local.tar /usr/local上面两条命令都会在/tmp下建立local.tar,tar内的文件名都会以/开头,但前一条命令生成的文件属于当前用户,后一条命令生成的文件是root的。

示例

fakeroot 透过 faked 纪录每个档案权限。

以下的范例是由 fakeroot 执行 bash,并特定指令你可以注意到使用的指令必须拥有超级使用者权限才可正确执行。而这些权限都是暂时由 fakeroot 仿真并纪录。注销 bash 后,所有的档案依然保持原有权限。

$ whoami

joost

$ fakeroot /bin/bash

# whoami

root

# mknod hda3 b 3 1

# ls -ld hda3

brw-r--r-- 1 root root 3, 1 Jul 2 22:58 hda3

# chown joost:root hda3

# ls -ld hda3

brw-r--r-- 1 joost root 3, 1 Jul 2 22:58 hda3

# ls -ld /

drwxr-xr-x 20 root root 1024 Jun 17 21:50 /

# chown joost:users /

# chmod a+w /

# ls -ld /

drwxr-xr-x 20 root root 1024 Jun 17 21:50 /

# chown joost:users /

# chmod a+w /

# ls -ld /

drwxrwxrwx 20 joost users 1024 Jun 17 21:50 /

# exit

$ ls -ld /

drwxr-xr-x 20 root root 1024 Jun 17 21:50 //

$ ls -ld hda3

-rw-r--r-- 1 joost users 0 Jul 2 22:58 hda3

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 13:33:18