【Linux】【Basis】用户、组和权限管理
1. 概念:
1.1. 每个使用者都有,用户标识UID和密码;并且有身份(Authentication),授权(Authorization),审计(Audition);组(用户组,用户容器)
1.2. 用户类别:管理员和普通用户(普通用户又分为系统用户和登录用户)
1.3. 用户标识(UserID,UID)由16bit二进制数字(0-65535)组成,管理员(root)为0,普通用户为:1-65535。系统用户:1-499(CentOS6), 1-999(CentOS7),登录用户:500-60000(CentOS6), 1000-60000(CentOS7)。用于名称解析:名称转换,把Username转换成UID。名称解析库就是/etc/passwd
1.4. 组:
1.4.1. 组类别1:管理员组和普通用户组(系统组和登录组)。组标识(GroupID,GID),管理员组:0,系统用户组:1-499(CentOS6), 1-999(CentOS7),登录用户组:500-60000(CentOS6), 1000-60000(CentOS7)。名称解析,把groupname转换成gid,解析库:/etc/group
1.4.2. 组类别2:用户的基本组和用户的附加组
1.4.3. 组类别3:私有组(组名同用户名,且只包含一个用户)和共有组(组内包含了多个用户)
1.5. 认证信息:通过比对实现存储的,与登录时提供的信息是否一致:检查password要检查/etc/shadow和/etc/gshadow
1.6. 密码的使用策略:使用随机密码,最短长度不要低于8位,应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类,定期更换
1.7. 加密算法:在在计算之时加salt,添加的随机数:
1.8. 配置文件:
1.8.1. /etc/passwd:用户的信息库
name:password:UID:GID:GECOS:directory:shell
name:用户名
password:可以是加密的密码,也可以是占位符x
UID:
GID:用户所属的主组的ID号
GECOS:注释信息
directory:用户的家目录
shell:用户的迷人shell,登录时默认shell程序;
1.8.2. /etc/shadow:用户密码
用户名:加密的密码:最近一次修改密码的时间:最短使用限期:最长使用期限:警告期段:过期期限:保留字段
1.8.3. /etc/group:组的信息库
group_name:password:GID:user_list
user_list:该组的用户成员,以此组为附加组的用户的用户列表
2. Linux用户和组管理
2.1. 安装上下文:进程以其发起者的身份运行;进程对文件的访问权限,取决于发起此进程的用户的权限,为了能够让那些后台进程或服务类型进程以非管理员的身份运行,通常需要为此创建多个普通用户;这类用户从不用登录系统;
2.2. groupadd命令:添加组
groupadd [选项] group_name
-g GID:指定GID,默认是上一个组的GID+1
-r:创建系统组
2.3. groupmod命令:修改组属性
groupmod [OPTIONS] GROUP
-g GID:修改GID;
-n new_name:修改组名
2.4. groupdel命令;删除组
groupdel [OPTIONS] GROUP
2.5. useradd:创建用户
useradd [OPTION] 登录名
-u, --uid UID:指定UID;
-g, --gid GID:指定基本GID,此组得实现存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]:指明用户所属的附加组,多个组之间用逗号隔开
-c, --comment COMMENT:指明注释信息
-d, --home HOME_DIR:创建以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
-s, --shell SHELL:指定用户的默认shell,可用的所有shell存储在/etc/shells文件中
-r, --system:创建系统用户
注意,创建用户时的诸多默认设定配置文件为/etc/login.defs
useradd -D:显示创建用户的默认配置
useradd -D 选项:修改默认选项的值
修改的结果保存于/etc/default/useradd文件中
2.6. usermod命令:修改用户属性
usermod [OPTIONS] 登录
-u, --uid UID:修改用户的ID为此处指定的新UID;
-g, --gid GROUP:修改用户所属的基本组;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组,原来的附加组会被覆盖
-a, --append:与-G一起使用,用于为用户追加新的附加组;
-c, --comment COMMENT:修改注释信息
-d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移到新目录
-m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录
-l, --login NEW_LOGIN:修改用户名;
-s, --shell SHELL:修改用户的默认shell
-L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个“!”;
-U, --unlock:解锁用户的密码;
2.7. userdel命令:删除用户
userdel [选项] 登录
-r:删除用户时一并删除其家目录;
2.8. 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
2.9. gpasswd命令:
gpasswd [OPTIONS] group
-a USERNAME:向组中添加用户
-d USERNAME:从组中移除用户
2.10. newgrp命令:临时切换指定的组为基本组
newgrp [-] [group]
-:会monitor用户重新登录以实现重新初始化其工作环境
2.11. chage命令:更改用户密码过期信息
chage [选项] 登录名
-d
-E
-W
-m
-M
2.12. id命令:显示用户的有效ID
id [OPTION]... [USERNAME]
-u:仅显示有效的UID
-g:仅显示用户的基本组ID
-G:仅显示用户所属的所有组的ID
-n:显示名字而非ID
2.13. su命令:switch user
登录式切换:会通过读取目标用户的配置文件来进行初始化
su - USERNAME
su -l USERNAME
非登录式切换:不会读取目标用户的配置文件进行初始化
su USERNAME
注意:管理员可无密码切换至其他任何用户;
-c:'COMMAND'
2.14. finger命令:
2.15. chsh命令:
2.16. chfn命令:
2.17. whoami命令:
3. 权限管理:
3.1. 基本概念:
ls -l
rwxrwxrwx:
左三位:定义user(owner)的权限
中三位:定义group的权限
右三位:定义other的权限
进程安全上下文:
进程对文件访问权限应用模型:
进程的属主与文件的属主是否相同:如果相同,则应用属主权限;
否则,则检查进程的属主是否属于文件的属组,如果是,则应用属组权限
否则,就只能应用other的权限
权限:
r:read,读
w:write,写
x:excute,可执行
文件:
r:可获取文件的数据;
w:可修改文件的数据;
x:可将此文件运行为进程;
目录:
r:可使用ls命令获取其下的所有文件列表
w:可修改此目录下的文件列表,即创建或删除文件;
x:可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息(如果文件夹没有这个权限,前面两个权限也没有)
mode:rwxrwxrwx
ownership:user, group
权限组合机制:
--- 000 1
--x 001 2
-w- 010 3
-wx 011 4
r-- 100 5
r-x 101 6
rw- 110 7
rwx 111 8
3.2. 权限管理命令:
chmod命令:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
三类用户:
u:属主
g:属组
o:其他
a:所有
(1)chmod [OPTION]... MODE[,MODE]... FILE...
MODE表示法:
赋权表示法:直接操作一类用户的所有权限位rwx
u=
g=
o=
a=
授权表示法:直接操作一类用户的一个权限位r,w,x;
u+, u-
g+, g-
o+, o-
a+, a-
(2) chmod [OPTION]... OCTAL-MODE FILE...
(3) chmod [OPTION]... --reference=RFILE FILE...
选项:
-R, recursive:递归修改
3.3. 从属关系管理命令:
chown命令:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
选项:
-R:递归修改
注意:用户仅能修改属主为自己的那些文件的权限
chgrp命令:
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意:仅管理员可以修改文件的属主和属组
3.4. umask:文件的权限反向掩码,遮罩码;
文件:
666-umask
目录:
777-umask
注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1
umask:023
666-023=644
777-023=754
umask命令:
umask:查看当前umask
umask MASK:设置umask
注意:此类设定尽对当前shell进程有效;
3.5. install命令:
install - copy files and set attributes
单源复制:
install [OPTION]... [-T] SOURCE DEST
多源复制:
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...
创建目录:
install [OPTION]... -d DIRECTORY...
常用选线:
-m, --mode=MODE:设定目标文件权限,默认为755
-o, --owner=OWNER:设定目标文件属主
-g, --group=GROUP:设定目标文件属组
3.6. mktemp命令:
mktemp - create a temporary file or directory
mktemp [OPTION]... [TEMPLATE]
常用选项:
-d:创建临时目录
注意:mktemp会将创建的临时文件名直接返回,因此,可直接通过命令引用保存起来;
4. Linux系统上的特殊权限(
SUID, SGID, STICKY)
安全上下文:
1、进程以某用户的身份运行; 进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作;
2、权限匹配模型:
(1) 判断进程的属主,是否为被访问的文件属主;如果是,则应用属主的权限;否则进入第2步;
(2) 判断进程的属主,是否属于被访问的文件属组;如果是,则应用属组的权限;否则进入第3步;
(3) 应用other的权限;
SUID:
默认情况下:用户发起的进程,进程的属主是其发起者;因此,其以发起者的身份在运行;比如:/bin/passwd
SUID的功用:用户运行某程序时,如果此程序拥有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而程序文件自己的属主;
管理文件的SUID权限:
chmod u+|-s FILE...
展示位置:属主的执行权限位
如果属主原本有执行权限,显示为小写s;
否则,显示为大写S;
SGID:
功用:当目录属组有写权限,且有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组;
管理文件的SGID权限:
chmod g+|-s FILE...
展示位置:属组的执行权限位
如果属组原本有执行权限,显示为小写s;
否则,显示为大写S;
Sticky:
功用:对于属组或全局可写的目录,组内的所有用户或系统上的所有用户对在此目录中都能创建新文件或删除所有的已有文件;如果为此类目录设置Sticky权限,则每个用户能创建新文件,且只能删除自己的文件;
管理文件的Sticky权限:
chmod o+|-t FILE...
展示位置:其它用户的执行权限位
如果其它用户原本有执行权限,显示为小写t;
否则,显示为大写T;
系统上的/tmp和/var/tmp目录默认均有sticky权限;
管理特殊权限的另一方式:
suid sgid sticy 八进制权限
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7
基于八进制方式赋权时,可于默认的三位八进制数字左侧再加一位八进制数字;
例如:chmod 1777
5. facl:file access control lists
文件的额外赋权机制:
在原来的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的赋权机制;
getfacl命令:
getfacl FILE...
user:USERNAME:MODE
group:GROUPNAME:MODE
setfacl命令:
赋权给用户:
setfacl -m u:USERNAME:MODE FILE...
赋权级组:
setfacl -m g:GROUPNAME:MODE FILE...
撤销赋权:
setfacl -x u:USERNAME FILE...
setfacl -x g:GROUPNAME FILE...
【Linux】【Basis】用户、组和权限管理的更多相关文章
- linux:用户及文件权限管理
学习内容来自实验楼.莫烦python.CSDN 一.Linux 用户管理 1. 查看用户 who am i 或者who mom likes who -a:打印所有能打印的 who -d :打印死掉的 ...
- (大数据工程师学习路径)第一步 Linux 基础入门----用户及文件权限管理
用户及文件权限管理 实验介绍 1.Linux 中创建.删除用户,及用户组等操作. 2.Linux 中的文件权限设置. 一.Linux 用户管理 Linux 是一个可以实现多用户登陆的操作系统,比如“李 ...
- Linux的用户(组),权限,文件精妙的三角关系,和强大的帮助系统
在linux中一切都是文件(文件夹和硬件外设是特殊的文件),如果有可能尽量使用文本文件.文本文件是人和机器能理解的文件,也成为人和机器进行 交流的最好途径.由于所有的配置文件都是文本,所以你只需要一个 ...
- Linux用户及文件权限管理
Linux用户及文件权限管理
- 实验楼学习linux第一章第三节用户及文件权限管理
用户及文件权限管理 常用命令 查看用户 whoami 创建用户 sudo adduser 用户名 切换账户 su 用户名 删除账户 sudo deluser 用户名 --remove-home 查看用 ...
- Linux给用户添加sudo权限
一.linux给用户添加sudo权限: 有时候,linux下面运行sudo命令,会提示类似: xxxis not in the sudoers file. This incident will be ...
- MySQL数据库(6)_用户操作与权限管理、视图、存储过程、触发器、基本函数
用户操作与权限管理 MySQL用户操作 创建用户 方法一: CREATE USER语句创建 CREATE USER "用户名"@"IP地址" IDENTIFIE ...
- solaris用户与文件权限管理
此文章已于 20:45:28 2015/3/22 重新发布到 zhuxuekui3 solaris用户与文件权限管理1 类别 「网站分类」Oracle 一.用户与用户组管理 三种用户:超级用户. ...
- Linux之acl库的安装与使用(限制Linux某用户的访问权限)
acl库 作用:限制Linux某用户的访问权限 acl库的安装 首先github中下载acl代码: git clone https://github.com/acl-dev/acl 进入acl, 执行 ...
- WordPress用户角色及其权限管理编辑插件:User Role Editor汉化版
如果Wordpress默认的用户角色及权限不能满足您的需求,又觉得修改代码编辑用户权限太麻烦.那不妨试试User Role Editor,Wordpress用户角色及其权限管理编辑插件. User R ...
随机推荐
- 开源项目|Go 开发的一款分布式唯一 ID 生成系统
原文连接: 开源项目|Go 开发的一款分布式唯一 ID 生成系统 今天跟大家介绍一个开源项目:id-maker,主要功能是用来在分布式环境下生成唯一 ID.上周停更了一周,也是用来开发和测试这个项目的 ...
- SpringBoot中使用@ConfigurationProperties提示:Configuration Annotation Processor not found in classpath
问题 Springboot1.5以上版本,在使用 @ConfigurationProperties注解的时候会提示Spring Boot Configuration Annotation Proces ...
- Maven下载、安装、配置
简介 Maven是一个项目管理工具,主要用于Java平台的项目构建.依赖管理和项目生命周期管理. 当然对于我这样的程序猿来说,最大的好处就是对jar包的管理比较方便,只需要告诉Maven需要哪些jar ...
- 用 Node.js 实现的最简单的 HTTP 服务器
用 Node.js 实现的最简单的 HTTP 服务器 //app.js var http = require('http'); http.createServer(function(req, res) ...
- [loj3043]线段树
考虑把每一个区间单独统计,令$f[i]$表示第i个区间有标记的次数,$g[i]$表示第i个区间及其祖先中存在标记的次数,然后对于操作将所有区间分为5类(T为已执行操作个数): 1.被修改,那么$f[i ...
- 【JavaSE】IO(1)-- File类
File类 2019-07-01 22:41:42 by冲冲 在 Java 中,File 类是 java.io 包中唯一映射磁盘文件本身的对象.File类可以获取文件的相关信息(查看文件名.路径. ...
- 解决FastJson中"$ref重复引用"的问题方法
对象的引用重复使用造成了重复引用问题,Fastjson默认开启引用检测将相同的对象写成引用的形式: 1 2 3 4 5 {"$ref": "$"} // 引用根 ...
- 华为云企业级Redis评测第一期:稳定性与扩容表现
摘要:采用Redis Labs推出的多线程压测工具memtier_benchmark对比测试下GaussDB(for Redis) 和原生Redis的特性差异. 本文分享自华为云社区<华为云企业 ...
- 开源一个简单的react-native 菜单栏抽屉组件,带缩放效果
效果如图所示,源码地址:https://github.com/pofabs/PoSideMenu
- [linux] 大批量删除任务
一不小心投了巨多任务,或者投递的资源不合理时,想批量杀掉这些任务. kill的方法就不说了,我这里用qdel的方法. 用了这么一条命令: qstat |sed '1,2d' |awk -F' ' '{ ...