写在前面,linux学习笔记记录了本人的学习linux过程及学习的一些心得。
- linux学习最好是命令行。好处是通过命令行可以熟悉系统功能的命令,而这是sh脚本的内容。为以后自动化打下基础。能更好的理解一些计算机方面的概念,如管道通信,重定向等。
- 我比较推崇索引式学习方法。多找共性,多建索引,少记具体内容(能通过索引找到的内容),毕竟人脑有限,把资源留给有价值的知识是一种战略。linux指令千千万万,没必要全记住,但是重要的几个指令还是要记住的,比如man、ls。
- 学习书籍是鸟哥私房菜,进度基本上也是和书籍一致的,学习笔记实例。
1.系统只能识别uid/gid
登录过程中:先验证帐号如果存在获取uid/gid(/etc/passwd,/etc/group),再验证密码(/etc/shadow)
2. id 显示id相关信息
3.authconfig : 权限配置指令
4.usermod : 修改用户帐号(系统管理员)
5.newgrp : 有效群组切换,相关文件/etc/gshadow(主要功能建立群组管理员/etc/gpasswd)
6.gpasswd: 管理群组 /etc/group and /etc/gshadow
删除用户: gpasswd -d user group
添加用户: gpasswd -a user group
7.useradd: 添加用户 /etc/passwd /etc/shadow /etc/group /etc/gshadow
useradd -D: 查看添加用户的默认设置
uid/gid 密码 参考文件 /etc/login.defs
8.passwd: 设定用户密码 --stdin 管理员修改密码可以是任意的,用户需自己修改密码,新密码需要满足一定条件
9.chage: 修改密码属性(非常好用)
10.usermod: 帐号修改
11.userdel:删除用户的相关数据
查找整个系统内属于username的文件
find / -user username
id(查找id相关信息)
12. finger(centos7默认不安装)
安装:yum -y install finger
卸载:yum -y remove finger
13.chfn: 修改finger信息
14.chsh:修改登录shell
15. groupadd : 添加群组
16. groupmod : 修改群组
17. groupdel : 删除群组 被作为初始群组使用的群组无法删除
使用外部身份认证系统:
ACL(access control list):针对某个使用者;群组;默认属性(mask)
18. dmesg | grep -i acl :查看内核挂载acl信息
getfacl : 获取目录/文件的acl设定 getfacl 目录/文件
setfacl : 设定目录/文件的acl权限
setfacl [mbRk] u/g:用户名/群组名:权限 目录/文件
setfacl [mbRk] m:权限 :有效权限设定
setfacl d:[u|g]:[user|group]:权限 子目录/文件继承会继承权限 授权后新建文件/目录会继承,授权前的不会继承
使用者身份切换:
19. su - /su [l] user
20. sudo [-b] [-u user]
sudo权限配置文件:/etc/sudoers 配置文件编辑指令:visudo
sudo 免密码:%wheel ALL=(ALL) NOPASSWD:ALL
sudo 限制指令操作:pro1 ALL=(root) /usr/bin/passwd(有bug)
pro1 ALL=(ALL) !/usr/bin/passwd /usr/bin/passwd [a-zA-Z]* /usr/bin/passwd root (无bug)
透过别名设置visudo
别名标识:User_Alias Cmnd_Alias Host_Alias
管理员管理:
User_Alias ADMINS = pro1,pro2...
ADMINS ALL=(root) /bin/su -
自定义nologin帐号登录异常信息 /etc/nologin.txt (我电脑好像不起作用)
PAM(Pluggable Authentication Modules)(编程接口)
相关文件/路径 : /etc/pam.d
passwd工作流程:
1.执行/usr/bin/passwd,并输入密码
2.passwd调用PAM模块进行验证
3.PAM加载/etc/pam.d/passwd配置文件
4.根据配置文件调用PAM验证模块(具体实现)
5.PAM返回验证结果
6.passwd根据验证结果进一步处理
PAM配置文件解析(可以通过 cat /etc/pam.d/passwd 查看配置文件长相)
1.共分为3个字段:类型;控制标识;模块与模块参数
2.每一行都是一个验证过程
PAM相关文件:
/etc/pam.d/* : 每个程序独立配置文件
/lib64/security/*:PAM模块文件的实际位置
/etc/security/*: 其他PAM环境的配置文件
/usr/share/doc/pam-*/: 详细的PAM说明文件
类别
auth : 验证使用者的身份,需要密码
account: auth认证后进行,验证使用者的帐号信息(如是否过期)
session: 记录用户登入与注销时的信息
password: 提供验证的修订工作(如修改密码)
控制模式:
required :验证成功/失败会返回success/failure,并且程序会继续进行,有利于记录日志
requisite : 验证成功/失败会返回success/failure,失败程序终止,成功程序继续
sufficient: 验证成功/失败会返回success/failure,成功程序终止,失败程序继续
optional : 显示信息,目的不在验证方面
include : 包含其他配置文件
substack : 运行其他配置文件,如果某个流程栈 include 了一个带 requisite 的栈,这个 requisite 失败将直接导致认证失败,同时退出栈;而某个流程栈 substack 了同样的栈时,requisite 的失败只会导致这个子栈返回失败信号,母栈并不会在此退出
PAM模块: