Linux学习笔记:Linux账号管理与ACL权限设定
一、Linux的账号与群组
使用者标识符UID与GID
使用者ID(User ID)
群组ID(Group ID)
文件利用UID与GID来判别它的拥有者和群组
使用者账号
登入主机的流程
(1)在/etc/passwd中找寻是否有你的账号,如果有的话将账号对应的UID与GID(在/etc/group中)读出来,另外,该账号的家目录与shell设定也一并读出来
(2)核对密码表,进入/etc/shadow 里面找出对应的账号与UID,然后核对密码是否相符
(3)进入Shell控管阶段
/etc/passwd文件结构
每一行代表一个账号,很多账号是系统正常运行所必需的,系统账号,如:bin、daemon、adm、nobody等
七个部分用:分割
账户名称:密码:UID:GID:用户信息说明栏:家目录:shell
注意:UID,0为root,1-999为系统账号(1-200由distributions自行建立的系统账号,201-999若用户有系统账号需求时可以使用的账号UID),1000-很大的数为可登入的账号
/etc/shadow文件结构
九个字段用:分割
账号名称:密码:最近更动密码的日期(从1970.1.1开始累加的天数):密码不可被更动的天数:密码需要重新更动的天数:密码需要变更期限钱的警告天数:密码过期后的账号宽限时间:账号失效日期:保留
忘记密码的解决办法
一般用户:root使用passwd更改
root:进入单人维护模式,用passwd修改密码
查看shadow使用哪种加密机制
[[email protected] gyy]# authconfig --test | grep hashing
password hashing algorithm is sha512
关于组群
/etc/group 文件结构
记录GID与组名的队形,四个字段以:分割
组名:组群密码:GID:此组群支持的账号名称
有效组群和初始组群
groups有效与支持群组的查看
newgrp有效群组的切换
/etc/gshodow 文件结构
第二位为密码,如果为!或者为空表示不具有群组管理员
四个字段,以:分割
组名:密码:组群管理员账号:有加入该组群支持的所属账号
二、账号管理
新增和移除使用者
useradd,相关配置文件,passwd,usermod,userdel
1、useradd
使用useradd时系统的默认操作
系统账号主要是用来进行运作系统所服务的权限设定,系统账号默认不会主动建立家目录
useradd的参考档
100位users用户组,但是在CentOS中并不会默认分到users,而是与用户同名的用户组
私有群组机制(RHEL、Fedora、CentOS)和共有群组机制(SuSE等)
HOME:用户家目录的基准目录
SKEL:用户家目录参考基准目录
UID/GID还有密码参数的参考档
/etc/login.defs
所以useradd在建立Linux账号时,至少会参考
/etc/default/useradd
/etc/login.defs
/etc/skel/*
2、passwd
使用useradd建立账号之后,在预设的情况下,账号是被暂时封锁的,要给它设定密码
快速设置密码
echo "密码字符串" | passwd --stdin 用户名
锁定账号
其实就是密码前面加了俩!
解锁
3、change
更详细的密码参数显示
可以设置更加安全的密码,设置过期时间等等
4、usermod
进行账号相关数据微调
5、userdel
删除用户的相关数据
用户账号/密码相关参数:/etc/passwd
使用者用户组相关参数:/etc/group,/etc/gshadow
用户个人文件数据:家目录,/var/spool/mail/username…
-r 连同家目录一起删除
通常要移除一个账号时,可以手动将/etc/passwd与/etc/shadow里面的账号取消即可,如果只是暂时不启用,将/etc/shadow中失效日期(第八字段)设定为0,使用userdel通常是不要让该用户在主机上使用任何数据了,如果想要完整移除某用户的所有文件,在userdel之前,先find -user username查出整个系统内属于username的文件,在加以删除
用户功能
id 查询用户信息
finger 查阅用户很多相关信息
一般不默认安装,手动安装一下
chnf 像是change finger
可以给用户加一些联系信息
chsh 像是change shell
新增和移除用户组
groupadd 创建用户组
groupmod 对用户组进行调整
groupdel 删除用户组
账号管理示例:
myuser3是不可登入系统的账号,因此需要使用/sbin/nologin这个shell来给予,这样该账号就无法登入
使用外部身份认证系统
authconfig-tui指令 用来设定一些数据
三、主机细部权限规划:ACL的使用
传统的权限设定只有所有者、用户组、其他人三种权限,没发对某一使用者或者某一用户组来设定特定的权限需求,要使用ACL机制
ACL(Access Control List),在提供传统权限设定外可以针对单一使用者但以文件或目录来进行rxw的权限设定
可针对几个项目
使用者:可以针对使用者来设定权限
用户组:针对用户组为对象来设定权限
dmesg | grep -i acl可以查看是否支持ACL
setfacl
设定ACL的特殊权限
getfacl
查阅权限数据
四、使用者身份切换
需要身份切换的原因:
平日操作使用一般账号、用较低权限启动系统服务、系统本身的限制
让一般使用者转变身份为root
su :需要root密码
sudo:需要用户输入自己的密码,多人共管同一部主机时sudo比su更好
su
直接使用su切换成root的身份,读取的变量设定方式为non-login shell的方式,这种方式很多原本的变量不会改变,因此很多root管用的指令就只能使用绝对路径来执行
su - 是让使用者的身份变成root 并开始操作系统
-c 仅一条指令切换身份
例:su - -c "head -n 3 /etc/shadow"
sudo
并非所有人都能执行sudo,而是仅有规范到/etc/sudoers内的用户才能执行sudo这个指令
-u 后面接欲切换的使用者,若无此项则代表切换身份为root
我们可以使用sudo来切换为系统用户操作,而系统用户不能su
sudo的执行流程
重点:能否使用sudo必须要看/etc/sudoers的设定值,而可使用sudo者是透过输入用户自己的密码来执行后续的指令串
/etc/sudoers的内容是有一定的规范的,直接vim是不好的,要使用visudo来修改
visudo
单一用户可进行root所有指令
sudo的时间间隔问题:当两次执行sudo的间隔在5分钟以内时不需要输入密码
五、用户的特殊shell与PAM模块
系统账号是不需要登入shell的
无法登入:无法使用bash或其他shell来登入系统
无法登入不代表无法使用系统资源
PAM模块
是一套应用程序编程接口,提供了一连串的验证机制,只要使用者将验证阶段的需求告知PAM后,PAM就能回报使用者验证的结果(成功或者失败)
执行passwd后呼叫PAM的流程:
PAM模块有关的配置文件位于/etc/pam.d/*及/etc/security/*
/etc/pam.d
六、主机上的用户讯息传递
查询使用者:w,who,last,lastlog
使用者对谈:write,mesg,wall
使用者邮件信箱:mail
七、一些账号相关的检查工具
pwck:检查/etc/passwd 这个文件内的信息与实际的家目录是否存在等信息
pwconv:将/etc/passwd内的账号与密码移动到/etc/shadow中,使用useradd增加用户不需要,手动设定用户时需要
chpasswd:读入未加密前的密码,并且经过加密后,将加密后的密码写入/etc/shadow,该命令常被使用在大量建置账号的情况中