FreeBSD进程的权限

由于FreeBSD是多用户系统,因此进程必须要受到权限的控制和保护。出于安全性的考虑,一个用户不可能杀死其他用户启动的进程,一个进程也不能非法存取其他用户的文件数据。只有超级用户和超级用户启动的进程才有最大的权限,普通进程就只与进程的执行者相关,只具有这个用户的权限。

一些情况下(特别是执行系统维护任务时),要求普通用户也能完成特殊权限的任务,那么就必须在进程执行过程中改变进程的身份。改变进程的身份则必须同时具备两个要求:程序文件本身具有SetUID或SetGID属性,同时程序中需要相应调用setuid()或setgid()系统调用,这两个系统调用能够检查文件的属性,并完成更改进程权限的操作。

通常只有系统程序才需要利用这两个属性,例如系统程序su允许普通用户成为root用户,就使用的是这个能力。

$ ls -l a*
-rwxr-xr-x  1 user wheel 3212 Dec 4 12:36 a1
-rwxr-xr-x  1 user wheel 3212 Dec 4 12:36 a2
$ chmod u+s a1
$ ls -l a*
-rwsr-xr-x  1 user wheel 3212 Dec 4 12:36 a1
-rwxr-xr-x  1 user wheel 3212 Dec 4 12:36 a2
$ chmod g+s a2
$ ls -l a*
-rwsr-xr-x  1 user wheel 3212 Dec 4 12:36 a1
-rwxr-sr-x  1 user wheel 3212 Dec 4 12:36 a2

上面第一个chmod(chmod u+s a.out)为a.out增加设置属主身份权限,然后列表中对应属主的执行权限位的 “x” 标志将改变为 “s” (文件属性显示为rwsr-xr-x)。第二个c hmod (chmod g+s a.out)为a.out增加设置组身份权限,则列表中对应组的执行权限位的 “x ” 标志将改变为 “s” (文件属性显示为rwxr-sr-x)。同样,SetUID和SetGID 属性也都有相应的八进制表示方式,SetUID为04000,后面的三个八进制位属于文件的读写访问属性设置,相应S etGID为02000,它们两个属性位处于读写属性位之前。下面是一个更改属性设置的例子:

# ls -l /bin/ps
-r-xr-sr-x 1 bin kmem 163840 May 6 06:02 /bin/ps
# chmod a=r /bin/ps
# su user
$ ps
bash: ps: Permission denied
$ ^D
# chmod a+x /bin/ps
# su user
$ ps
ps: /dev/mem: Permission denied
$ ^D
# chmod g+s /bin/ps
# su user
$ ps
PID TT STAT   TIME COMMAND
226 p2 S   0:00.56 bash
239 p2 R+   0:00.02 ps
$

第一次以user身份执行ps时,ps的文件属性被改为对所有用户只有读权限,因此不能执行,shell报告 Permission denied;第二次以user身份执行ps时,ps报告不能打开/dev/mem文件,这是因为普通用户无权存取内存映象文件。而第三次执行ps时,由于设置了setgid位,和kmem同组的进程就能够打开 /dev/mem文件,从而正确执行了ps程序。

具有SetUID或SetGID属性的程序,能够在进程执行中调用系统调用setuid()或setgid() ,调用成功后这个进程就具有了程序文件属主和组的权限,就可以完成以前改变身份之前不能完成的任务。因为通过它们程序可以改变进程的用户标识,绕过系统的权限设置,因此这两个属性对于系统安全非常重要。尤其是属于root的文件,并设置了SetUID属性的程序,更是系统安全中值得注意的地方。为了保证系统安全,必须保证没有非法的SetUID或 SetGID程序的存在,通常管理员可以使用find命令来完成这个任务,例如查找具有SetUID的程序,则执行:

# find / -perm 4000 -print

时间: 2024-09-20 00:18:55

FreeBSD进程的权限的相关文章

编程实现遍历ACL访问控制列表检查进程访问权限

阅读本文的朋友需要对Windows访问控制模型有初步的了解,了解Token(访问令牌),ACL(访问控制列表),DACL(选择访问控制列表),ACE(访问控制列表项)等与访问控制模型相关的名词含义及之间的关系,当然我也会在文中简要科普一下ACM. 写这篇文章的目的主要是最近在写一个Win下本地提权的东西,涉及到了对ACL的操作,以前对ACL总是避而远之,Windows访问控制模型很复杂很头疼一个API会牵出一大把初始化要用的API.毕竟涉及到用户访问的安全,肯定不能让编程人员随意更改这些机制,复

FreeBSD进程管理

在系统shell提示下,使用者可以输入各种命令来执行相应的工作.每个命令通常从终端键盘中获取输入,将输出打印到终端屏幕上,Unix使用标准输入stdio和标准输出stdout,来表示每个命令的输入和输出,还使用一个标准错误输出stderr用于输出错误信息.这三个标准输入输出系统缺省与终端设备相联系在一起,但是也可以使用管道的概念将它们重新定向,从一个文件或另一个命令中获取输入,输出到另外的文件中或作为另一个命令的输入等. $ ls > ls.out $ cat < ls.out $ ls -l

linux常用命令之(文件、目录、进程、权限)

Linux删除文件夹命令 linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可. 直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字 -r 就是向下递归,不管有多少级目录,一并删除 -f 就是直接强行删除,不作任何提示的意思 linux 查找文件和文件夹 命令 查找文件路径 find / -name httpd.conf 查找文件 find -name conf 查找文件夹 目录重命名 在linux下,移动文

Nginx中php-fpm进程目录权限防跨站配置

Nginx下开多个虚拟机网站防跨站是首要的任务,PHP5.3之前的版本不支持open_basedir,只能通过控制PHP-cgi进程及目录用户权限进行限制,防止跨站访问. 先了解一下网站正常运行所用到的用户.目录权限: Nginx进程运行用户:接收用户请求,处理静态文件,如果是PHP则转给PHP-CGI处理,网站目录拥有读权限. PHP-cgi进程用户:处理PHP文件,网站目录拥有读权限,个别目录需要写入权限. 让每个网站使用单独的PHP-CGI进程,创建PHP-FPM配置文件,修改以下:  

让进程调用权限问题见鬼去吧

最近需要用到在服务器端调用一个C++组件,因为涉及到组件会去修改某个目标文件,所以在.NET里面使用Process对象死活报出只读错误. 到处找资料查询,大部分人都说涉及到调用组件修改文件的问题,.NET是不允许这样做的.我差点没昏掉.但是记得以前写ASP的时候使用WScript.Shell对象好像是可以做到的.于是开始使用ASP进行试验,居然没有报任何错误,一阵狂喜. 然后又给我找到一条有用的信息,可以将WScript.Shell转换成DLL,使用.net直接调用方法.方法如下: ·将COM组

对当前进程进行提升权限

对于进程提升权限主要用到下面三个API                  OpenProcessToken();        打开权限令牌             LookupPrivilegeValue();      检索一个唯一的本地标识符  LUID             AdjustTokenPrivileges();   调整令牌特权         BOOL OpenProcessToken( HANDLE ProcessHandle, //要修改访问权限的进程句柄 DWORD

学生机登录用户权限设置

随着计算机硬件价格的大幅下降,多数机房都采用了高性能的微机,操作系统也由原来的Windows98升级到了 Windows XP.为了实际教学工作,微机室的微机都安装了相应的多媒体教学软件(如苏亚星.深蓝易思等).这样,老师在上课时就能够及时掌控学生的学习情况.但有的学生为了在课堂做一些与课程无关的活动(如打游戏),他们会想办法脱离教师机地控制,他们通常是使本地机器的学生端程序停止下来.由于中止这些进程的方法有很多,所以要解决这个问题就要从登录用户权限入手,不给学生登录用户以中止进程的权限. 另外

Linux入门基础(七) Linux权限机制

权限 权限是操作系统用来限制对资源访问的机制,权限一般分为读,写,执行.系统中每个文件都拥有特定的权限,所属用户及所属组,通过这样的机制来限制哪些用户,哪些组可以对特定文件进行什么样的操作. 每个进程都是以某个用户的身份运行的,所以进程的权限与该用户的权限一样,用户的权限越大,该进程拥有的权限就越大. 文件的权限 目录必须有x权限,否则无法查看其内容.x也叫浏览权限 UGO Linux权限基于UGO模型进行控制: U代表User,G代表Group,O代表Other 每一个文件的权限基于UGO进行

Linux用户及权限基础 2 Linux权限

1 权限 1 权限是操作系统用来限制对资源的访问的机制,权限一般分为三种,读,写,执行.操作系统中每 一个文件都有特定的权限,所属的用户和所属的组,通过的这样的机制来限制哪些用户,哪些组可以对 特定的文件进行什么样的操作 2 每一个进程都是以某个用户的身份登录运行,所以进程的权限与该用户的权限一样,用户的权限大 ,该进程拥有的权限就大 3 文件权限 权限           对文件的影响              对目录的影响 r 读取       可读取文件内容         可列出目录的内