用户及权限管理
Linux具有Muliti-task(多任务)Muliti-Users(多用户)的环境。
用户:为了保护所有使用计算机者的权益不受到损害,所以要实现资源的使用隔离机制,为了实现资源的使用隔离机制,就要标识每一个使用者,而这每一个使用者就是用户。
用户ID:每一个使用者的唯一标识,计算机用来识别使用者。
用户密码:用户的认证手段。Authenticationg(认证),Authorization(授权),Auditiong(审计) 3A
用户类别:分为管理员和普通用户,普通用户又分为系统用户和登录用户。
用户标识:UserID,简称UID。默认采用16bits二进制数字。采用范围:0-65535。管理员的UID为0,永远不变。普通用户:1-65535(60000),系统用户:1-499(CentOS6),1-999(CentOS7),登录用户:500-60000(CentOS6),1000-60000(CentOS7)。用户登录后自动转换为数字标识进行使用,用户登录系统后会有名称解析的过程来识别用户。
名称解析:简单来讲就是名称转换的过程,Username< - - >UID,根据名称解析库进行,这个库包含了用户的全名,家目录等全部信息,位于/etc/passwd。还额外保存了用户的其他附加信息。
组:用户组,“盛放“用户的容器。单一的逻辑组件,便于实现权限的分配。
组类别:管理员组和普通用户组,类似于用户分类,普通用户组又分为系统组和登陆组。顾名思义,组也需要组标识。与用户的分类方式不同的是,组的分类更为细致。在用户的角度来看,用户组又可以分为用户的主组(基本组)和用户的附加组。根据组中包含的是一个用户还是多个用户,又可以将组分为私有组和公共组,顾名思义,私有组就是组名和用户名相同且只包含一个用户。组内包含了多个用户就是公共组。
组标识:GroupID,简称GID。管理员组:0普通用户组:1-65535(60000),系统用户组:1-499(CentOS6),1-999(CentOS7),登录用户组:500-60000(CentOS6),1000-60000(CentOS7)。组同样也需要名称解析。
名称解析:groupname,< - - >GID 解析库:/etc/group
认证信息:通过比对事先存储的,与登陆时提供的信息是否一致。
passwd:/etc/shadow /etc/gshadow 。为了安全,密码采用字符串的形式存放在/etc/shadow /etc/gshadow 密码库中,并采用单向加密(只能加密,不能解密;提取数据特征码)的机制。
密码的使用策略:1.使用随机密码;2.最短长度不要低于8位;3.应该使用大写字母,小写字母,数字和标点符号四类字符中至少三类;4.定期更换。
~密码的加密算法共有六种:md5,sha1,sha224,sha256,sha384,sha512。为了避免两个用户密码相同,在计算时加入salt添加随机数。
~用户信息库中各种数值从左至右所表达的含义:name:用户名,passwd:可以是加密的密码,也可以是占位符x;UID:用户的id号;GID:用户所属的主组的ID号;GECOS:注释信息;directory:用户的家目录;shell:用户的默认shell,登录时默认shell程序。如图:
~用户的密码从左至右各数值所表达的含义:用户名;加密的密码;最近一次修改密码的时间;最短使用期限;最长使用期限;警告期限;过期期限;保留字段;如图:
~组的信息库从左至右各数值表达的含义:组名;密码;GID;以此组为附加组的用户的用户列表。如图:
相关命令:
useradd:添加用户;useradd [OPTION] user_name;-u: 指定UID; -g:指定基本组ID,此组事先要存在;-c:指明注释信息;-G:指明用户所属的附加组,多个组之间用逗号隔开; -d:以指定的路径为用户的家目录,通过复制/etc/skel此目录并重命名来实现,指定的家目录如果事先存在,则不会为用户复制环境配置文件。-s:指定用户的默认shell,可用的shell列表存储在/etc/shells文件中; -r:创建系统用户。
useradd �CD:显示创建用户的默认配置;
useradd �CD 选项 :修改默认选项的值。也可编辑/etc/default/useradd来修改。
注:创建用户时产生的诸多默认设定配置文件为etc/login.defs
注:系统用户:为了能够让后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从不用登录系统。
usermod:修改用户属性:usermod [OPTION] username;-u:修改用户的ID为指定的新UID; -g:修改用户的基本组;-G:修改附加组,原来的附加组会被覆盖;-a:追加附加组,与-G一同使用。-c:修改注释信息; -d:修改家目录,但用户信息不会移动;-m:与-d一同使用,保留原来家目录的内容; -l:修改用户名 ;-s:修改修改默认shell;-L:锁定用户密码禁止登录;-U:解锁用户密码。
groupadd:添加组;groupadd [OPTION]group_name;-g:指定GID,默认为上一个组的GID+1 ; -r:创建系统组。
groupmod:修改组属性;groupmod [OPTION] group_name;-g:修改GID; -n:修改组名。
userdel:删除用户; userdel [OPTION] username ; -r:删除用户时一并删除其家目录。
passwd:passwd [OPTION] [USERNAME](1)passwd 修改用户自己的密码; (2)passwd username修改指定用户的密码,但仅有root有此权限。-l -u:锁定和解锁用户; -d:用户密码串; -e DAYS :过期期限,日期。-i DAYS: 非活动期限; -n DAYS: 密码的最短期限; -x DAYS: 密码的最长使用权限; -w DAYS: 警告期限。
--stdin:echo“string” | passwd �Cstdin 用户名 (快捷添加用户密码)。
gpasswd:gpasswd [OPTION] group; -a:向组中添加用户。 -d:从组中移除用户
newgrp:newgroup [-] [group]临时切换指定的组为基本组,id查看,exit退回原来基本组。
-: 会模拟用户重新登录以实现重新初始化其工作环境。
chage:更改密码过期信息。chage [OPTION] 登录名。-d:修改密码修改期限; -E:修改过期日期; -m:修改最短使用期限; -M:修改最长使用期限。
id:显示用户的真实和有效ID信息。id [OPTION] ….[USER].-u:仅显示有效的UID; -g:仅显示用户的基本组ID; -G: 仅显示用户所属的所有组ID; -n:显示名字而非ID;-r:显示用户真实的ID。
su:switch user切换用户。分为登录式切换:会通过重新读取用户的配置文件来重新初始化。su �C USERNAME;su -l USERNAME
非登录式切换:不会读取目标用户的配置文件进行初始化
-c:su �C 目标用户 �Cc ‘COMMAND’不切换用户,仅以指定用户的身份运行此处指定的目录。
注:管理员可无密码切换至其他任何用户,非管理员切换至其他用户许给出目标用户密码。
权限管理:
进程的安全上下文:进程以其发起者的身份运行;进程对文件的访问权限取决于发起此进程的用户的权限。
权限:r:读; w:写 x:执行。采用ls �Cl [FILE]..命令查看文件权限等信息。如图:
文件信息从左至右第一位表示文件类型,左边三位表示文件属主的rwx权限,中间三位表示文件属组的rwx权限,右边三位表示其他用户rwx权限。
权限应用模型:发起进程的用户如果是文件属主,则应用左三位文件属主权限,如果发起进程的用户不是文件的属主,而属于该文件的属组,则应用中三位属组权限,否则既不属于属主,又不属于属组,则应用右三位其他权限。
文件:r:可获取文件的数据; w: 可修改文件的数据;x:可将此文件运行为进程.
目录:r :可使用ls命令获取其下的所有文件列表;w:可修改此目录下的文件列表,即创建或删除文件;x:可cd至次目录中,且可使用ls �Cl来获取所有文件的详细属性信息。
mode模型:rwxrwxrwx:左三位定义user(owner)的权限,中三位定义group的权限,右三位:定义other的权限。
owenership:user,group
权限组合机制:--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
权限管理命令:
chmod命令:(1)chmod [OPTION]... MODE[,MODE]...FILE...
(2)chmod [OPTION]... OCTAL-MODE FILE...
(3) chmod [OPTION]...--reference=RFILE FILE...
三类用户:u:属主; g:属组; o:其他; a:所有
(1) chmod[OPTION]... MODE[,MODE]... FILE...
MODE表示法:赋权表示法:直接操作一类用户的所有权限位rwx u=;g=;o=;a=。授权表示法:直接操作一类用户的一个权限位u+ u-;g+ g-;o+ o-; a+ a-;
(2) chmod[OPTION]... OCTAL-MODE FILE...
(3) chmod[OPTION]... --reference=RFILE FILE...
选项:-R:递归修改。
注:用户只能修改属主为自己的那些文件的权限。
从属关系管理命令:chmod,chgrp。
chown:(1)chnown [OPTION]…[OWENR][:[GROUP]] FILE…
( 2 )chown [OPTION] …--reference=RFILE FILE……
选项:-R递归修改
chgrp:(1)chgrp [OPTION]... GROUP FILE...
(2)chgrp [OPTION]... --reference=RFILEFILE...
注:仅管理员可修改文件的属主和属组;
umask:文件的权限反向掩码;遮罩码; 文件:666 �C umask;目录:777 �C umask
注:之所以文件用666去减,表示文件默认不能拥有执行权限,如果减得的结果中有执行权限,则需要将其加1;
umask:023; 666-023=644 777-023=754
umask命令:umask 查看当前umask ;umask MASK :设置umask。
学习心得:在linux系统中采用的多用户机制会让用户操作起来更方便,更加便于管理,更加安全。用户就像是进入系统的一把钥匙,而用户组就像是一把钥匙串,系统就像是这所房子。这把钥匙串上有多个钥匙,有的钥匙能打开房屋的所有门,有的只能打开个别门。而这些门就像是对用户的权限,有了这把钥匙就可以进入屋内进行想要的操作,顾名思义就是对系统进行规定允许范围内的事情,而权限管理机制又给每个用户设定了对文件的各种权限,在linux系统中一切皆文件,用户有了相应的操作文件的权限就等于有了操作系统的各种权限,要注意的是尽量避免使用管理员的身份操作文件,因为管理员权限太大,防止我们在一些失误操作时造成不必要的损失。