学习总结4.7Linux⽂件⽬录setuid和setgid
Linux中⽂件/⽬录除了有可读、可写和可执⾏这三种权限外,还存在⽐较特殊的权限,这些特殊权限就包括setuid和setgid这两种。
setuid和setgid位是让普通⽤户可以以root⽤户的⾓⾊运⾏只有root帐号才能运⾏的程序或命令。例如我们⽤普通⽤户运⾏passwd命令来更改⾃⼰的⼝令,实际上最终更改的是/etc/passwd⽂件,我们知道/etc/passwd⽂件是⽤户管理的 配置⽂件,只有root权限的⽤户才能更改,正是因为passwd命令被设置了setuid权限才能使得普通⽤户也可以修改其配置⽂件的内容。
Linux⽂件/⽬录权限是使⽤常见的⼋进制权限掩码来表⽰的,通常都是⽤三位数表⽰,但确切地说,它是⽤四位数表⽰的,因为除了读、写和执⾏权限以外还有特殊的权限。
setuid的⼋进制表⽰为4000
setgid的⼋进制表⽰为2000
同样setuid和setgid也可以使⽤字母s表⽰。
如果⽂件/⽬录的拥有者的可执⾏位是s,则表⽰该⽂件/⽬录被设置了setuid权限。同样,如果同组⽤户的可执⾏为是s,则表⽰该⽂件/⽬录被设置了setgid权限。
接下让我们详细的学习setuid和setgid的使⽤⽅法。javabean原理
setuid
setuid的作⽤是让执⾏该命令的⽤户以该命令拥有者的权限去执⾏。
例如:普通⽤户执⾏passwd时会拥有root的权限,这样就可以修改/etc/passwd这个⽂件,正是因为passwd命令被设置了setuid权
限,passwd命令的详细权限如下所⽰:
可以看到passwd命令的拥有者的可执⾏位是s,则说明passwd命令被设置了setuid权限。
设置setuid命令有两种⽅法,⼀种是数字设置,另⼀种是通过助记语法。(建议使⽤助记语法设置)
数字设置命令:chmod 4xxx ⽂件/⽬录
其中xxx表⽰⽂件/⽬录的所有者、同组⽤户和其他⽤户的权限(读写执⾏)。
助记语法设置命令:chmod u [+|-] s ⽂件/⽬录
c语言培训总结
1. + 添加setuid权限;
2. - 取消setuid权限;
注意:chmod命令的其他参数都可以与setuid权限设置结合使⽤。 在设置setuid前必须保证⽂件/⽬录的所有者具有可执⾏权限,否则设置则⽆效。
执⾏权限:chmod必须以root权限才能执⾏,如果是普通⽤户想执⾏chmod时,需要在命令前加sudo命令来提升权限为root权限。
案例演⽰1:
创建⼀个新⽂件testFile,使⽤数字设置⽅法为⽂件testFile添加setuid权限,具体使⽤如下命令:
1. touch testFile
2. ls -l testFile
3. sudo chmod 4764 testFile
4. ls -l testFile
第⼀条命令是创建新⽂件testFile; 第⼆条命令是查看testFile现有的权限; 第三条命令是在保证testFile原有权限的情况下为其添加setuid权限; 第四条命令是查看是否添加成功;
案例演⽰2:
创建⼀个新⽬录testDir,使⽤助记语法设置⽅法为⽬录testDir添加setuid权限,具体使⽤如下命令:
1. mkdir testDir
2. sudo chmod u+s testDir
3. ls -l .
案例演⽰3:
创建⼀个新⽂件testFile,使⽤助记语法为⽂件testFile添加setuid权限,具体使⽤如下命令:
1. touch testFile
2. sudo chmod u+x,u+s testFile
linux修改口令的命令3. ls -l testFile
第⼀条命令是创建新⽂件testFile; 第⼆条命令是在设置testFile为可执⾏权限并为其添加setuid权限; 第三条命令是查看是否添加成功;
如果不给⽂件testFile设置可执⾏权限直接设置setuid权限后,标记为是S⽽不是s,详细结果如下图所⽰:
setgid
setgid的作⽤是让执⾏该命令的⽤户以该命令所有者的同组⽤户的权限去执⾏。
设置setgid命令有两种⽅法,⼀种是数字设置,另⼀种是通过助记语法。建议使⽤助记语法设置setgid权限。
数字设置命令:
chmod 2xxx ⽂件/⽬录
其中xxx表⽰⽂件/⽬录的所有者、同组⽤户和其他⽤户的权限(读写执⾏)。
助记语法设置命令:
chmod g [+|-] s ⽂件/⽬录
1. + 添加setgid权限;
2. - 取消setgid权限;
注意:chmod命令的其他参数都可以与setgid权限设置结合使⽤。 在设置setgid前必须保证⽂件/⽬录的同组⽤户具有可执⾏权限,否则设置则⽆效。
执⾏权限:chmod必须以root权限才能执⾏,如果是普通⽤户想执⾏chmod时,需要在命令前加sudo
命令来提升权限为root权限。
案例演⽰1:
创建⼀个新⽂件testFile,使⽤数字设置⽅法为⽂件testFile添加setgid权限,具体使⽤如下命令:
1. touch testFile
2. ls -l testFile
3. sudo chmod 2674 testFile
sqlserver代理请求失败4. ls -l testFile
第⼀条命令是创建新⽂件testFile; 第⼆条命令是查看testFile现有的权限; 第三条命令是在保证testFile原有权限的情况下为其添加setgid权限; 第四条命令是查看是否添加成功;
案例演⽰2:
服务器网络配置
创建⼀个新⽬录testDir,使⽤助记语法设置⽅法为⽬录testDir添加setgid权限,具体使⽤如下命令:
html使整个网页居中1. mkdir testDir
2. sudo chmod g+s testDir
3. ls -l .