使用者标识符: UID 与GID
每一个文件都具有『拥有人与拥有群组』的属性吗?没错啦~每个登入的使用者至少都会取得两个ID ,一个是使用者ID (User ID ,简称UID)、一个是群组ID (Group ID ,简称GID)。两者相对应。
1、使用者账号
1. 先找寻/etc/passwd 里面是否有你输入的账号?如果没有则跳出,如果有的话则将该账号对应的UID 与
GID (在/etc/group 中) 读出来,另外,该账号的家目录与shell 设定也一并读出;
2. 再来则是核对密码表啦!这时Linux 会进入/etc/shadow 里面找出对应的账号与UID,然后核对一下你刚
刚输入的密码与里头的密码是否相符?
3. 如果一切都OK 的话,就进入Shell 控管的阶段啰!
跟使用者账号有关的有两个非常重要的文件,一个是管理使用者UID/GID重要参数的/etc/passwd ,一个则是专门管理密码相关数据的/etc/shadow。下面介绍这两个文件。
/etc/passwd 文件结构:每一行都代表一个账号,有几行就代表有几个账号在你的系统中! 不过需要特别留意的是,里头很多账号本来就是系统正常运作所必须要的,我们可以简称他为系统账号,例如 bin, daemon, adm, nobody 等等,这些账号请不要随意的杀掉他。
文件中内容有:账号名称、密码、UID、GID\用户信息栏说明、家目录、shell。
/etc/shadow 文件结构:各程序当然需要读取/etc/passwd 来了解不同账号的权限。将密码移动到 /etc/shadow 这个文件分隔开来的技术, 而且还加入很多的密码限制参数在/etc/shadow 里。
文件中内容有:账号名称、密码、最近更动密码的日期、密码不可变动的天数、密码需要重新变更的天数、密码需要变更期限前的警告天数、密码过期后的账号宽限时间(密码失效日)、账号失效日期、保留
注意:
一般用户的密码忘记了:这个最容易解决,请系统管理员帮忙, 他会重新设定好你的密码而不需要知道你的旧密码!利用root 的身份使用passwd 指令来处理即可。
root 密码忘记了:但我们知道root 的密码在/etc/shadow 当中,因此你可以使用各种可行的方法开机进入Linux 再去修改。例如重新启动进入单人维护模式(第十九章)后,系统会主动的给予root 权限的bash 接口, 此时再以passwd 修改密码即可。
2、关于群组
群组的配置文件为/etc/group 与/etc/gshadow。
/etc/group 文件结构:这个文件就是在记录GID与组名的对应了。内容有组名、群组密码、GID、此群组支持的账号名称
问题:加入同时加入多个群组,以哪个群组为准。这里要介绍一下有效群组。
有效群组与初始群组:
/etc/passwd 里面的第四栏那个GID 就是所谓的初始群组(initial group),如果我以 dmtsai 这个使用者的身份登入后,该如何知道我所有支持的群组呢? 很简单啊,直接输入groups 就可以了!第一个输出的群组即为有效群组。
newgrp: 有效群组的切换,它以另一个shell 来提供这个功能,使用完用exit进行退出。
加入群组方式:
一个是透过系统管理员(root) 利用usermod 帮你加入;如果root 太忙了而且你的系统有设定群组管理员,那么你可以透过群组管理员以gpasswd 帮你加入他所管理的群组中。
/etc/gshadow的内容有:组名、密码栏、群组管理员的账号、有加入该群组支持的所属账号
3、账号管理
新增与移除使用者:
useradd
CentOS 这些默认值主要会帮我们处理几个项目:
在/etc/passwd 里面建立一行与账号相关的数据,包括建立UID/GID/家目录等;
在/etc/shadow 里面将此账号的密码相关参数填入,但是尚未有密码;
在/etc/group 里面加入一个与账号名称一模一样的组名;
在/home 底下建立一个与账号同名的目录作为用户家目录,且权限为700
passwd:用来给账号设置密码
chage:密码参数显示功能
usermod:进行账户相关的微调
userdel:删除用户相关数据
用户账号/密码相关参数:/etc/passwd, /etc/shadow
使用者群组相关参数:/etc/group, /etc/gshadow
用户个人文件数据: /home/username, /var/spool/mail/username..
useradd/usermod/userdel ,那都是系统管理员所能够使用的指令,下面介绍一些一般身份用户常用的指令:
id:查询某人或者自己相关的UID/GID
finger:将用户的相关属性列出来
chsh:change shell
新增与移除群组:
群组的内容都与这两个文件有关:/etc/group, /etc/gshadow。
groupadd:新建群组
groupmod:进行群组相关参数的修改
groupdel:删除群组
gpasswd:群组管理员功能,可以管理哪些账号可以加入/移出该群组。
4、ACL细部权限规划
ACL 是Access Control List 的缩写,主要的目的是在提供传统的owner,group,others 的read,write,execute 权限之外的细部权限设定。ACL 可以针对单一使用者,单一文件或目录来进行r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助。比如,假如我们需要对该文件设置3个不同用户,两个不同群组的不同权限,传统权限控制无法做到。
使用者(user):可以针对使用者来设定权限;
群组(group):针对群组为对象来设定其权限;
默认属性(mask):还可以针对在该目录下在建立新文件/目录时,规范新数据的默认权限
ACL的设定技巧:getfacl, setfacl
getfacl:取得某个文件/目录的ACL 设定项目;
setfacl:设定某个目录/文件的ACL 规范。
5、使用者身份转换
两种方式:以『su - 』直接将身份变成root 即可,但是这个指令却需要root 的密码;以『sudo 指令』执行root 的指令串。
单纯使用『su 』切换成为root 的身份,读取的变量设定方式为non-login shell 的方式,这种方式很多原本的变量不会被改变;
su -使用 login shell 的方式切换为 root 的身份并观察变量。
相比如使用su需要使用root密码,sudo的执行则仅需要自己的密码即可,但是我们要使用visudo 去修改/etc/sudoers,
I. 单一用户可进行root 所有指令,与sudoers 文件语法:
II. 利用wheel 群组以及免密码的功能处理visudo
6、特殊的shell--、sbin/nologin
只是不能登入shell,但是还是能利用主机资源的。
PAM模块:PAM 可以说是一套应用程序编程接口(Application Programming Interface, API),他提供了一连串的验证机制,只要使用者将验证阶段的需求告知PAM 后, PAM 就能够回报使用者验证的结果(成功或失败)。
其中配置文件中的内容有:验证类别、控制标准、PAM模块与该模块的参数
常用模块简介:
7、主机上的用户讯息传递
查询使用者:w、who、last、lastlog
使用者对谈:write、mesg、wall
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------Linux更详细的权限管理参见:https://www.cnblogs.com/kylinlin/p/5000523.html