Linux系统用户、组和权限管理
一、用户与组
1.用户与组的概念
在linux系统中,根据系统管理需要将用户分为三种类型:
1.超级用户:root是linux系统的超级用户,对系统拥有绝对权限。由于root用户权限太大,只有在进行系统管理、维护任务时使用root用户,建议日常事物处理用普通用户账号。
2.普通用户:普通用户由root用户创建,其权限受到一定限制,一般只对自己家目录拥有绝对权限。
3.虚拟用户:大多数由是在安装系统及部分应用程序时自动添加,维护系统或相应程序正常运行,其最大特点是不能登录系统。
用户组分为基本组、附加组
用户组是指具有共同特征用户的集合,主要是方便对文件或目录进行访问权限控制。
当用户被创建时至少属于一个用户组,该组就是用户的基本组。
当用户加入其他组时,其加入的组就是该用户的附加组。
UID和GID
ID类型 | root | 系统用户 | 普通用户 |
UID | 0 | 1-499 | 500+ |
GID | 0 | 1-499 | 500+ |
与用户和组相关的配置文件
1./etc/passwd
2./etc/shadow
3./etc/gruop
4./etc/gshadow
4./home/xx 用户家目录
6./var/log/mail/xx 用户邮箱
7/etc/skel 在用户被创建时家目录下的隐藏文件是从/etc/skel/复制过去的。
2.用户账号和组的管理
useradd 命令 创建用户
-u 选项 指定uid
-g 选项 指定基本组
-G 选项 指定附加组
-d 选项 指定家目录
-e 选项 指定账户失效时间
-M 选项 不创建家目录
-s 选项 指定登录shell
实例:创建一个FTP访问账号ftpuser,禁止其登录,不为其创建家目录
useradd -M -s /sbin/nologin ftpuser
***
passwd 命令 为用户创建密码
-d 选项 清空用户密码
-l 选项 锁定用户不能登录
-u 选项 解除锁定
***
userdel 命令 删除用户
-r 选项 用于删除家目录
***
usermod 命令 修改账号属性
-d 选项 修改用户家目录
-l 选项 修改用户名
-g 选项 修改用户基本组
-G 选项 修改用户附加组
su - 命令 用于切换用户身份
***
groupadd 命令 用于添加用户组
-g 选项 用于指定GID
***
gpasswd 命令 添加、删除组成员
-a 选项 添加用户
-d 选项 删除用户
***
groupdel 命令 删除用户组
groups 命令 查看用户组信息
二、文件和目录权限及归属
在多用户操作系统中,处于安全考虑,需要为每个文件和目录设置访问权限,严格规定每个用户的权限。
Linux系统中每一个文件或目录都被赋予两种属相:访问权限、文件所有者。
权限 | 文件 | 目录 |
r | 查看文件内容 | 查看目录内容ls |
w | 修改文件内容 | 修改目录下的内容(创建、移动、删除文件或目录) |
x | 执行该文件(程序或脚本) | 执行cd命令进入目录 |
1.查看文件、目录权限
通过ls -l 查看文件详细信息
输出信息共7个字段代表含义如下
1.第一组:代表文件类型和文件权限其中第一字符代表如下含义:
“-”表示普通文件、“d”表示目录、“l”表示符号链接、“c”代表字符设备、“b”代表块设备。
2.第二组:代表硬链接数,文件默认为1,目录默认为2。
3.第三组:文件所有者
4.第四组:文件所属组
5.第五组:代表文件大小(单位为字节B)目录只显示目录本身大小一般情况下为4096B
6.第六组:文件创建或修改时间
7.第七组:文件名
文件权限类型
2.设置文件、目录权限
chmod 命令 用于更改文件或目录权限
实例:useradd test
passwd test
密码xxxxxx
su - test
pwd
/home/test
mkdir file1
ls -l file1
drwxrwxr-x. 2 test test 4096 Sep 2 16:36 file1
chmod g-w,o-x file1
ls -l file1
drwxr-xr--.2 test test 4096 Sep 2 16:36 file1
文件权限数字表现形式
权限项 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 |
字符表示 | r | w | x | r | w | x | r | w | x |
数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
权限分配 | 所有者 | 所属组 | 其他人 |
ls -l file1
drwxr-xr--.2 test test 4096 Sep 2 16:36 file1
chmod 755 file
ls -l file1
drwxr-xr-x--.2 test test 4096 Sep 2 16:36 file1
chmod -R 可以递归修改目录下的所有文件权限
root 用户 umask 值 0022
普通用户 umask 值 0002
root用户创建目录 时,生成目录权限为 777 - umask对应权限 ,最终为 755
root用户创建文件时,生成文件权限为 666 - umask对应权限,最终为644
普通用户创建目录时,生成目录权限为 777 - umask对应权限,最终为 775
普通用户创建文件时,生成文件权限为 666 - umask对应权限,最终为664
3.设置文件、目录归属
chown 命令
格式:chown 所有者 文件或目录
chown :所属组 文件或目录
chown 所有者:所属组 文件或目录
例如:chown root:root /home/test/file1
ls -l /home/test/file1
drwxr-xr-x,2 root root 4096 Sep 2 16:36 file1
三、系统高级权限设置
1.配置访问控制列表ACL(Access Control List)
Linux系统中权限设置,仅有3种身份,3种权限,通过配合chmod和chown命令来对文件或目录进项设置。如果进项复杂权限设定,如某个目录要开放为给某个特定用户使用时,传统方法不能满足需求。
例如:/home/project 目录,所有者是student用户,所属组是users组,预设权限为770。现有用户teacher,所属组为teacher,希望对/home/project/目录具有rwx权限;还有用户test,所属组为test,希望对/home/project/目录具有读rx权限。
显然利用chmod和chown命令无法完成上述要求,因而,在Linux系统提供了ACL来完成这种复杂权限设置。
设置ACL
setfacl 【选项】 设定值 文件目录
-m 选项 设定一个ACL规则
-x 选项 取消一个ACL 规则
-b 选项 取消所有的ACL规则
-d 选项 设置默认ACL规则 (对当前目录设置ACL权限后,未来在其目录下创建的文件或目录继承该目录的ACL权限)
-k 选项 取消默认权限
-R 选项 用于递归设置(对当前目录设置ACL权限,该目录下已有的子目录及文件也拥有相应的ACL权限)
例如:setfacl -m u:teacher:rwx /home/project
setfacl -m u:test:rx /home/project
getfacl 命令 查看文件目录ACL权限
setfacl -x u:teacher /home/project
setfacl -b /home/project
##ACL需要分区开启acl,通过dumpe2fs查看。Linux系统默认开启acl,如果分区没有开启acl,可以通过设置/etc/fstab文件开启##
例如:/dev/sdb1 /data ext4 defaults,acl 0 0
2.设置特殊权限:SUID/SGID/Sticky Bit
SUID权限:主要设置于可执行文件,对目录设置无效,当其他人执行该文件时,自动获取该文件所有者身份,设置命令为chmod u+s file。
例如: ls -l /usr/bin/passwd
-rwsr-x-r-x, 1 root root 30768 11月 24 2017 /usr/bin/passwd
SGID权限:
设置与目录,当目录设置SGID后,在该目录下创建的文件或子目录自动继承该目录的所属组
设置与文件,当文件设置SGID后,该文件无论使用者是谁,在其执行时将以该文件所有者身份执行。
例如: chmod g+s file、dirfile
设置粘滞位权限:
当一个用户对一个目录拥有写权限,该用户能删除该文件下的所有文件。
粘滞位权限主要针对其他人设置,使用命令chmod设置目录权限时,“o+t”、“o-t”可以添加或者删除粘滞位权限。
当一个目录设置粘滞位权限后,对该目录具有写权限的其他用户不能删除别的用户创建的文件或目录,只能删除自己创建的文件或目录。
例如 /tmp 和 /var/tmp
ls -ld /tmp
drwxrwxrwt. 3 root root 4096 9月 2 18:27 /tmp
ls -ld /var/tmp
drwxrwxrwt. 2 root root 4096 9月 2 18:27 /var/tmp
3.设置隐藏权限chattr
chattr设置隐藏权限,lsattr查看隐藏权限。
chattr +i
chattr +a
chattr -i
chattr -a
i:属性,如果对文件设置i属性,不允许对文件进行删除、改名、添加数据、
对目录设置i属性,不能创建删除文件,
a:属性,如果对文件设置a属性,只能向文件中追加数据,不能删除或编辑文件。
对目录设置a属性,只能在目录中建立或修改文件,不能删除文件。
Linux系统用户、组和权限管理的更多相关文章
- Linux系统用户/用户组/文件权限相关
目录一.Linux系统用户/用户组权限相关二.Linux系统文件权限相关 一.Linux系统用户/用户组权限相关 .命令:usermod 用法:usermod [-agGus] user args ‘ ...
- 第2章 细说Linux系统用户/组管理(1)
2.1 用户和组的基本概念 用户和组是操作系统中一种身份认证资源. 每个用户都有用户名.用户的唯一编号uid(user id).所属组及其默认的shell,可能还有密码.家目录.附属组.注释信息等. ...
- linux:用户及文件权限管理
学习内容来自实验楼.莫烦python.CSDN 一.Linux 用户管理 1. 查看用户 who am i 或者who mom likes who -a:打印所有能打印的 who -d :打印死掉的 ...
- Linux的用户(组),权限,文件精妙的三角关系,和强大的帮助系统
在linux中一切都是文件(文件夹和硬件外设是特殊的文件),如果有可能尽量使用文本文件.文本文件是人和机器能理解的文件,也成为人和机器进行 交流的最好途径.由于所有的配置文件都是文本,所以你只需要一个 ...
- 【Linux】【Basis】用户、组和权限管理
1. 概念: 1.1. 每个使用者都有,用户标识UID和密码:并且有身份(Authentication),授权(Authorization),审计(Audition):组(用户组,用户容器) 1.2. ...
- (大数据工程师学习路径)第一步 Linux 基础入门----用户及文件权限管理
用户及文件权限管理 实验介绍 1.Linux 中创建.删除用户,及用户组等操作. 2.Linux 中的文件权限设置. 一.Linux 用户管理 Linux 是一个可以实现多用户登陆的操作系统,比如“李 ...
- Linux系统用户管理
一.Linux账户 广义上讲,Linux的账户包括用户账户和组账户两种. Linux系统下的用户账户有两种,普通用户和超级用户.普通用户在系统中的任务就是普通工作,管理员在系统上的任务就是对普通用户和 ...
- linux学习15 Linux系统用户和组全面讲解
一.用户,组和权限管理 1.多用户(Multi-tasks),多任务(Multi-Users).对计算机而言,每一个使用者就是一个用户. 2.每个使用者: a.用户标识,密码: 认证(Authenti ...
- linux系统用户管理(一)
Linux系统用户管理1.用户管理*****2.Linux用户命令****3.用户创建的原理***4.密码管理***5.组命令管理**6.身份切换*****7.sudo提升权限***** 我们现在所使 ...
- 实验三:Linux系统用户管理及VIM配置
项目 内容 这个作业属于哪个课程 班级课程的主页链接 这个作业的要求在哪里 作业要求链接地址 学号-姓名 17043133-木腾飞 学习目标 1.学习Linux系统用户管理2.学习vim使用及配置 实 ...
随机推荐
- mybatis基础学习5---懒加载和缓存
1:懒加载 1)在主配置文件设置(要放在配置文件最前面) 1 <!-- 延迟加载配置,两个都必须同时有 --> <settings> 3 <!-- lazyLoading ...
- [Swift]扩展String类:实现find()查找子字符串在父字符串中的位置
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- XOR and Favorite Number Codeforces - 617E || [CQOI2018]异或序列
https://www.luogu.org/problemnew/show/P4462 http://codeforces.com/problemset/problem/617/E 这个是莫队裸题了吧 ...
- 贪心+模拟 ZOJ 3829 Known Notation
题目传送门 /* 题意:一串字符串,问要最少操作数使得成为合法的后缀表达式 贪心+模拟:数字个数 >= *个数+1 所以若数字少了先补上在前面,然后把不合法的*和最后的数字交换,记录次数 岛娘的 ...
- 线程间的参数传递 分类: linux c/c++ 2014-06-15 17:48 607人阅读 评论(0) 收藏
在多线程编程中,常常需要从主线程传递参数给子线程或在主线程中获得子线程的计算结果, 若使用全局变量实现,必然需要对临界区保护,因此导致大量的切换工作造成效率的低下: 而利用进程间的参数传递可以解决这一 ...
- Mybatis查询select操作
先看select标签的属性: 说几点: resultType和resultMap都是用来表示结果集的类型的,resultType用于简单的HashMap或者是简单的pojo对象,而resultSet是 ...
- C++中的数学函数汇总
math.h 数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有: 1 三角函数 double sin (double); double cos (double); double t ...
- angular.module 参数的意思
定义一个module需要两个参数,第一个作为module的名字,第二个则是指出这个module都依赖哪些别的modules
- (五)Mybatis总结之一对多、一对一
一对多 业务场景:张三既是java开发师又是大学老师又是LOL代练,张三拥有多个角色. 1.创建实体类UserInfo和RoleInfo package com.qf.mybatisdemo.pojo ...
- 关于flex布局对自己的影响
对于本图来说用了一个效果就能达到这种情况,对于我来说,今天是有进步的,具体操作就是盒子模型确实,在什么地方起来的flex就运用到该地方去,刚 开始就一直有问题,思考了半天,原来是我的控制代码出现了点错 ...