fakeroot与sudo的区别

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来执行打包命令。

2fakeroot与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的。

3示例

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

时间: 2024-07-28 12:39:49

fakeroot与sudo的区别的相关文章

Linux实际操作中命令 su 与 sudo 的区别

------------------------------------------------------------------------------------------------ 首先我先做了一些更改操作: 换到root用户的操作=>sudo su输入当前用户的密码: ****** 修改root密码的操作=>passwd 123456 /* root密码已改为123456 */ [email protected] chenwei <www.chenwei.ws>---

实际操作中命令 su 与 sudo 的区别(转)

------------------------------------------------------------------------------------------------ 首先我先做了一些更改操作: 换到root用户的操作=>sudo su输入当前用户的密码: ****** 修改root密码的操作=>passwd 123456 /* root密码已改为123456 */ [email protected]or chenwei <www.chenwei.ws>-

su与su -,sudo 的区别

"sudo" , "su" , "su - " 区别: 一.sudo是一种权限管理机制,依赖于/etc/sudoers,其定义了授权给哪个用户可以以管理员的身份能够执行什么样的管理命令: 格式: sudo -u USERNAME COMMAND 默认情况下,系统只有root用户可以执行sudo命令.需要root用户通过使用visudo命令编辑sudo的配置文件/etc/sudoers,才可以授权其他普通用户执行sudo命令. 二.su 为 swi

ubuntu su sudo sudo&ndash;i 区别

sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码.不过有时间限制,Ubuntu默认为一次时长15分钟. su : 切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为"su 账户名称".如果后面不加账户时系统默认为root账户,密码也为超级账户的密码.没有时间限制. sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令.提示输入密码时该密码为当前账户的密码.没有

解析su/su -/sudo的区别

1.su和sudo没有切换工作目录和环境变量,只是赋予用户权限, 而su -是真正切换到root登录,工作目录切换到/root,环境变量也同时改变. [[email protected] home]# su carlton [[email protected] home]$ pwd /home [[email protected] home]$ su - Password: [[email protected] ~]# pwd /root 2.sudo使用的密码来源于用户 [[email pro

su与sudo的区别

在Linux系统上操作的时候,如果某些命令需要root权限才能执行,我们需要切换到root用户,这时我们有两种方法. 第一种: 直接切换到root用户,执行该命令.该命令不仅把用户身份切换为root,也把工作环境切换到了root.su - 与 su - root是同样的功能 [[email protected]129-232 ~]$ su - Password: Last login: Tue Jun 2 16:33:46 CST 2015 on pts/0 [[email protected]

设置root密码,su与sudo的区别

sudo passwd root 可以修改root密码,但首先会要求你输入当前用户的密码 sudo的意思是switch user do,默认切换到root,要求当前用户的密码,会自动调用exit返回到原用户 su没有参数的话就默认切换到root,要求root密码.可以通过调用exit返回到原用户. 在权限上,sudo的权限可以被配置从而对每个用户,sudo的权限范围不同,而su直接可以获取最高的root权限.

Linux:su 和 sudo的区别

<div id="article_content" class="article_content"> <p>        我们都知道非常多的文件都仅仅有root有权限来改动,那么在我们平时的开发过程中都建议使用一般账号来登录进行开发.还记得前面说到的ssh吗.我们也是将同意root登录设置成no.到必要的时候再切换到root来进行操作,这样就不至于有风险.</p><p>那么我们怎样切换身份呢.</p> &

Linux su和sudo的区别

命令 su需要被切换用户的密码,比如root的密码,风险大 visudo visudo 赋权root的部分执行权限.  which寻找命令的具体地址. 赋权 原文地址:https://www.cnblogs.com/Brake/p/12208558.html