文件的权限
3.1 文件权限概述
- Linux中每个文件或目录都有一组共9个基础权限位,每三位字符被分为一组,他们分别是属主权限位(占三个字符),用户组权限位(占三个字符),其他用户权限位(占三个字符)。比如rwxr-xr-x,在linux中正是这9个权限位来控制文件属主,用户组以及其他用户权限。
3.2 权限位说明
- Linux文件或目录的权限位是由9个权限位来控制,每三位为一组:
- 文件的所有者权限:Owner的读写执行
- 文件所有者属于的组的权限:Group用户组的读写执行
- 其他人Other其他用户的读写执行
- r(read)可读权限,对应数字4
- w(write)可写权限,对应数字2
- x(Execute)可执行权限,对应数字1
- 没有任何权限,对应数字0
3.3 linux多用户多任务介绍
Linux/Unix是一个多用户,多任务的操作系统;在讲Linux账号及账号组管理之前,我们先简单了解下多用户,多任务操作系统的基本概念。
- 鉴于大家对windows比较熟悉了,因此我们先以windows系统为例阐述。当我们以管理员账号administrator用户登录windows系统后,我可能需要编辑word文档内容,但在编辑文件的过程中,又可能会同时打开音乐播放器听音乐;同时还可能会打开MSN/QQ。其中编辑word文档,开播放器,MSN/QQ,这些操作每种都是一项任务。因此,在以上过程中,我们同时执行了几个任务。一个用户如administrator用户,为了完成工作和相关任务,同时执行了几个服务或进程;那么,Linux也是这样的一个操作系统,当你登陆后,你也可以同时开启很多的服务任务和进程,而各自服务都会跑的很好却对其他任务没有任何影响,这种一个用户登陆系统执行多个服务任务和进程的情况,就称为单用户多任务。
- 有时可能是很多用户同时用同一个系统,如老男孩所在公司几十个运维人员,每台机器都可以被若干个运维人员登陆部署或解决相关故障问题,但并不是所有的运维人员都要做同一件事,所以这就有多用户,多任务的情况。
- 举个例子,比如etiantian.org服务器,上面有系统管理员root用户,apache用户,常规普通用户等。在同一时刻,可能有的人正在上传软件包部署apache服务;有的查看服务器日志,有的人正在登陆编写shell程序;不同的维护人员对系统的维护或查看,用的可以是不同的普通账户或超级账户root;不同用户所具有的权限也不同,不同的任务工作由不同的维护人员来完成,也可以说是不同的用户。
- 值得注意的是:多用户,多任务并不是大家同时挤到一起在一台机器的键盘和显示器前来操作机器,多用户可能是通过SSH客户端工具等远程登陆服务器来进行,比如对服务器的远程控制,只要具有相关用户的权限,任何人都是可以上去操作访问服务器。
3.4 linux系统中用户角色划分
-
在linux系统中用户是分角色的,在linux系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是,对于linux系统来说,用户的角色是通过UID和GID识别的;
-
特别是UID,在linux系统运维工作中,一个UID是唯一标识一个系统用户的账号(相当于我们的身份证)。用户系统账号的名称(如chensiqi)其实给人(管理员)看的,linux系统能够识别的仅仅是UID和GID这样的数字。
用户的UID就相当于我们的身份证号一样,用户名就相当于我们的名字。
- 超级用户:root(皇帝)
- 默认是root用户,UID和GID均为0.root用户在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任意文件和命令,拥有最高的管理权限
- 在生产环境中,一般会禁止root账号通过SSH远程连接服务器,当然了,也会更改默认的SSH端口,以加强系统安全。
- 最小化安全:1,安装系统(最小化安装+必要的包组)2,开启的服务最小化
- 企业工作中:没有特殊需求,应该尽量在普通用户下操作任务,而不是root
- 再linux系统中,uid为0的用户就是超级用户。但是通常不这么做,而是sudo管理提权,可以细到每个命令权限分配怒。
- 普通用户:为普通用户授权(sudo)
su -root:角色切换,切换超级用户
sudo ls:申请提权,临时提高自己的权限
虚拟用户
与真实普通用户区分开来,这类用户最大的特点是安装系统后默认就会存在,且默认情况大多数不能登录系统,但是,他们是系统正常运行不可缺少的,他们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如:系统默认的bin,adm,nobody,mail用户等。由于服务器业务角色的不同,有部分用不到的系统服务被紧致开机执行,因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注释)
虚拟用户角色傀儡:
linux安全优化:
1,安装系统后可以删除用不到的虚拟用户,但最好不删而是注释掉,万一出问题可以恢复回来。
2,我们自己部署服务的时候,也会创建虚拟用户,满足服务的需求!例如;apache,nginx,mysql,nfs,rsync,nagios,zabbix,redis
3.5 linux系统中不同角色对应的UID说明
服务的运行需要用户角色,可以不用登陆,因此,工作中我们需要运行如mysql数据库,可以创建如下虚拟用户:
命令被linux启动的过程:
1,linux先在$PATH环境变量里找这个命令的脚本的位置
2,找到以后通过shell来执行
3,shell执行(bash + 命令)
- 因此,useradd-s/bin/bash(的本质意思就是-s 让shell 用 bin目录下的bash脚本来进行登录)
- 而,useradd -s /sbin/nologin(的本质意思就是-s 让shell用sbin目录下的nologin脚本来登录)
3.6 多用户操作系统的安全
多用户系统从实际来说使得系统管理更为方便了。从安全角度来说,多用户系统也更为安全,比如普通用户chensiqi下的某个文件不想让其他用户看到,只是设置一下该文件的权限为只有普通用户chensiqi一个用户可读可写可编辑(后文会详细讲权限)就行了,这样一来只有普通用户chensiqi一个用户可以对其私有文件进行操作,从而达到了保护每个用户的私有数据安全。