SetUid的权限问题
来源:互联网 发布:北京日结美工招聘信息 编辑:程序博客网 时间:2024/06/08 18:56
1什么是SetUID
我们知道,在Linux的命令行下执行“ps -aux”命令时,就会列出当前系统中的所有进程,在其中可以看到每个进程都和用户的真实id关联,实际上,Linux中的每个进程还跟一个称为有效用户id(set User id)紧密关联。前者用于表示该进程由那个用户控制,后者用于为新建立的文件分配所有权,检查文件访问许可等操作,同时有效用户为该文件的所有者。linux系统内核允许一个进程以调用一个SetUID程序(或显示执行SetUID系统调用)的方式,来改变其自身的有效用户id。
2如何配置SetUID权限
在linux中,不管是Root用户还是普通用户,都可以使用“Password”命令来更改自身的密码。但是,Linux中的密码通常是保存在“/etc/paswd”和“/etc/shadow”文件中,这两个文件对系统安全至关重要,因此只有Root用户才能对其执行读写操作。以管理员的身份登陆系统,在Linxu提示符下执行“ls /etc/passwd /etc/shadow”命令,在返回信息中可以看到普通用户对上述这两个文件并没有写权限,因此从文件属性的角度看,普通用户在更改自身密码时,是无法将密码信息写入到上述文件中的,哪么用户是怎样成功的更改密码的呢?实际上,问题的关键不在于密码文件本身,而在于密码更改命令“passwd”。在提示符下执行命令“ls /usr/bin/passwd”,在返回信息中的文件所有者执行权限位上显示“S”字样,表示“passwd”命令具有SetUID权限,其所有者为Root,这样普通用户在执行“passwd”命令时,实际上以有效用户root的身份来执行的,并具有了相应的权限,从而将新的密码写入到“/etc/passwd”和“/etc/shadow”文件中,当命令执行完毕,该用户的身份立即消失。如何设置SetUID权限呢?使用“chmod”命令即可为指定文件设置SetUID权限,例如“chmod 4xxx filename”命令,取消SetUID权限的命令为“chmod xxx filename”。类似的,执行“chmod 2xxx filename”命令可以设置SetGID权限,使用“chmod xxx filename”命令即可取消SetGID权限,如果执行“chmod 6xxx filename”命令,即可同时为指定文件设置SetUID和SetGID,执行命令“chmod 0xxx filename”,即可同时取消指定文件的SetUID和SetGID权限。例如以Root用户登陆系统,执行“chmod 0511 /usr/bin/passwd”命令,就可以取消“passwd”命令的SetUID权限,这样普通用户就无法修改自己的密码了。
3SetUID权限的安全性
使用SetUID可以灵活的调整所有文件所有者权限,但是也为系统的安全性带来了隐患。如果Root用户为指定的程序文件配置过大的SetUID权限,那么就会为黑客或者非法用户打开了侵入系统的大门。例如在Linux中可以使用“vi”命令来编辑文件,但是,对于普通用户而言,当其试图使用命令“vi /etc/shadow”来修改密码文件时,系统就会弹出“/etc/shadow : Permission Denied”的警告提示,从而禁止其对密码文件的非法修改。但是,如果在Root用户环境中执行“which vi”命令,就可以看到“vi”命令实际上是“vim”命令的别名,其真实路径为“/usr/bin/vim”,这样执行命令"chmod 6755 /usr/bin/vim",就可以将“vi”命令的所有者更改为Root,这样在普通的用户环境中,就可以使用“vi”命令来编辑任何文件(例如“/etc/shadow”),这样,即使是普通用户也可以将密码文件清空,从而实现无密码登陆Linux,给系统的安全带来的威胁不言而喻。因此,对可能给系统安全带来危害的程序来说,应该尽量不要随意为其配置SetUID权限。
4 如何禁用SetUID权限
对于存放在敏感数据的分区而言,有时可能希望禁用SetUID权限设置功能。例如对"/home" 分区禁用SetUID权限,可以找到修改其配置文件“/etc/fstab”, 执行命令“vi /rtc/fstab”,可以看到“LABEL=/home /home ext3 defaults 1 2”等数据,我们只需在上述“default”关键字的后面添加“nosuid” 关键字即可,例如使用“vi”命令将其修改为“LANBEL=/home /home ext3 default , nosuid 1 2”,之后执行命令“mountoremount /home”,这样即使对“/home”分区上的任何可执行文件配置了SetUID权限,也是无效的。这样就在很大程度上保护了系统的安全。
我们知道,在Linux的命令行下执行“ps -aux”命令时,就会列出当前系统中的所有进程,在其中可以看到每个进程都和用户的真实id关联,实际上,Linux中的每个进程还跟一个称为有效用户id(set User id)紧密关联。前者用于表示该进程由那个用户控制,后者用于为新建立的文件分配所有权,检查文件访问许可等操作,同时有效用户为该文件的所有者。linux系统内核允许一个进程以调用一个SetUID程序(或显示执行SetUID系统调用)的方式,来改变其自身的有效用户id。
2如何配置SetUID权限
在linux中,不管是Root用户还是普通用户,都可以使用“Password”命令来更改自身的密码。但是,Linux中的密码通常是保存在“/etc/paswd”和“/etc/shadow”文件中,这两个文件对系统安全至关重要,因此只有Root用户才能对其执行读写操作。以管理员的身份登陆系统,在Linxu提示符下执行“ls /etc/passwd /etc/shadow”命令,在返回信息中可以看到普通用户对上述这两个文件并没有写权限,因此从文件属性的角度看,普通用户在更改自身密码时,是无法将密码信息写入到上述文件中的,哪么用户是怎样成功的更改密码的呢?实际上,问题的关键不在于密码文件本身,而在于密码更改命令“passwd”。在提示符下执行命令“ls /usr/bin/passwd”,在返回信息中的文件所有者执行权限位上显示“S”字样,表示“passwd”命令具有SetUID权限,其所有者为Root,这样普通用户在执行“passwd”命令时,实际上以有效用户root的身份来执行的,并具有了相应的权限,从而将新的密码写入到“/etc/passwd”和“/etc/shadow”文件中,当命令执行完毕,该用户的身份立即消失。如何设置SetUID权限呢?使用“chmod”命令即可为指定文件设置SetUID权限,例如“chmod 4xxx filename”命令,取消SetUID权限的命令为“chmod xxx filename”。类似的,执行“chmod 2xxx filename”命令可以设置SetGID权限,使用“chmod xxx filename”命令即可取消SetGID权限,如果执行“chmod 6xxx filename”命令,即可同时为指定文件设置SetUID和SetGID,执行命令“chmod 0xxx filename”,即可同时取消指定文件的SetUID和SetGID权限。例如以Root用户登陆系统,执行“chmod 0511 /usr/bin/passwd”命令,就可以取消“passwd”命令的SetUID权限,这样普通用户就无法修改自己的密码了。
3SetUID权限的安全性
使用SetUID可以灵活的调整所有文件所有者权限,但是也为系统的安全性带来了隐患。如果Root用户为指定的程序文件配置过大的SetUID权限,那么就会为黑客或者非法用户打开了侵入系统的大门。例如在Linux中可以使用“vi”命令来编辑文件,但是,对于普通用户而言,当其试图使用命令“vi /etc/shadow”来修改密码文件时,系统就会弹出“/etc/shadow : Permission Denied”的警告提示,从而禁止其对密码文件的非法修改。但是,如果在Root用户环境中执行“which vi”命令,就可以看到“vi”命令实际上是“vim”命令的别名,其真实路径为“/usr/bin/vim”,这样执行命令"chmod 6755 /usr/bin/vim",就可以将“vi”命令的所有者更改为Root,这样在普通的用户环境中,就可以使用“vi”命令来编辑任何文件(例如“/etc/shadow”),这样,即使是普通用户也可以将密码文件清空,从而实现无密码登陆Linux,给系统的安全带来的威胁不言而喻。因此,对可能给系统安全带来危害的程序来说,应该尽量不要随意为其配置SetUID权限。
4 如何禁用SetUID权限
对于存放在敏感数据的分区而言,有时可能希望禁用SetUID权限设置功能。例如对"/home" 分区禁用SetUID权限,可以找到修改其配置文件“/etc/fstab”, 执行命令“vi /rtc/fstab”,可以看到“LABEL=/home /home ext3 defaults 1 2”等数据,我们只需在上述“default”关键字的后面添加“nosuid” 关键字即可,例如使用“vi”命令将其修改为“LANBEL=/home /home ext3 default , nosuid 1 2”,之后执行命令“mountoremount /home”,这样即使对“/home”分区上的任何可执行文件配置了SetUID权限,也是无效的。这样就在很大程度上保护了系统的安全。
0 0
- SetUid的权限问题
- Setuid权限的整理
- Linux 的setUid权限详解
- setuid权限
- 谈SETUID权限
- linux7--setuid权限
- linux权限之setUID
- linux权限之setUID
- setuid,setgid,stickybit的三个权限的详细说明
- setuid,setgid,stickybit的三个权限的详细说明
- setuid,setgid,stickybit的三个权限的详细说明
- 【Linux文件权限管理】关于SetUID、SetGID的说明
- Linux文件的setuid,setgid,sticky权限设定
- [linux]文件的特殊权限 SetUid SetGid StickBit
- linux中一些特殊的权限(setuid/setgid/sticky)
- 使用 setuid、setgid 和 Sticky 位的特殊文件权限
- setgid, setuid, sticky文档权限
- 浅议Linux中的SetUID权限
- 人人都是产品经理
- 沃罗诺伊图(Voronoi Diagram,也称作Dirichlet tessellation,狄利克雷镶嵌 )归纳
- SpringBoot中Controller以及Jpa操作数据库的使用
- 升级10.12,想要允许任何来源应用
- ubuntu安装jdk和eclipse
- SetUid的权限问题
- 2017.4.15.B组模拟赛总结
- jzoj 5060. 【GDOI2017第二轮模拟day1】公路建设 线段树+最小生成树
- 【数据结构】中缀表达式转换后缀表达式(逆波兰式)
- 对【2017.4.15B组NOIP提高模拟赛】总结
- 腾讯十天Vue.js课程之一:Vue.js介绍
- Kruskal算法Java实现
- 浅谈前端性能优化
- javaee期中考前简略只是总结(个人/很简陋)