概述
对于使用计算机的用户来讲,都知道要使用计算机,都需要使用用户来进行登录,并且都知道用户是什么。那么计算机如何识别用户呢?计算机通过一种所谓的认证机制来识别这个用户是不是有权限或者说是被计算机所允许登录使用计算机资源的用户。
在计算机安全模型当中,计算机的每一个可用户的、可访问的资源,通常都给他关联一个用户标识,即给计算机上的可用资源都给一个属主的身份,规定他属于谁!所以计算机对资源的权限控制,仅仅是将可用的资源授予给了计算机内部的一个标识,这个用户标识就叫做用户名,但是这个用户名对应的现实中的人是谁?这并不靠计算机自身来进行判定,或者说并不是靠我们的文件所属的对应关系来判定的。而是靠一种认证的机制,让那些知道这个用户名的,并且通过某种合法途径或者手段能让计算机识别出他的确是他所声称的那个人。因为在计算机上用户存在的目的是把有限的资源进行合理的指派。
那用户是什么?对计算机而言,用户仅仅是一种标识符而已。这个标识符通常有两类信息:包括用户名和用户ID号。用户名是指一串字符串,而真正计算机所识别的是用户ID,是一串数字。
在登录计算机的时候,作为一个使用计算机的用户,我们需要提供用户名和密码,当我们提供用户名以后,我们的操作系统会自动把用户名转为用户ID号,同时,还要去用户输入密码。由于用户名可能大家都知道,因此密码就是确定使用计算机的这个或者这几个人就是可以给予他们计算机权限的人的认证机制。
通过用户认证成功之后,进入计算机,他能够操作的资源的种类因为权限的不同而不同。即就是用户在通过了认证之后,就需要对用户进行授权。对用户进行认证之后,用户对资源能够使用到那种地步,就需要对用户进行授权操作。那我们怎样确保授权给用户之后,权利不至于被滥用呢?这就需要使用到对用户的审计操作。
而我们上述提到的认证、授权、审计,即是计算机安全模型当中的3A模型。3A即:
A:Authencattion 认证
A:Authorzation 授权
A:Accounting 审计
这就是Linux的用户机制,Linux的用户机制首先认证这些用户,确保计算机的资源是分配给予的正确的人,而且要确保这些资源被用户合法使用。
用户管理概述
在Linux中,由于进程是动态的,因此进程是以特定用户的身份来进行运行的,而文件是静态的,以属主、属组等从属关系来运行。所以一个用户到底有没有权限去访问一个资源,就取决于他对文件的属主和属组的关系。
Linux中,文件的属主定义了这个文件的所有者以及相关联的权限,并且一个文件只能有一个属主,那么其他的用户想要访问这个文件时怎么办呢?Linux中,把其他要访问这个文件的用户统一都归结到一个用户组里,所以组就是将多个用户域权限建立管理关系的一个容器。
下面我们分别来说明用户和组的相关信息:
在Linux中,拥有两类用户,管理员和普通用户。Linux用户的模型:UserName/password
而用户一般都有自己的ID号,我们称之为UID,Linux中UID的范围为:0-65535
管理员:0
普通用户:1-65535
而在普通用户中,有分为系统用户和登录用户,系统用户用来启动一些运行系统必备的服务时所使用。
系统用户的ID号:
CentOS6: 1-499
CentOS7:1-999
处于这些ID好范围的用户ID,我们就称之为的系统用户。一般不用于登录系统,因此并不具备家目录。
登录用户的ID号:
CentOS6: 500+
CentOS7: 1000+
处于这些ID好范围的用户ID,我们就称之为的登录用户。
Linux中,Linux组:GroupName/GID,简称为GID,组也两类:
管理员组:0
普通组:1-65535
系统组:
CentOS6: 1-499, 1-999
普通组:
CentOS7: 500+, 1000+
以用户为中心,一个用户可以同时属于多个组。
用户的基本组;
用户的私有组;
用户的附加组;
Linux用户和组的相关的配置文件:
/etc/passwd:用户名、UID、基本组等信息
/etc/group:组名、GID、组内包含的用户;
/etc/shadow:用户密码及相关属性;
/etc/gshadow:组的密码及相关属性;
/etc/passwd:
name:password:UID:GID:GECOS:directory:shell
登录名:x:UID:GID:comment:主目录:用户默认shell
/etc/shadow:
login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field
6:加密算法
单向加密:
提取数据指纹;
md5, sha1, sha224, sha256, sha384, sha512
雪崩效应:
定长输出:
相对于Unix元年;
1970年1月1号;
/etc/group
group_name:password:GID:user_list
密码的复杂性策略:
1、使用数字、小写字母、大写字母、特殊字符四类中至少三类;
2、足够长;
3、使用随机密码;
4、定期更换;
用户管理命令
用户和组管理的相关命令:
useradd、usermod、passwd、userdel
groupadd、groupmod、gpasswd、groupdel
chage, chsh, chfn
id, w, who, whoami
su
(1)useradd命令:
作用:创建用户
格式:useradd [options] LOGIN
useradd -D [options]
参数:
-r: 创建系统用户
-u UID: 指定UID;
-g GID: 指定用户所属基本组,此组必须事先存在
-c ‘COMMENT‘:
-d /PATH/TO/SOMEWHERE:指定用户的主目录路径;此位置不能事先存在,否则,其用户相关配置文件将被复制;/etc/skel
-s SHELL:设定用户的默认shell;通过cat /etc/shells查看用户默认shell。
-G GID,...:指定所属的附加组;
-M: 不给用户创建家目录;
使用说明:
示例:
练习:创建用户Oracle,所属附加组database和sql,ID号为3000, 家目录为/home/database;
(2)groupadd命令:
作用:创建组
格式:groupadd [OPTIONS] GROUPNAME
参数:
-g GID: 指明组ID;
-r: 创建系统组;
使用说明:
示例:
(3)id命令:
作用:查看用户相关的id信息;
格式:id [OPTION]... [USER]
参数:
-u: UID
-g: GID
-G: Groups
-n: NAME
使用说明:
示例:
(4)su命令:
作用:su:switch user, 切换用户或以其它用户的身份执行命令;
格式:
参数:
使用说明:
su USERNAME: 非完全切换;非登录式切换
su - USERNAME或su -l USERNAME: 完全切换;登录式切换
仅以指定用户的身份执行指定的命令:
su - USERNAME -c ‘COMMAND‘
示例:
(5)usermod命令:
作用:用户属性修改
格式:usermod [OPTION]... LOGIN
参数:
-u UID
-g GID
-G GID[,GID,...]:修改用户所属的附加组;同时使用-a选项;
-s SHELL
-c ‘COMMENT‘
-d HOME: 修改用户的家目录为新位置时,用户原来的文件是不会被移动至新家;-m选项可实现同时将其迁至新的家目录;
-l LOGIN:
-L:lock user
-U: unlock user
使用说明:
示例:
(6)passwd命令:
作用:给用户添加密码
格式:passwd [OPTION] [UserName]
参数:
-l: lock user
-u: unlock user
-n mindays: 最短使用期限;
-x maxdays:默认为99999天;
-w warndays:
-i inactivedays:
--stdin:从标准输出接收用户密码;
使用说明:
示例:
echo ‘centos‘ | passwd --stdin centos
(7)userdel命令:
作用:删除用户
格式:userdel [-r] USERNAME
参数:
-r:删除用户的同时删除其家目录;
使用说明:
示例:
(8)groupmod命令:
作用:组属性修改
格式:groupmod [OPTION] GROUPNAME
参数:
-n GROUP_NAME
-g GID
使用说明:
示例:
(9)gpasswd命令:
作用:设定组密码
格式:
参数:
使用说明:
示例:
(10)newgrp命令:
作用:切换基本组为指定的组
格式:
参数:
使用说明:
示例:
(11)groupdel命令:
作用:删除组
格式:
参数:
使用说明:
示例:
(12)chage命令:
作用:
格式:
参数:
使用说明:
示例:
(13)chage命令:
作用:修改用户账号及密码的属性
格式:chage [OPTION]... LOGIN
参数:
-d LAST_DAY
-E
-l
-m
-M
-W
使用说明:
示例:
(14)chfn命令:
作用:
格式:
参数:
使用说明:
示例:
(15)chsh命令:
作用:
格式:
参数:
使用说明:
示例:
(16)finger命令:
作用:
格式:
参数:
使用说明:
示例:
文件权限概述
用户对文件的访问权限有三种:r, w, x即可读、可写和可执行。
对于文件:
r: 可使用文件查看工具查看其内容;
w: 可使用文件编辑工具编辑其内容;
x: 可向内核请求将此文件运行为进程;
对于目录:
r: 可使用ls命令列出目录中的文件或子目录列表;
w: 可在此目录中创建或删除文件;
x:可使用‘ls -l’列出目录文件及子目录的详细属性信息;可使用cd命令切换工作目录为指定目录;
文件的权限主要针对三类对象进行定义:
ownuer: u, 属主;
group: g, 属组;
other: o, 其它;
用户启动某进程访问某文件时,权限的匹配机制:
1、首先查看此进程的属主,与被访问的文件的属主是否是同一个用户,如果是,则以被访问的文件的属主的身份来访问该文件;从而应用权限为属主的权限。
2、如果不是属主身份,则查看该用户是否属于被访问文件的数组,如果是,则以被访问的文件的属组的身份来访问该文件;从而应用权限为属组的权限。如果不是,则以其他组的身份来访问该文件。
某类用户对某文件的访问权限:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
因此权限可以转为对应的数字来表示:
664:rw-rw-r--
rwxr-x---: 750
权限管理命令
权限管理: chmod
所属关系管理: chown, chgrp
文件遮罩码:umask
(1)chmod命令:
作用:修改文件权限
格式:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE..
参数:
使用说明:
示例:
三类:
u: owner
g: group
o: other
a: all
两种用法:
=mode
=rx, =r, =
ug=rx, go=
[+|-]mode
u+r,
+w
+x
-R: recursive
(2)chown命令:
作用:修改文件属主
格式:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
参数:
-R: recursive
使用说明:
示例:
(3)chgrp命令:
作用:修改文件属组
格式:
参数:
使用说明:
示例:
(4)umask命令:
作用:umask:遮罩码
格式:
参数:
使用说明:
示例:
目录:777-umask
文件:666-umask
如果某一类用户的权限减得的结果有执行权限,此时会自动让其权限位加1;
umask UMASK
设定:仅对当前shell进程有效;