AIOps 一场颠覆传统运维的盛筵
1004
2022-10-02
运维的基石(二)用户与权限
1 用户与用户组
1.1 用户
多用户是为了Linux方便区分权限的方式,为了防止用户将自己误限制权限,引入了超级用户root的概念,即root不受用户权限体系限制,在生产环境中非必须情况下不建议直接使用root来进行操作就是这样的原因, 我们在新闻中多次看到某运维误删除了文件,多数是因为滥用root权限导致。因此我们这里讨论的权限也是用非root 用户来讨论的。
用户使用useradd命令注册到系统中,这里使用了最稳定的方式存储,即文件。默认将用户添加到/etc/passwd文件,每行一个用户,Linux判断用户是否存在使用的就是/etc/passwd文件,查看是否包含用户名称的一行,所以人为删除整行即删除了用户。userdel做的就是相同的事情。
1.2 密码
为了让用户密码得到有效保护,用户密码放入/etc/shadow中,权限限制的极为严格,只有root能够查看
[root@localhost ~]# ll etc/shadow
----------. 1 root root 819 Dec 21 20:03 etc/shadow
[root@localhost ~]# cat etc/shadow
root:$6$nIPxfuFjLsdrO7eh$af9xUAir3h9hOlaA26DMp2w0MBAz4jCYYmqZm6fFfheSWDKRlc6v9/bQeorNRPbS5463p4C1VKIGRDOYEBVfb1:17521:0:99999:7:::
第二个字段$6$nIPxfuFjLsdrO7eh$af9xUAir3h9hOlaA26DMp2w0MBAz4jCYYmqZm6fFfheSWDKRlc6v9/bQeorNRPbS5463p4C1VKIGRDOYEBVfb1 就是散列之后的密码,使用SHA-512散列,只能穷举,不能逆向运算,保证了一定的用户安全。而且其中使用了$6$nIPxfuFjLsdrO7eh$ 这段被称作salt值,避免明文相同的密码,散列后的内容也相同,被撞库。一定程度上增强了安全性,但是仍然建议管理员使用复杂密码和定期改密策略,因为现代GPU技术和通用计算能力增强,原有安全的密码也会因为穷举速度加快,变成有风险的密码。
检查自己的密码是否是弱口令可以使用john工具,在官方网站下载源代码,执行如下命令编译安装:
xz -d john-1.8.0.tar.xz
tar xf john-1.8.0.tar
cd john-1.8.0/src
make
make clean linux-x86-64
执行方法为:
[root@localhost run]#cd ../run
[root@localhost run]# ./john --single etc/shadow
Loaded 1 password hash (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
0g 0:00:00:07 100% 0g/s 364.0p/s 364.0c/s 364.0C/s 999991907..999991900
Session completed
1.2 用户组
为了方便管理相同权限或属性的一组用户,引入了用户组的概念。当建立一个新的用户,未指定用户组时,会创建同名用户组
2 权限
2.1 普通文件权限
在文件中标注的权限分成三部分,即对文件所属用户的权限、文件所属组的权限、其他人的权限。判断一个文件是否可读写还有结合进程才能知晓,因为进程启动时会标记启动该进程的用户,而且还会根据预先写好的程序,设置有效用户id ,如nginx,我们以root身份启动后, nginx会使用seteuid(2)来设置自己的有效用户id为nginx,那么nginx进程对文件请求时使用的用户身份就是nginx,那对应权限位置也要看下文件的用户是否为nginx,如果不是,那么判断组、继而再根据其他权限来判断该进程是否有文件读写权限。
所以在修改权限过程中chomd、chown两条命令都会经常用到,这里特别强调的是shell脚本,除了执行权限外,由于shell为解释语言,所以对于执行用户r权限也是必须的。
2.2 目录文件权限
目录文件权限需要注意的是x权限位, x权限位为目录文件操作必须的权限,因为目录文件的特殊性(相对普通文件),对目录的基本操作命令cd、ls、rmdir 等都需要对目录内容进行读取操作,这点也是特别要注意的。
2.3 粘着位
这是一个古老的问题,记住一个规则就可以,粘着位只对目录有效,如/tmp目录,、/tmp下拥有此文件或者目录的用户才能修改这些文件,这是为了避免误删他人文件而设置的一个特殊权限,当然root是不受到限制的。
3 符号链接与硬链接
3.1 符号链接
符号链接是指向文件的间接指针,对符号链接的权限修改、内容修改都会修改指向文件,但是要注意创建符号链接可能会导致文件系统进入死循环,参考《APUE》的例子如下:
[root@localhost ~]# ln -s ../foo foo/testdir[root@localhost ~]# ls -l foototal 0-rw-r--r-- 1 root root 0 Dec 22 17:04 alrwxrwxrwx 1 root root 6 Dec 22 17:05 testdir -> ../foo[root@localhost testdir]# cd testdir/testdir/[root@localhost testdir]# pwd/root/foo/testdir/testdir/testdir/testdir[root@localhost testdir]# lsa testdir[root@localhost testdir]#
这里的死循环不会造成太大问题,使用rm命令删除testdir符号链接即可打破循环,rm命令这里调用了unlink(2)调用,unlink(2)调用不跟随符号链接。另一种链接就不会这么简单了。
3.2 硬链接
另一种叫做硬链接,硬链接的要求是不允许跨越文件系统建立,硬链接需要大家注意的一点是它在删除时不会真的消失,只有目中文件名称和文件inode只有唯一连接时,删除才会将文件名回收, 数据还是存储在磁盘中的。考虑上面的循环情况,硬链接只有超级用户特权才可以对目录建立,但是这里并不推荐大家手动建立目录硬链接, 只保证有“.”和“..”才是最好的情况。
4 设备特殊文件
设备特殊文件的权限不建议管理员进行修改,设备特殊文件是通过主设备号和次设备号与设备关联的,如:
[root@localhost testdir]# ll /dev/sda1
brw-rw---- 1 root disk 8, 1 Dec 21 20:08 /dev/sda1
这里的sda1表示block设备 ,主设备号为8 , 次设备号为1 ,设备文件通过mknod 命令创建,以文件表示主要用于对裸设备直接操作,如经常分区时使用的parted mkfs 等命令。
5 特殊目录
在linux中还有些目录的内容并不真实存在在系统磁盘上面, 它们是系统运行时的状态信息,为了方便用户,以文件形式表现出来,通常这里文件也无法进行写操作,对这些文件的用户权限也不建议人为进行修改,如/proc、/sys 目录
参考资料《UNIX 环境高级编程》
发表评论
暂时没有评论,来抢沙发吧~