第一章 linux帐号管理与acl权限控制
不同的用户拥有不同的权限 可以通过user/group的特殊权限设定,来规范不同的群组开发
一 linux帐号与群组
A 使用者的识别码:
UID和GID 每个用户都拥有这两个属性 一个是人属性,另一个是群组属性
/etc/passwd 文件中记录个人属性
/etc/group中记录群组属性
例子:id dazhenzhong中的id命令可以查看某用户的id信息
用户登陆的时候 系统流程
1.读取/etc/passwd 查看用户名是否正确 如果正确则将uid和gid都读出来 并且读取该用户家目录与shell的环境设定
2.核对密码表,进入/etc/shadow找出对应的帐号 uid 然后核对输入的密码是否正确 md5函数
3.如果正确 就进入shell控管的阶段
passwd 文件 分隔符为:
帐号名称
密码(设置为x 原因为真正的密码在etc/shadow里面)
UID 用户id号码 0为管理员 1-999为系统保留的ID 其中1-200有发行版自己建立的系统帐号 201-999为如果系统有帐号需求时,可以使用的UID 通常这些帐号是不可以登陆的 所以才会有 /sbin/nologin这个特殊的shell的文件的存在
1000-(2^32-1)为普通个人用户使用的id
4.GID /etc/group 群组
5.用户信息说明
6.家目录
7.shell ./bashrc***
B /etc/shadow 文件结构
分隔符 同样为 :
1.帐号名称
2.密码 真正的密码 早期为des md5 当前为sha 长度更长 即相对更加安全
3.最后变更密码的时间
4.密码不可被修改的天数
5.密码需要重新变更的天数
6.密码需要修改的期限前的警告天数
7.密码过期后的帐号宽限时间 密码失效日
8.帐号失效日期
9.保留
普通用户密码忘记的解决办法 passwd即可 root用户下操作
如果是root密码忘记 则需要开机进入单人模式 修改etc/shadow文件 也可以用livecd开机后mount根目录去修改etc/shadow文件。将里面的root的密码晴空 再重新不用密码登陆
确认密码加密的算法:authconfig -test | grep hashing
C 群组 groups newgrp
/etc/group
1.群组名称
2.群组密码
3.GID
4.此群组支持的帐号名称
有效群组 effective group 与初始群组 initial group
1.groups 命令列出当前用户的群组
2.第一个出现的就是有效群组 新创建的文件归有效群组的权限
3.newgrp 有效群组的切换
想要切换的群组 必须是已经支持的群组 命令为:newgrp 群组名
切换到新的shell环境下执行
4.加入群组的方法
a root 通过usermod命令加入
b 群组管理员 而非root 通过gpasswd将用户加入到群组当中
/etc/gshadow 群组管理员
二 帐号管理
A.新增和删除用户
useradd /passwd 即如帐号 建立uid gid 家目录等
/shadow 将密码参数填入
/group 加入与帐号名称相同的群组名称
/home 建立一个同名目录 做家目录 权限为700
useradd -D 来查看预设值
文件为/etc/default/useradd 群组分为私有群组和公共群组两类 前者group=100 家目录权限值设定为700 只有自己可以进入自己的家目录 代表发行版有rhel fedora centos等 公共群组 将group=100这个设定值 作为新建帐号的初始群组 ,因此每个帐号都属于users这个群组 代表发行版有suse等
除了基本的帐号设定 UID/GID还有密码参数设定文件 /etc/login.defs 和etc/skel/*
passwd 通常会使用pam模组来检验密码 修改密码
change 查看密码详细的参数
usermod 对用户信息进行修改
userdel 删除用户 涉及到的文件
/etc/passwd /etc/shadow
/etc/group /etc/gshadow
/home/username /var/spool/mail/username
-r 连同家目录一起删除
如果想暂时停止某用户的使用 可以将/etc/shadow 第8位设置为0就可以了
如果想要将系统内某用户的所有资料删除 在userdel -r username 之前 先运行find / -user username 查找出整个系统内属于username的文件 再删除
id 普通用户的账户信息修改命令 查询某人 修改自己
chsh change shell的简写 可以修改/etc/passwd此系统文件 SUID功能
新增与删除群组
groupadd
groupmod
groupdel
gpasswd 群组管理员使用的命令
ACL
权限细化 unix-like作业系统额外项目
查询 dmesg | grep -i acl
设定
getfacl 取得某个文件或者目录的acl设定项目
setfacl 设定某个目录或文件的acl规范
用户切换
使用一般帐号:用较低权限启动系统服务:软件本身的限制
su 切换到root 需要root的密码 su - 为直接切换到root
注意login-shell 变量改变 和non-login shell 变量不变 两个设定文件
切换身份的时候 尽量使用login shell的方式
所以 如果希望完整的切换用户及其环境需要使用
su - username 或者 su -l username 才会连同PATH/USER/MAIL等变量都转换成新使用者的环境
如果只是向要执行一次root的指令 可以利用 su --c 指令串 的方式来处理
使用root切换成为任何用户的时候 并不需要输入新用户的密码
sudo 执行root的指令串 需要输入用户自己的密码 所以更加安全
env 显示shell环境变量