文章目录
Linux 安全模型
Authentication:认证,验证用户身份
Authorization:授权,不同的用户设置不同权限
Accouting|Audition:审计
用户账号和组账号概述
Linux基于用户身份对资源访问进行控制
用户账号
- 超级用户(root管理员,权限最高,ID为0)
- 普通用户(以CentOS7为例,UID在1-999(保留),创建账号从1000开始)
- 程序用户(伪用户,不能登录操作系统,只能正常运行服务,比如ftp和apache)
组账号
- 基本组(私有组)
- 附加组(公有组)
UID和GID
- UID(User IDentity,用户标识号)
- GID(Group IDentify,组标识号)
用户的分类
超级用户:root用户是Linux操作系统中默认的超级用户账号,对本主机拥有至高无上的权限,类似于Windows操作系统中的Administrator用户。只有当进行系统管理、维护任务时,才建议使用root用户登录系统,日常事务处理建议只使用普通用户账号。 root 拥有对系统的最高的管理权限ID=0。
普通用户:普通用户账号需要由root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限
系统用户UID:1-999(centos7版本)1-499(centos6版本)
UID:即每个用户的身份标示,类似于每个人的身份证号码。
程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不介许登录到系统,而仅用于维持系统或某个程序的正常运行,如 bin、daemon、ftp、mail等
伪用户一般不会用来登录系统的,它主要是用于维持某个服务的正常运行如:ftp,apache
查看当前登录用户信息
who命令:
whoami
who
who -b
last命令:
选项:
(1)-x:显示系统开关机以及执行等级信息
(2)-a:将登陆ip显示在最后一行
(3)-f :读取特定文件,可以选择 -f /var/log/btmp文件
(4)-d:将IP地址转换为主机名
(5)-n:设置列出名单的显示列数
(6)-t:查看指定时间的用户登录历史
lastlog命令(查看所有用户的最近一次登录)
(1) -u 查看指定用户
(2)-t 查看几天以内的用户登录信息
ID
UID
UID(User IDentity,用户标识号):Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID(UserIDentity,用户标识号),对于操作系统核心来说,UID 是区分用户的基本依据,原则上每个用户的 UID 号应该是唯一的。root 用户账号的 UID 号为固定值 0,而程序用户账号的 UID号默认为1~499,500~60000 的 UID 号默认分配给普通用户使用。
GID
GID(Group IDentify,组标识号):与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为 GID(Group IDentity,组标识号)。root 组账号的 GID 号为固定值 0,而程序组账号的 GID 号默认为 1~499,500~60000 的 GID 号默认分配给普通组使用。
用户和组的关系
用户是员工,组是职位,员工可以兼职多个岗位
总有一个最重要的身份,主要组和附加组
主要组:必须要一个,组有且唯一。
附加组:可有可无,可以有多个
默认行为当你创建一个新用户时会自动创建一个和之同名的主组
用户账号管理
文件位置
/etc/passwd
存放/保存用户名、宿主信息、登录shell等基本信息
举例
/etc/shadow
存放/保存密码的位置
举例
添加用户
(useradd命令)
添加用户:查看是否在 passwd和shadow文件中生成信息
-
在/etc/passwd 文件和/etc/shadow 文件的末尾增加该用户账号的记录
-
若未明确指定用户的宿主目录,则在/home 目录下自动创建与该用户账号同名的宿
主目录,并在该目录中建立用户的各种初始配置文件。 -
若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账
号的记录信息将保存到/etc/group 和/etc/shadow 文件中。
选项 -
-u:指定用户的 UID 号,要求该 UID 号码未被其他用户使用。
-
-d:指定用户的宿主目录位置(当与-M 一起使用时,不生效)。
-
-e:指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
-
-g:指定用户的基本组名(或使用 GID 号)。
-
-G:指定用户的附加组名(或使用 GID 号)。
-
-M:不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录。
-
-s:指定用户的登录 Shell /sbin/nologin
密码管理
passwd命令
作用:为用户账号设置密码
格式:passwd [选项]… 用户名
基本用法 不加选项 可以添加密码
选项
- -d:清空指定用户的密码,仅使用用户名即可登录系统。
- -l:锁定用户账户。
- -S:查看用户账户的状态(是否被锁定)。
- -u:解锁用户账户。
实例:
查看李四没有密码
添加密码
账号密码有效管理
chage命令
chage命令:用来修改帐号和密码的有效期限,针对目前系统已经存在的用户
格式
chage [选项] 用户名
选项
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。chage -M 60 root
-W:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-I(大写i):停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
修改用户账号的属性
usermod命令
格式:usermod [选项]… 用户名
选项
- -l 更改用户账号的登录名称(Login Name)修改的名字在前面 原来的名字在后面
- -L 锁定用户账户
- -u 修改用户的 UID 号
- -U 解锁锁用户账户
- -d:修改用户的宿主目录位置。
- -e:修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
- -g:修改用户的基本组名(或使用 GID 号)
- -G:修改用户的附加组名(或使用 GID 号)
- -s:指定用户的登录 Shell
举例
删除用户命令
(userdel)
格式:userdel [选项] 用户
选项
- -r 将宿主目录一起删除
- -f 强制删除
用户账号的初始配置文件
用户宿主目录下的初始配置文件只对当前用户有效
~/ .bash_profile
#此文件中的命令将在该用户每次登录时被执行,他会设置一些环境变量,并且会调用该用户的~/.bashrc文件
~/.bashrc
#此文件中的命令将在该用户每次打开新的bash shell时(包括登录系统)被执行(登录 切换 新的bash环境)
~/.bash_logout
#此文件中的命令将在该用户每次退出时bash shell时使用
/etc/bashrc
组管理
组账号文件
与用户帐号文件相类似
/etc/group:保存组帐号基本信息
/etc/gshadow:保存组帐号的密码信息基本不使用
添加用户组
组内管理(gpasswd命令)
格式:gpasswd 命令——添加、设置、删除组成员
选项
- -a:向组内添加一个用户
- -d:从组内删除一个用户成员
- -M:定义组成员列表,以逗号分隔
举例
删除组账号
(groupdel命令)
格式
groupdel 组帐号名
举例
查询
finger命令
格式:finger命令查询用户帐号的详细信息(finger [用户名])
groups命令
作用:查询用户所属的组
格式:groups [用户名]
举例
id命令
作用:查询用户身份标识
格式:id [用户名]
举例
w命令
格式:w [选项] [用户名]
选项
- -h 不显示输出信息的标题
- -l 用长格式输出
- -s 用短格式输出,不显示登陆时间,JCPU 和 PCPU 时间
- -V 显示版本信息
选项
users命令
作用:查询已登录到主机的用户信息
lastlog命令
用于显示系统中所有用户最近一次登录信息
lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示Never logged。注意需要以root身份运行该命令。
常用选项:
-b<天数>:显示指定天数前的登录信息
-t<天数>:显示指定天数以来的登录信息
-u<用户名>:显示指定用户的最近登录信息
-h:显示召集令的帮助信息
举例:
文件/目录的权限和归属
1.访问权限
读权限 r:允许查看文件内容
写权限 w:允许修改文件内容
可执行 x:允许运行程序
2.归属(所有权)
属主:拥有该文件的用户账号
属组:拥有该文件的组账号
3.查看文件的权限和归属
(1)第一位表示文件类型
-:表示一般文件
d:表示目录
l:表示软链接
p:表示 PIPE 管道文件
s:表示 socket 通信套接字文件
c:表示字符设备文件
b:表示块设备文件
(2)各权限的字母及 7 进制表示
权限 字母表示 7进制表示
读权限 r 4
写权限 w 2
执行权限 x 1
因此rwx=4+2+1=7
文件/目录的权限
chmod命令
格式:
chmod [-R][ugoa] [±=] [rwx] 参数
chmod [-R][nnn] 参数
2.常用选项:
-R:表示以递归的方式设置目录及目录下的所有子目录及文件的权限。
u:属主
g:属组
o:其他人
a:所有人
+:添加
-:删除
=:重置
nnn:7 进制的数字权限,如:777 666 644 755 等
chown命令
文件/目录的权限
格式:
chown 属主 文件
chown :属组 文件
chown 属主:属组 文件
-R 递归修改
实例
umask
umask 的值可以用来保留在创建文件权限
实现方式:
新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变
新建目录的默认权限: 777-umask
非特权用户umask默认是 002
root的umask 默认是 022
特殊权限
ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
权限掩码 umask
作用:控制新建的文件或目录的权限
umask 值与新建文件、目录权限对照表
查看 umask 值
设置umask 022