Linux账号管理与ACL权限

1、登录shell
(1)/etc/passwd
①/etc/passwd文件内容介绍,其中每一行的内容如下(共7列):
用户名:密码(都是x):UID:GID:用户信息说明:家目录:用户登录shell
②UID简介
0 系统管理员,可以但不建议修改其他用户的UID为0
1~499 系统用户,其中1~99为系统用户,100~499为用户添加的系统服务账户
500~65535 一般用户
③GID简介
GID与/etc/group文件有关
(2)/etc/shadow
①该文件中存放了用户的登录密码,之所以不放在/etc/passwd中是因为程序的运行与权限紧密相关,而权限又与UID与GID相关,所以需要经常读取/etc/passwd。为了保护密码的安全,才将密码转移。
②/etc/shadow文件内容如下(共9列):
用户名:密码:最近修改密码的日期:密码修改后不可被更动的天数:密码需要重置的天数(一般为99999):密码需要重置前的警告天数:密码失效后的宽限天数:密码失效日:保留字段

2、忘记密码
(1)passwd命令简介
passwd -【lu】 用户
-l 锁住密码,使普通用户不能修改密码
-u 解锁用户密码
(2)修改密码
①普通用户
直接输入passwd命令,不需要加任何参数,然后输入新旧密码即可。
②使用root用户修改普通用户密码,只需输入新密码
passwd 用户名
(3)忘记密码
①普通用户忘记密码
使用root用户身份登录,用“passwd 用户名”命令重置
②root用户忘记密码
开机时以单人维护模式进入,再用passwd修改密码

3、关于群组
(1)usermod命令简介
usermod -G 附加分组 用户名 ##将用户添加/修改到附加分组
usermod -l 新用户名 旧用户名 ##修改用户名
usermod -L 用户名 ##锁定用户,使密码无效
usermod -U 用户名 ##解锁用户
usermod -a -G 附加分组 用户名 ##在原来附加分组的基础上再新增一个附加分组
(2)/etc/group
/etc/group内容如下(共4列):
组名:群组密码(x):GID:组内用户成员(以“,”隔开)
(3)初始群组
/etc./passwd中的GID就是初始群组,初始群组不需要在/etc/group中第4列填入用户名
(4)groups命令简介
groups 用户名
  • 如果不带用户名,显示的是当前用户所属的用户组
  • 如果带用户名,则显示的是用户名的所属组
(5)有效群组
①使用groups命令输出的第一个群组就是有效群组
②有效群组的切换
当前用户登录的情况下,使用“newgrp 组名”切换即可,但前提是待切换的组名必须是该用户拥有的群组。需要注意的是,切换有效群组时,会开启一个新的bash shell,退出需要输入exit。
(6)/etc/gshadow
/etc/gshadow内容如下:
组名:密码:群组管理员:群组拥有的账号
密码为!时,表示无合法密码,所以也无群组管理员。群组管理员这个概念是当无法使用root时,可以用gpasswd命令操作群组,但自从有了sudo这个命令,群组管理员已经很少使用。

4、新增、删除用户
(1)useradd
useradd 【-u UID】 【-g 初始群组】 【-G 附加群组】 【-mM】 【-c 说明栏】 【-d 家目录】
【-s shell类型】 用户名
-m 自动建立用户的家目录(普通用户的默认选项)
-M 不自动建立用户的家目录(系统用户默认值)
-r 建立系统账号
-D useradd的默认值

插曲:查看用户家目录
echo ~用户名

(2)/etc/login.defs
UID/GID和密码参数是参考的/etc/login.defs这个文件,
(3)/etc/skel/*
用户家目录中的配置文件就是拷贝的这个目录下的
(4)userdel
user -r 用户名
-r 连用户的家目录一并删除
一般很少用这个命令,如果只是想让账号无法使用,只要将/etc/shadow中的第8列账号失效日期设为0就行了。

5、查阅用户信息
(1)前面的useradd/usermod/userdel都是系统管理员才能用的命令,如果普通用户想查看用户信息,可以通过“finger”命令查询,也可以使用“chfn”修改用户的一般信息。
(2)chsh
chsh -l 列出目前系统中的shell
chsh -s shell路径 修改用户的登录shell
(3)id
查阅UID、GID等

6、ACL权限
6.1、什么是ACL
传统的权限设置只能针对(用户,用户组,其他组)进行(r,w,x)之类的权限设定,ACL可以针对单一用户,单个文件或目录来进行更细致的权限设置。

6.2、启动ACL
(1)ACL需要有文件系统的支持才行,如何查看文件系统是否支持ACL,可以使用mount命令或者
dumpe2fs -h /dev/hda2
(2)如果没有开启ACL权限,可以通过如下命令开启
mount -o remount,acl /
如果想每次开机都生效,得在/etc/fstab中添加ACL权限

6.3、使用ACL权限
借助getfacl和setfacl命令可以对文件和用户进行权限设置

7、切换用户身份
7.1、su
(1)su 【-lm】 【-c “指令”】 【用户名】
- -与-l类似,代表切换用户时,使用待切换用户的环境配置
-m 与-p类似,表示切换用户时,不使用待切换用户的环境配置
-c 后面可以执行一次指令,指令必须用双引号引起来
注:关于这个-c指令,类似于sudo,表示用一次root身份执行指令,需要先输入root的密码,执行完后又会变回普通用户。
(2)使用exit可以离开su的环境
(3)使用su的缺点,必须知道root的密码

7.2、sudo
(1)sudo可以让当前用户以其他用户的身份执行指令,因此不是所有人都能使用sudo命令,只有在/etc/sudoers内的用户才能执行sudo指令。
(2)sudo 【-b】 【-u 用户名】 指令
-b 表示将后面的指令放到后台进程执行,而不影响当前的shell
-u 后面可以接欲切换的用户,如果没有这个选项表示使用root
(3)sudo执行步骤如下:
  • 系统先去/etc/sudoers中搜寻该使用者是否有执行sudo的权限
  • 如果使用者有执行sudo的权限,则让其输入自己的密码
  • 密码正确就执行命令,root执行sudo不需要输入密码
(4)修改/etc/sudoers
①修改/etc/sudoers文件需要使用visudo,因为/etc/sudoers是有一定语法规范的,如果设置错误会造成sudo不能使用,使用visudo在修改结束退出时,系统会去校验文件的语法。
②使用visudo时,找到root那一行,会看到如下内容
用户名 登录主机=(可切换的身份) 可下达的指令
root ALL=(ALL) ALL
(5)利用群组以及免密码的方式处理visudo
①使用visudo时,找到wheel那一行,会看到如下内容
#%wheel ALL=(ALL) ALL
将#注释去掉,可以继续使用wheel分组也可以替换成别的分组,再将用户加入群组中
usermod -a -G 组名 用户
这样做的目的是减少/etc/sudoers中出现的用户,只用一行分组设置就可以代替很多需要设置sudo的用户。
②使用群组免密方式
%wheel ALL=(ALL) NOPASSWD:ALL
(6)限制用户sudo操作root用户的指令参数
用户名 ALL=(root) !/usr/bin/passwd,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
! 表示不可执行的意思,多个命令之间用“,”隔开
如此一来,上面这段设置就可以使普通用户不能修改root的密码了
(7)visudo还支持别名
visudo支持的别名包括指令别名、用户别名、主机别名。
为什么要设置别名,如果有很多用户需要设置可用与不可用的命令,而这些命令又相同,就需要每配置一个用户就写一段指令,很麻烦。
①创建用户别名
User_Alias 别名1=用户1,用户2。。。
②创建命令别名
Cmnd_Alias 别名2=命令1,命令2。。。
③使用别名
别名1 ALL=(root) 别名2
注:别名必须使用大写字符,命令使用绝对路径
④sudo的时间间隔问题
第一次使用sudo时需要输入密码,但5分钟内不需要再次输入密码
(8)sudo搭配su使用
别名1 ALL=(root) /bin/su -
这样可以让用户具有root的权限,但是可以输入自己的密码执行,这是多人管理一台主机时的常用技巧

8、特殊的shell-/sbin/nologin
普通用户和系统管理员登录系统时是使用的bash shell登录的,而系统账号是不需要登录主机即可使用的,这里的不需要登录是指不能输入用户名和密码登录,但是可以使用系统资源。所以,针对这种情况,我们让系统账号使用/sbin/nologin来登录系统。

9、PAM
(1)PAM是统一数据校验接口,PAM用来进行验证的数据称为模块。
(2)PAM借由一个与程序同名的配置文件来进行一连串的校验工作,所有的配置文件都放在/etc/pam.d文件夹下。PAM配置文件的示例如下:
#%PAM-1.0 <==这是PAM版本说明,除此以外的#都是注释
验证类别 控制标准 PAM模块与该模块的参数 <==每一行都是一个独立验证流程
(3)PAM关键字
控制标准:include 表示引入第3列的PAM模块来进行验证
(4)验证类别:
auth身份验证
account账号验证
session记载用户在登录shell期间PAM的环境设定
passwd密码验证
(5)控制标准
required会返回验证结果,但不会影响后续验证
requisite会返回验证结果,但是验证失败会中断后续验证
sufficient会返回验证结果,但验证成功会中断后续验证
optional主要用于显示信息,并不是用于验证
(6)模块信息
/etc/pam.d/* 每个程序个别的PAM配置文件
/lib/security/* PAM模块档案的实际目录
/etc/security/* 其他PAM环境配置文件
/usr/share/doc/pam-*/ 详细的PAM说明文件
pam_securetty.so限制root只能从安全的终端登录,/etc/securetty
pam_nologin.so限制普通用户是否能够登录主机,如果/etc/nologin存在,则登录不了
pam_selinux.so验证通过后,启动SELinux
pam_console.so帮助使用者通过特殊的终端接口登录系统
pam_loginuid.so验证用户UID
pam_env.so如果需要设置额外的环境变量,可以参考/etc/security/pam_env.conf
pam_unix.so这个模块比较重要,可以用在验证阶段的认证
pam_cracklib.so验证密码强度
pam_limits.soulimit就是使用的这个,参考/etc/security/limits.conf
(7)PAM的日志记录地址:/var/log/secure

10、主机上的用户信息交流
(1)查询目前已登录系统的用户 w/who
使用w时
第一行显示当前时间,开机(up)多久,几个用户在系统上平均负载
(2)显示每个账号的最近登录时间 lastlog
lastlog会去读/var/log/lastlog文件
(3)登录用户对谈
write 用户名 【用户所在终端】
接下来输入内容,按enter键发送,按ctrl+c结束输入
如果用户不想接收信息,可以输入mesg n抵挡,但是不能抵挡root的信息,解开信息使用mesg y
(4)对所有人发送信息
wall “信息内容”
按enter键发送

11、一些检查工具
(1)pwck
  • 检查/etc/passwd配置信息
  • 检查家目录是否存在
  • 比对/etc/passwd和/etc/shadow
(2)pwconv
(3)大量新建账号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值