Linux用户及权限管理

基础知识

Linux操作系统是多任务(multi-tasks)、多用户(multi=users)分时操作系统,Linux操作系统的用户就是让我们登录到Linux的权限;每当我们使用用户名登录操作系统时,Linux都会对该用户进行认证、授权审计等操作。操作系统为了识别每个客户,会给每个用户定义一个ID,就是UID。用户组就相当于多个用户的容器;在Linux系统中,用户组也有一个ID,就是GID

Linux操作系统用户

安全上下文:
	进程以其发起者的身份运行:
		进程对文件的访问权限,取决于发起此进程的用户的权限
在Linux,用户分为两大类;管理员和普通用户,其中普通用户又分为系统用户和登录用户


系统用户:为了能够让那些后台进程活服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从来不用登录系统
登录用户:就是我们一般使用登录Linux的用户

用户标识:user id,UID
通常使用16bits二进制数字标识(0-65535)
管理员的用户标识:0
普通用户:1-65535
系统用户:1-499(centos 6)、1-999(centos 7)
登录用户:500-60000(centos 6)、1000-60000(centos 7)

Linux通过名称解析库“/etc/passwd”文件解析用户名与用户ID之间的对应关系。
/etc/passwd:用户信息库
name:passwd:UID:GID:GECOS:home directory:shell

Linux操作系统用户组

在Linux中,用户组分类方式有三种

1、管理员组、普通用户组(系统用户组、登录用户组)
2、用户的基本组、用户附加组
3、私有组、公共组

用户组表示:group id,GID
通常使用16bits二进制数字标识(0-65535)
管理员的用户组标识:0
普通用户组:1-65535
系统用户组:1-499(centos 6)、1-999(centos 7)
登录用户组:500-60000(centos 6)、1000-60000(centos 7)

Linux通过名称解析库“/etc/group”文件解析用户名与用户组ID之间的对应关系
/etc/group:组的信息库
group_name:passwd:GID:user_list
user_liser:该组用户的成员;以此组为附加组的用户的用户列表

Linux操作系统密码

用户在登录 Linux 系统时,会对比 password 与之前保存在“/etc/shadow”、“/etc/gshadow”文件中的密码是否一致。

加密算法:
(1)对称加密:加密和解密使用同一个密钥
(2)非对称加密:加密和解密使用的一对密钥
			密钥对:公钥、私钥
(3)单向加密:只能加密,不能解密;提取数据特征码

定长输出:
雪崩效应:密码中某一字符改变,那么整个加密后的密钥都会改变

Linux的密码加密方式使用单向加密算法,并且添加随机数(salt)计算得出的
系统识别算法ID算法名称
1MD5:message digest,128bits
2sha:secure hash algorithm,160bits
3sha224
4sha256
5sha384
6sha512
/etc/shadow:用户密码
[root@centos7 ~]#head -n1 /etc/shadow
root:$6$dJoUpLtTdY/JpUAW$otUHSCXyc61mLW2gvItJnGHMVkv03RXQgn02gr9xijYHhAcjL7uxvFY79Ygl9J1TRDY1SRInok96eCF0LhZOA1::0:99999:7:::
格式:
	用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:非活动期限:过期期限:保留字段

加密密码:使用 $ 分隔,第一个段表示使用的加密算法,第二个段表示添加的 salt (随机数),第三段表示加密后的密码

权限管理

Linux的文件管理权限分为读、写和执行

[root@centos7 ~]#ls -l /bin/bash
-rwxr-xr-x. 1 root root 964544 4月  11 2018 /bin/bash

文件权限:
-rwxr-xr-x
共分为五个部分:- 表示文件类型、rwx 用户属主的权限、r-x 用户属组的权限、r-x 其他用户的权限、. 是否启用 facl

权限:r(readable)表示读权限、w(wirteable)表示写权限、x(excuteable)表示执行权限

权限对文件的作用:
r:可获取文件的数据
w:可修改文件的数据
x:可将此文件运行为进程


权限对目录的作用:
r:可使用 ls 命令获取其下的所有文件列表或其子目录
w:可修改此目录下的文件列表即创建或删除文件,包括子目录
x:可 cd 至此目录中;且可使用 ls -l 来获取所有文件的详细属性信息
权限组合二进制数十进制数
0000
–x0011
-w-0102
r–1004
r-x1015
rw-1106
rwx1117

示例:rw-rw-r-- 664

相关命令

用户管理命令

useradd命令:创建用户
用法:useradd [选项] 用户名
-u UID:指定UID,默认是上一个用户的UID+1
-g GID:指定基本组ID,此组得事先存在
-G GROUP1[,GROUP2,...][,GROUPN]:指明用户所属的附加组,多个用户组之间使用逗号分隔
-c COMMENT:指明注释信息
-d HOME_DIR:以指定路径为用户的家目录,通过复制/etc/skel 此目录并重命名实现,指定的家目录路径如果事先存在,则不会为用户复制环境配置文件
-s SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中
-r:创建系统用户
-M:不为用户创建主目录(家目录)
-f INACTIVE:在密码过期后,账户被彻底禁用之前的天数,0表示立即禁用,-1:表示禁用该功能

注意:创建用户时的诸多默认设定配置文件为/etc/login.defs
useradd -D:显示创建用户的默认选项配置
默认选项可在配置文件/etc/default/useradd文件中修改,保存可以直接修改此文件来实现
或:useradd -D [选项]:修改默认选项的值
usermod命令:修改用户属性
用法:usermod [选项] 用户
-u UID:修改用户的ID为此处指定的新UID
-g GID:修改用户所属的基本组;此组得事先存在
-G GROUP1[,GROUP2][,GROUP3,...]:修改用户所属的附加组,原来的附加组会被覆盖
-a:与-G一同使用,用于用户追加新的附加组
-c COMMENT:修改注释信息
-d HOME_DIR:修改用户的家目录,用户原来的文件不会被转移至新位置
-m:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录
-l NEW_LOGING:修改用户名
-s SHELL:修改用户的默认shell,可用的所有shell列表存储在/etc/shells文件中
-L:锁定用户密码,即在用户原来的密码字符串之前添加一个“!”
-U:解锁用户密码
userdel命令:删除用户
用法:userdel [选项] 用户名
-r:删除用户时一并删除其家目录和用户邮箱
id命令:显示用户的真是和有效的UID和GID
用法:id [选项]... [USERNAME]
-u:仅显示有效的UID
-g:仅显示用户的基本组的ID
-G:仅显示用户所属的所有组的ID
-n:显示名字而非ID;一般与-g一起使用:-ng
su命令
登录式切换:会通过重新读取目标用户的配置文件来重新初始化
sy - USERNAME
非登录式切换:不会读取目标用户的配置文件进行初始化
su USERNAME
注意:管理员可无密码切换至其他任何用户;其他用户在切换用户时必须输入密码
-c "COMMAND" :仅以指定用户的身份运行此处的命令
例如: su  - USERNAME -c "whoami"

用户组管理命令

groupadd命令:添加组 
用法:groupadd [选项] GROUP_NAME
-g GID:指定GID,默认是上一个组的GID+1
-r:创建系统组
groupmod命令:修改组属性
用法:groupmod [选项] GROUP_NAME
-g GID:修改GID
-n NEW_NAME:修改组名
groupdel命令:删除组
group [选项] GROUP

密码管理类命令

passwd命令
passwd  [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays]
[-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1)passwd:修改用户自己的密码
(2)passwd USERNAME:修改指定用户的密码,但仅root有此权限

选项:
	-l:锁定用户
	-u:解锁用户
	-d:清楚用户密码
	-e DATE:过期期限,日期
	-i DAYS:非活动期限,时间范围
	-n DAYS:密码的最短使用期限
	-x DAYS:密码的最长使用期限
	-w DAYS:警告期限
	--stdin:echo "PASSWORD" | passwd -stdin USERNAME
	示例:[root@centos7 ~]#echo "xingxinchao" | passwd --stdin xingxinchao
更改用户 xingxinchao 的密码 。
passwd:所有的身份验证令牌已经成功更新。
gpasswd命令
用户组密码文件:/etc/gshadow
gpasswd [选项] GROUP_NAME
-a USERNAME:向组中添加用户,作为附加组
-d USERNAME:从组中删除用户
newgrp命令:临时切换指定的组为基本组
用法:newgrp [-] [GROUP_NAME]
-:会模拟用户重新登录以实现重新初始化其工作环境
注意:若指定组设定了密码
(1)如果用户的附加组是要切换到的组名,那么不需要密码可以直接切换到指定组
(2)如果用户的附加组不包含要切换的组名,那么需要输入密码才能切换到指定组
若指定组没有设定密码,所有用户都不可以直接切换到指定组,root用户除外

权限管理命令

chmod命令:修改文件或目录的权限位
三类用户:
	u:属主
	g:属组
	o:其他
	a:所有
	
(1)chmod [选项]... MODE[,MODE]... FILE...

MODE表示法:
	赋权表示法:直接操作一类用户的所有权限位
	在赋予三类用户的权限不同时,则用逗号隔开,如果相同,可以合并授权
	u=
	g=
	o=
	a=

	授权表示法:直接操作一类用户的所有权限位r,w,x
	在赋予三类用户的权限不同时,则用逗号隔开,如果相同,可以合并授权
	u+,u-
	g+,g-
	o+,o-
	a+,a-

(2)chmod [OPTION]... OCTAL-MODE FILE...
使用十进制的数字进行授权
选项:
	-R:递归修改,对目录下的所有文件(包括子目录)都有效
	注意:用户仅能修改属主为自己的文件的权限

从属关系管理类命令

chown命令:修改文件属主和属组
       chown [OPTION]... [OWNER][:[GROUP]] FILE...
       chown [OPTION]... --reference=RFILE FILE...

选项:
	-R:递归修改,对目录下的所有文件(包括目录)都有效
	--reference:参考其他文件属主属组进行修改属主和属组
	注意:仅管理员可修改文件的属主和属组


chgrp命令:修改文件属组
       chgrp [OPTION]... GROUP FILE...
       chgrp [OPTION]... --reference=RFILE FILE...



umask命令:文件的权限反向掩码,遮掩码
文件:
666-umask
目录:
777-umask
注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1

umask命令:
umask:查看当前umask
umask MASK:设置umask
注意:此类设定仅对当前shell进程有效

Linux facl(访问控制列表)

访问控制列表简介

一般权限、特殊权限。隐藏权限其实有一个共性–权限是针对某一类用户设置的。如果希望对某个指定用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)了,通俗来讲,基于普通文件或目录设置 ACL 其实就是针对指定的用户或用户组设置文件或目录的操作权限。另外,如果针对某个目录设置了 ACL ,则目录中的文件会继承其 ACL;若针对文件设置了 ACL,则文件不再继承其所在目录的 ACL。

ACL有什么用?

既然是作为 UGO 权限管理的补充,ACL 自然要有 UGI 办不到或者很难办到的本事;
例如:
1.可以针对用户来设置权限
2.可以针对用户组来设置权限
3.子文件/目录继承父目录的权限

检查是否支持 ACL

ACL 需要 Linux 内核和文件系统的配合才能工作,当前我们能见到的大多数 Linux 发行版默认都是支持的,但是最好还是能够先检查一下;
# tune2fs -l device | grep “Default mount options”
Defaults mount options: user_xattr acl
我们能够看到默认情况下已经加入 acl 支持了

如何设置 ACL

我们可以使用 setfacl 和 getfacl 命令来设置或观察文件/目录的 acl 权限

setfacl 命令:设置 ACL (访问控制列表) 权限
	选项:
		-m:配置后面的 acl 参数给文件/目录使用,不可与 -x 合用
		-x:删除后续的 acl 参数,不可与 -m 合用
		-b:删除文件中的所有的扩展的 acl 设置信息
		-R:递归操作到所有子目录和文件

		示例
		赋权给用户
			setfacl -m u:USERNAME:MODE FILE...   
				USERNAME:为用户名
				MODE:权限位
				FILE:文件或目录
		赋权给组
			setfacl -m u:GROUPNAME:MODE FILE...
				GROUPNAME:组名
				MODE:权限为
				FILE:文件或目录
		删除 acl 权限
			setfacl -x u:USERNAME FILE...
			setfacl -x g:GROUPNAME FILE...

getfacl命令:查看文件或目录的 ACL 设置信息
用法:getfacl FILE
选项:
	-a:显示文件或目录的访问控制列表
	-R:操作递归到子目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值