小白网安/运维自学记录(文件权限及用户篇)
书接上文我们已经准备好了前置所需要的环境以及一些工具我们就可以直接开始我们的第一个正课学习了。文件权限篇普通权限的了解及修改特别说明一下在以后的命令教学中出现sudo的意为借用root用户来执行本条命令在此之前我们需要先明白linux中的文件/目录权限分为三种r读取w改写/写入x执行Linux 权限底层使用 9 位二进制表示每三位为一组对应所有者、所属组和其他用户。例如rwxr-xr-x就是111 101 101。我们通常会把每3位二进制合为一组共3组再分别转换为十进制按421权重计算。例如111 101 101换算后就是7 5 5也就是权限数字755。如果对这部分不太熟悉建议先简单了解一下二进制与十进制的转换。理论这边大概讲述一下我们直接通过命令来查看一下文件验证一下理论。其中-l 代表以长格式显示权限连接数所属者所属组文件大小最后修改时间文件名-h 代表文件大小化为简单易懂的形式如kmg图中就显示为1.5k大小-a 代表显示全部文件通常使用查询是否有隐藏文件ls -lha /etc/passwd我们这边可以看到文件的权限为- rw- r-- r--实际上是分为了四组第一组只有单独的一个横杠这里分有俩种情况-代表普通文件d代表目录文件如同下图好到此了我们也就学会了对权限的一些基本知识了能够做到查询并可以看懂文件权限了.接下来我们来学会手动修改文件权限通常需要借助高权限用户的权限才能做到。例如如果我们需要修改一个文件权限到达755我们就可以通过使用chmod命令如图sudo chmod 755 xxx这边可以看到原本的test文件权限为700然后我们通过chmod修改权限后文件权限再次查询时已然变为了755。在这里我们讲一个关于文件权限设置的通用技巧普通文件644rw-r--r--文件默认可执行文件755rwxr-xr-x程序或脚本目录755rwxr-xr-x目录必须私密文件600rw-------私钥 / 密码在学会了修改文件权限后下一步就是来更改文件的所属者和所属组了。文件所属者和所属组修改所属者我们使用chown命令修改所属组我们可以使用chown和chgrp命令这里为了不做过多讲解我们只使用chown命令懂得区分俩者区别即可。chown 用户名:组名 xxx(文件或目录)这是基础格式如果只需要修改所属组时务必要记得保留前面的冒号(:)如果没有保留这个则默认修改的是所属者。chown :所属组 xxx(文件/目录我们实际运用一下命令可以看出经过chown命令修改后目录的所属者和所属组都发生了变化。关于安全运维审计中的重点权限SUID理解了权限的数字和符号表示后我们来看一种特殊权限SUID。在符号表示中SUID 占用的是所属者的执行位。当一个文件原本就有x权限再设置 SUID 后会显示为rws如果文件本身没有x设置 SUID 后只会显示为rwS这种情况通常缺乏实际意义。正常情况下用户执行一个文件时进程的权限就是该用户自己的权限。但当一个可执行文件设置了 SUID 位其他用户执行它时会临时获得文件所有者的权限。举个例子一个属于 root 的普通文件同时拥有x执行和 SUID 权限。那么普通用户执行它时相当于以 root 身份运行。如果这个文件是一个脚本或自动化任务用户无需sudo就能以 root 权限执行。因此在安全审计中需要特别留意系统中带有s权限的文件。那我们在运维管理时通常使用一些快捷命令来查找系统中含有s权限的文件如下sudo find / -perm -4000 -type f从根目录/下开始递归寻找寻找拥有s权限以及类型为普通文件的文件。-perm 权限匹配后面的4000就是要找的对应权限数s权限是最高位只需要匹配最高位-type 确认文件类型只为普通文件f则为普通文件d则为目录s权限目录没有实际意义补充SGIDSet Group ID与 SUID 类似SGID 占用的是所属组的执行位符号显示为所属组位上的s作用对象效果可执行文件用户执行时进程获得文件所属组的权限目录目录内新创建的文件/子目录自动继承该目录的所属组看的出来SGID 文件与 SUID 类似都需要定期排查文件是否有提权风险查找拥有SGID权限的文件/目录sudo find / -perm -2000 -type fsudo find / -perm -2000 -type d对此我们总结一下对于s权限SUID执行时临时获得所有者权限占所有者执行位’rws‘SGID执行时临时获得所属组权限文件或目录下新文件继承组目录占组执行位到此我们对文件权限、特殊权限以及所属也就暂时告一段落接下来学习的是linux中的用户管理。用户及管理篇除了我们登录需要创建的一个用户外linux系统中本身还存在着一个超级用户也就是root我们在练习过程中务必不要乱动乱删一些东西所以我们这次对于linux用户方面的练习是需要先创建出一个新的用户用于练习命令如下sudo useradd testuser通过以上命令我们创建了一个用户名为[testuser]如果有需要可以根据自己需求来更改创建的用户名我这边及后续都使用这个用户名作为例子。当创建完一个用户后我们也需要马上给用户设置密码设置密码和更改密码都是如下命令如果是更改密码第一次会需要先写入旧密码才能更改新密码。看到出现了successfully就是设置密码成功了。sudo passwd testuser在创建用户和更改密码之后我们就是来了解linux中用户存储文件以及密码存储文件了通过如下命令来查询系统文件并筛选出只含有“testuser”的行数sudo cat /etc/passwd | grep testuser可以看到上图中命令查询的结果我用矩形框分成了7个部分分别对应的是用户名密码UIDGID注释备注家目录shell登录后执行的程序用户名这个不用过多讲解就是字面意思上的该用户名称密码完全的密码存放在/etc/shadow中图中的密码用x代替如果是空密码则这个部分就为空如果是禁止登录的用户密码部分就为*UID就是用户的ID序列0root用户1-999系统用户1000就是普通用户图中的1000也就代表着普通用户GID组ID对应着/etc/group中的组序列注释可以在里面写入一些备注如用户全称电话等家目录也就是通过该用户登录linux后的起始目录点在刚登录时可以通过pwd命令来查看当前是否在家目录中shell用户登录后默认的执行程序大部分系统用户显示的都是“/sbin/nologin也就是禁止登录以上中不用全部都记住只需要大概了解一番忘记了再回顾即可。用几乎差不多的命令我们来查询一下Linux中密码存储的系统文件/etc/shadowsudo cat /etc/shadow | grep testuser结构也是和/etc/passwd那边大同小异这边分为了8个部分分别是字段名称示例值含义1用户名testuser登录用户名与/etc/passwd对应2加密密码$y$...加密后的密码3上次修改时间20616从 1970-01-01 起的天数4最小使用天数0密码修改后至少 N 天才能再改0随时可改5最大使用天数99999密码最多使用 N 天99999≈273年≈永不过期6警告天数7过期前 7天开始提醒用户7宽限天数3过期后 3天内还可登录改密码之后锁定8过期时间20650账户在N天后完全失效不依赖于密码由于我们这边学习的运维/网安方向可能对密码这方面涉及较多这边也顺便讲解一下密码的规范设置通过以下命令我们可以达到一个密码的基本使用规范可能日常就会显得繁琐了一点所以建议拿测试用户来设置sudo chage -m 7 -M 90 -W 7 -I 5 -d 0 testuser-d 0下次登录时强制更改密码-m 7最少使用7天后才能更改密码-M 90最多使用90天后密码就会过期-W 7过期前7天会提醒-I 5过期后还有5天时间宽限期可以更改密码强制 ’testuser‘下次登录修改密码且修改后的密码必须使用至少 7 天、最长 90 天、过期前 7 天警告、过期后 5 天不修改则锁定账户。用户登录以及查看相关信息在我们上诉修改了用户密码相关信息后我们就来验证一下通过命令来切换命令su - testusersu testuser在此提一下切换用户有俩种方式俩种切换方式的区别在于1.第一种等同于以指定用户重新登录Linux当前目录也会变成用户的家目录2.第二种只是单纯的切换用户当我们在前面修改了一系列关于密码的要求后我们想切换成testuser的时候第一要求就是要更改密码如图所示然后通过命令来确认当前用户whoami以及再通过俩条命令查询用户所属组和检测用户id是否有异样groups id到这里本次的权限以及用户管理篇就圆满结束了下一期是关于网络基础排查与防火墙。