当前位置: 首页 > news >正文

Linux账号和权限管理

目录

前言

一、管理用户账号

1、Linux系统中用户账号类型

2、用户标识UID的分类

3、用户账号文件

4、用户账号的初始配置文件

5、用户账号的管理命令

5.1 useradd

5.2 usermod

5.3 passwd

5.4 userdel

二、管理组账号

1、Linux系统中组账号类型

2、组标识号GID的分类

3、组账号文件

4、组账号的管理命令

4.1 groupadd

4.2 gpasswd

4.3 groupdel

三、查询用户信息

1、finger

2、w

3、who

四、目录/文件的权限和归属

1、目录/文件的三种权限

2、访问人群(设置权限的对象)

3、修改目录/文件的权限和归属的命令

3.1 chmod

3.2 chown

3.3 umask

3.4 特殊权限

3.4.1 sticky

3.4.2 suid

3.4.3 guid


前言

Linux系统是一个多用户多任务的分时操作系统,即可通过不同的用户来管理操作系统。我们可以给不同的用户设置不同的权限,来实现不同的需求。而在企业中也是通过创建不同用户,分配不同的权限,这样企业中不同的职位就可根据自己用户权限的大小实现工作中的分工

一、管理用户账号

1、Linux系统中用户账号类型

  • 普通用户:由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限
  • 超级用户:root用户是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限,系统中超级用户是唯一的
  • 程序用户: 在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等

 2、用户标识UID的分类

  • Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为用户标识号UID
  • UID是操作系统区分用户的基本依据,原则上每个用户的UID号应该是唯一,但也可使用useradd的-o选项来允许使用重复的 UID 创建用户

用户标识号UID的分类:

操作系统版本用户类型UID范围

CentOS 6

普通用户1~499
超级用户固定值为0
程序用户500~60000(可修改)
CentOS 7普通用户1000~60000(可修改)
超级用户固定值为0
程序用户1~999

3、用户账号文件

  • /etc/passwd:存放保存用户名称、宿主目录、登录 Shell 等基本信息

     共7段,用冒号“:”隔开

  • /etc/shadow:存放用户密码,账号有效期等信息

4、用户账号的初始配置文件

  • 文件来源

新建用户帐号时,从 /etc/skel 目录中复制而来

cat  /etc/default/useradd

  • 主要的用户初始配置文件

~/.bash_profile:开机前先运行的命令文件

~/.bashrc:开机前先运行的命令文件

~/.bash_logout:关机前先运行的命令文件

5、用户账号的管理命令

5.1 useradd
  • 新建用户账号
  • 若未明确指定用户的宿主目录,则在/home 目录下自动创建与该用户账号同名的宿主目录,并在该目录中建立用户的各种初始配置文件
  • 原理:使用useradd命令新建用户其实是在/etc/passwd末尾增加一条该用户账号的记录 ,实际上useradd命令是修改了passwd文件内容

通式:useradd  选项  新用户名

选项说明
-u指定用户的 UID 号,要求该 UID 号码未被其他用户使用
-M不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录
-s指定用户的登录 Shell
-e指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式
-d指定用户的宿主目录位置(当与-M 一起使用时,不生效)
-c添加用户的备注信息
-g指定用户的基本组名(或使用 GID 号)
-G指定用户的附加组名(或使用 GID 号)

拓展:

useradd  -u  1020  -M  -s  /sbin/nologin  mimi

//指定用户mimi的UID号为1020并指定该用户为程序用户不允许登录 

5.2 usermod

对已有用户账号的属性进行修改

通式:usermod  选项  已有用户名

5.3 passwd

为用户账号设置密码或修改密码

通式:passwd  选项  用户名

拓展:

如何生成12位随机密码?

cat  /dev/random  |  tr  -cd  [a-zA-Z0-9]  |  head  -c  12

echo  "新密码" |  passwd --stdin  用户名

//免交互修改密码

 

5.4 userdel

删除用户

通式:userdel  选项  用户名

选项说明
-r将宿主目录一起删除

二、管理组账号

1、Linux系统中组账号类型

  • 基本组(私有组): 基本组账号只有一个,一般为创建用户时指定的组
  • 附加组(公共组): 用户除了基本组以外,额外添加指定的组

2、组标识号GID的分类

用户标识号GID的分类:

操作系统版本用户类型GID范围

CentOS 6

普通用户1~499
超级用户固定值为0
程序用户500~60000(可修改)
CentOS 7普通用户1000~60000(可修改)
超级用户固定值为0
程序用户1~999

3、组账号文件

  • /etc/group:保存组帐号基本信息
  • /etc/gshadow:保存组帐号的密码信息

4、组账号的管理命令

4.1 groupadd

添加组账号

通式:groupadd  选项  组账号名

选项说明
-g指定组账号的GID

 4.2 gpasswd

添加、设置、删除组成员

通式:gpasswd  选项  组账号名

选项说明
-a向组内添加一个用户
-d从组内删除一个用户成员
-M定义组成员列表,以逗号分隔
4.3 groupdel

删除组账号

通式:groupdel  组账号名

三、查询用户信息

1、finger

查询用户帐号的详细信息

通式:finger  用户名

2、w

 查询已登录到主机的用户信息

通式:w  选项  组账号名

3、who

只能显示当前登陆的用户信息,但无法知晓每个用户正在执行的命令

通式:who  选项  file

选项说明
-a列出所有信息,相当于所有选项。
-b列出系统最近启动的时间日期。
-l列出所有可登陆的终端信息。
-m仅列出关于当前终端的信息,who -m 命令等同于 who am i
-q列出在本地系统上的用户和用户数的清单。
-r显示当前系统的运行级别。
-s仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。
-u显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。
-T 或 -w显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。

四、目录/文件的权限和归属

1、目录/文件的三种权限

权限字符表示权限数字表示说明
目录r4可查看目录下有哪些文件
w2可修改目录下的文件
x1可执行(作为目录最小的权限)
文件r4可读取文件内容
w2可修改文件内容
x1可运行文件

拓展:

若一个文件可以被删除,那与它本身权限有关吗?

答:当前用户如果有该文件所在目录的wr权限,就可以实现删除操作

将/opt/test复制到/mnt,当前用户一定要有什么权限?

答:当前用户一定要有r权限

注:能不能操作目录和文件,和当前登录用户的权限有关系

2、访问人群(设置权限的对象)

对象对象字符表示
所属主u
所属组g
其他用户o
所有用户a

3、修改目录/文件的权限和归属的命令

3.1 chmod

对属主、属组,其他用户、所有用户进行修改文件权限的操作

用法:chmod  u+rwx  文件名           或   chmod  777  文件名

          //给文件的属主添加rwc权限

          

          chmod  g-w  文件名           或   chmod  757  文件名

          //给文件的属组删除w权限

选项说明
-R递归

3.2 chown

修改目录/文件的属主、属组

通式:chown  用户名:组名  文件名

 用法:

 chown  用户名:组名  文件名                             //目录/文件的属主、属组都修改

 chown  用户名 文件名                                      //只修改目录/文件的属主

 chown  :组名 文件名                                         //只修改目录/文件的属组

3.3 umask

umask的值可以用来保留在创建新文件时的初始权限

  • 新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变
  • 新建目录的默认权限: 777-umask
  • root的umask 默认是0022,即目录权限为755,文件权限为644
  • 非特权用户umask默认是0002,即目录权限为,文件权限为

如当umask值为0123时,即目录权限为654,文件权限为644

3.4 特殊权限
3.4.1 sticky
  • 在目录设置Sticky位,只有文件的所有者或root可以删除该文件,为阻止拥有w权限的其他用户删除该目录中的任何文件
  • 只能设置在目录上

Sticky权限设定: chmod  o+t  目录名                          //添加Sticky权限
                             chmod  o-t  目录名                          //删除Sticky权限

3.4.2 suid

只能运用在可执行文件上,即开放文件所有者的权限给其他用户,当用户执行该执行文件时,会拥有该执行文件所有者的权限

suid权限设定:chmod  o+s  文件名

如chmod  u+s  /usr/bin/vim                     

//给vim加上suid权限,代表所有用户可以使用vim打开并编辑所有文件

3.4.3 guid
  • 可运用于文件或者目录
  • 运用在文件的含义是开放文件所属组的权限给其他用户,即当用户执行该执行文件时,会拥有该执行文件所属组用户的权限
  • 运用在目录上的含义是在该目录下所有用户创建的文件或者目录的所属组都和其一样guid权限设定:chmod  g+s  文件名

 sgid权限设定:chmod  g+s  文件名

如chmod  g+s  /usr/bin/vim                     

//给vim加上sgid权限,代表所有用户可以使用vim所属组的权限

相关文章:

  • Linux - 记录问题:Ubuntu查看文件夹大小
  • 云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)
  • 代码随想录算法训练营第二十七天 | 回溯算法part4
  • alertmanage调用企业微信告警(k8s内部署)
  • Python 爬虫之下载歌曲(二)
  • 每日一题——LeetCode206.反转链表
  • 【微服务核心】Spring Boot
  • aws-sdk-cpp通过bazel构建的S3_client轮子
  • sql_lab之sqli中的堆叠型注入(less-38)
  • 【C++】STL 容器 - list 双向链表容器 ① ( 容器特点 | 容器操作时间复杂度 | 构造函数 )
  • nginx-proxy-manager初次登录502 bad gateway
  • TensorFlow是什么
  • 单例模式你了解嘛?
  • Pytest框架 —— 用例标记和测试执行篇!
  • k8s搭建(一、环境配置与docker安装)
  • C++类中的特殊成员函数
  • spring boot下thymeleaf全局静态变量配置
  • tensorflow学习笔记3——MNIST应用篇
  • Vue全家桶实现一个Web App
  • 你真的知道 == 和 equals 的区别吗?
  • 浅谈Golang中select的用法
  • 跳前端坑前,先看看这个!!
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 7行Python代码的人脸识别
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 湖北分布式智能数据采集方法有哪些?
  • # centos7下FFmpeg环境部署记录
  • #ifdef 的技巧用法
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (1)(1.13) SiK无线电高级配置(六)
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (C++17) optional的使用
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (二十四)Flask之flask-session组件
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (含笔试题)深度解析数据在内存中的存储
  • (六)Hibernate的二级缓存
  • (四)Controller接口控制器详解(三)
  • (五)关系数据库标准语言SQL
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)iOS字体
  • .libPaths()设置包加载目录
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET 读取 JSON格式的数据
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • :中兴通讯为何成功
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [20140403]查询是否产生日志
  • [240527] 谷歌 CEO 承认 AI 编造虚假信息问题难解(此文使用 @gemini 命令二次创作)| ICQ 停止运作