Linux账号和权限管理详解

  • 一、用户账号和组账号概述
    • 1.1 Linux基于用户身份对资源访问进行控制
    • 1.2 用户账号
    • 1.3 组账号
  • 二、用户账号文件
    • 2.1 用户账号文件 /etc/passwd
    • 2.2 用户账号文件 /etc/shadow
  • 三、用户账号设置
    • 3.1 添加用户账号 useradd 或者 adduser
    • 3.2 设置/更改用户口令passwd
    • 3.3 修改用户账号的属性 usermod
    • 3.4 用户账号的初始配置文件
    • 3.5 PATH变量用于设置可执行程序的默认搜索路径
  • 四、组账号文件
    • 4.1 组账号文件
    • 4.2 添加组账号 groupadd
    • 4.3 添加删除组成员 gpasswd
    • 4.4 删除组账号 groupdel
  • 五、查询账号信息
    • 5.1 查询用户所属的组 groups
    • 5.2 查询用户身份标识 id
    • 5.3 查询用户帐号的详细信息 finger
    • 5.4 w、who、 users 命令
  • 六、文件/目录的权限和归属
    • 6.1 文件/目录的权限
    • 6.2 查看文件/目录的权限和归属
    • 6.3 设置目录和文件的权限 chmod
    • 6.4 设置目录和文件的归属 chown
    • 6.5 设置目录和文件的默认权限 umask
  • 总结

一、用户账号和组账号概述

1.1 Linux基于用户身份对资源访问进行控制

  • 用户帐号
    超级用户、普通用户、程序用户

  • 组帐号
    基本组(私有组)
    附加组(公共组)

  • UID和GID
    UID (User IDentity,用户标识号)
    GID (Group IDentify,组标识号)

1.2 用户账号

超级用户:root用户是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限。系统中超级用户是唯一的。

普通用户:由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限。

程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等。

1.3 组账号

基本组(私有组) :基本组账号只有一个,一般为创建用户时指定的组。在/etc/passwd文件中第4字段记录的即为该用户的基本组GID号。

附加组(公共组) :用户除了基本组以外,额外添加指定的组。

UID:用户标识号
GID:组标识号
root用户账号的UID和GID号为固定值0
程序用户账号的UID和GID号默认为1~499
普通户UIDRGID默认为500~60000

二、用户账号文件

2.1 用户账号文件 /etc/passwd

■保存用户名称、宿主目录、登录Shell 等基本信息

  • 文件位置:/etc/passwd
  • 每一行对应一个用户的帐号记录
[root@localhost~]# head-2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

■用户账号文件 /etc/passwd

  • 基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。

  • 在早期的UNIX操作系统中,用户帐号的密码信息是保存在passwd文件中的,不法用户可以很容易的获取密码字串并进行暴力破解,因此存在一定的安全隐患。后来经改进后,将密码转存入专门的shadow文件中,而passwd文件中仅保留密码占位符"x"

root:x:0:0:root:/root:/bin/bash
字段1:用户帐号的名称
字段2:用户密码占位符"x"
字段3:用户帐号的UID号
字段4:所属基本组帐号的GID号
字段5:用户全名
字段6:宿主目录
字段7:登录Shell 信息( /bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)

2.2 用户账号文件 /etc/shadow

■保存用户的密码、账号有效期等信息

  • 文件位置: /etc/shadow
  • 每一行对应一个用户的密码记录
[root@localhost~]# head-2   /etc/shadow
[root@localhost-]# tail -1   /etc/shadow

■用户账号文件 /etc/shadow

  • 默认只有root用户能够读取shadow文件中的内容,且不允许直接编辑该文件中的内容。
root: $6$VyOUGqOC$v5H1LM1wagZc/FwGfnrtJFn1T:18445:0:99999:7:::
字段1:用户帐号的名称
字段2:使用MD5加密的密码字串信息,当为"*"或"! "时表示此用户不能登录到系统。若该字段内容为空,则该用户无须密码即可登录系统
字段3:上次修改密码的时间,表示从1970年01月01日算起到最近一次修改密码时间隔的天数
字段4:密码的最短有效天数, 自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制
字段5:密码的最长有效天数, 自本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制
字段6:提前多少天警告用户密码将过期,默认值为7
字段7:在密码过期之后多少天禁用此用户
字段8:帐号失效时间,此字段指定了用户作废的天数(从1970年01月01日起计算) ,默认值为空,表示账号永久可用。
字段9:保留字段(未使用)

三、用户账号设置

3.1 添加用户账号 useradd 或者 adduser

  • 在 /etc/passwd文件和 /etc/shadow文件的末尾增加该用户账号的记录。
    若未明确指定用户的宿主目录,则在 /home目录下自动创建与该用户账号同名的宿主目录,并在该目录中建立用户的各种初始配置文件。
    若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到 /etc/group和 /etc/gshadow文件中。
格式:useradd [选项] 用户名
常用选项:
-u:指定用户的 UID 号,要求该 UID 号码未被其他用户使用。
-d:指定用户的宿主目录位置(当与-M 一起使用时,不生效)。
-e:指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
-g:指定用户的基本组名(或使用 GID 号),对应的组名必须已存在。
-G:指定用户的附加组名(或使用 GID 号),对应的组名必须已存在。
-M:不建立宿主目录。
-s:指定用户的登录 Shell,(比如/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)。举例:
useradd -d /admin -g wheel -G root admin1
useradd -e 2020-12-31 -s /sbin/nologin admin2

添加用户账号wangwu在添加用户账号wangwu的时候,就同时创建了用户的目录

建立一个用户名为zhengsan的用户,UID号为2000,指定用户的附加组名test,不建立宿主目录,指定用户的账户失效时间2021-12-30

3.2 设置/更改用户口令passwd

root用户可以指定用户名作为参数,对指定账号的密码进行管理;不指定用户名时,修改当前账号的密码。

普通用户却只能执行单独的"passwd"命令修改自己的密码。

命令格式:
passwd [选项] 用户名
常用选项:
-d:清空指定用户的密码,仅使用用户名即可登录系统。
-l:锁定用户账户,锁定的用户账号将无法再登录系统。
-S:查看用户账户的状态(是否被锁定)。
-u:解锁用户账户。(-u解锁时,如果没有密码会提示,需要使用-f强制解锁)

设置密码

清空密码后可直接登录


其他命令演示:

3.3 修改用户账号的属性 usermod

命令格式:usermod [选项] 用户名
常用选项:
-u:修改用户的 UID 号。
-d:修改用户的宿主目录位置。
-e:修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
-g:修改用户的基本组名(或使用 GID 号)。
-G:修改用户的附加组名(或使用 GID 号)。
-s:指定用户的登录 Shell。
-l:更改用户账号的登录名称。
-L:锁定用户账户。
-U:解锁用户账户。

将zhengsan用户的登录名更改为lisi

usermod -l lisi zhengsan

3.4 用户账号的初始配置文件

命令格式:userdel  [-r]  用户名
添加“-r”选项时可以将该用户的宿主目录一并删除

■文件来源

  • useradd 命令添加一个新的用户账号后在该用户的宿主目录中建立一些初始配置文件。
  • 这些文件来自于账号模板目录/etc/skell,基本上都是隐藏文件。

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

  • ~/.bash_profile
  • ~/.bashrc
  • ~/.bash_logout
    用户宿主目录下的初始配置文件只对当前用户有效
~/.bash_profile      此文件中的命令将在该用户每次登录时被执行,它会设置一些环境变量,并且会调用该用户的~/.bashrc文件
~/.bashrc           此文件中的命令会在每次打开新的bash shell时(也包括登录系统)被执行,并且会调用/etc/bashrc文件
~/.bash_logout      此文件中的命令将在用户每次退出登录或退出bash shell时执行全局配置文件对所有用户有效
/etc/profile        这个文件是为系统全局变量配置文件,可通过重启系统或者执行source /etc/profile 命令使profile文件被读取
/etc/profile.d      这个文件实际上是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本
/etc/bashrc         每一个运行bash shell的用户都会执行此文件,可通过执行bash 命令打开一个新的bash shell时,使 bashrc文件被读取vim /etc/bashrc
alias myls='/bin/ls -lhr'bash
type myls    

3.5 PATH变量用于设置可执行程序的默认搜索路径

PATH 生效的原理:
每次启动系统的时候会初始化命令,会执行/etc/profile和~/.bash_profile。/etc/profile会将路径/usr/local/bin 、/usr/bin、/usr/local/sbin 、/usr/sbin 追加到PATH中去。然后调用 /etc/profile.d 目录下的脚本。

四、组账号文件

4.1 组账号文件

  • /etc/group:保存组帐号基本信息
  • /etc/gshadow:保存组帐号的密码信息
grep "postfix"  /etc/group
mail:x:12:postfix
postfix:x:89:
字段1:组帐号的名称
字段2:占位符"x"
字段3:组账号的GID
字段4:组账号包含的用户成员(一般不包括基本组对应的用户帐号) ,多个成员之间以逗号","分隔

4.2 添加组账号 groupadd

groupadd  -g 1000  market
添加组账号market
-g:指定GID号tail  -1  /etc/group
market:x:1000:

示例:添加一个GID为666的zhaoqi组账户

4.3 添加删除组成员 gpasswd

命令格式:gpasswd [选项] 组账号名
常用选项:
-a:向组内添加一个用户
-d:从组内删除一个用户成员
-M:定义组成员列表,以逗号分隔

-a


-d


可以发现已经删除

-M

4.4 删除组账号 groupdel

groupdel  组账号名

示例

groupdel  market     删除组账号market
grep "market" /etc/group

五、查询账号信息

5.1 查询用户所属的组 groups

groups  [用户名]

5.2 查询用户身份标识 id

id  [用户名]

5.3 查询用户帐号的详细信息 finger

  • 查询用户账号的登录属性
    注:需要先进行安装finger软件包

5.4 w、who、 users 命令

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

通常使用tty来简称各种类型的终端设备,,Centos7系统, tty1表示图形界面,,tty2-tty6表示文字界面,可以用ctrl+Alt+F1-F6切换。
按Ctrl+Alt+F2登陆,执行w命令,查看使用的终端就是tty2

pts说明是用远程工具连接的,比如xshell,后面的数字代表登录的时间顺序,越小证明登录的越早

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

6.1 文件/目录的权限

■访问权限

  • 读取r:允许查看文件内容、显示目录列表
  • 写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
  • 可执行x:允许运行程序、切换目录
    ■归属(所以权)
  • 属主:拥有该文件或目录的用户帐号
  • 属组:拥有该文件或目录的组帐号
权限项 执行
字符表示 r w x -
数字表示(八进制) 4 2 1 0

6.2 查看文件/目录的权限和归属

ls  -l  install.log
-rw-r--r--  1  root  root   34298  04-02  00:23   install.log    #  -rw-r--r-- :文件类型、权限    root  root   属主、属组


6.3 设置目录和文件的权限 chmod

语法1:chmod   [ugoa]  [+-=]  [rwx]  文件或目录...(+、-、= 分别表示增加、去除、设置权限)
(u、g、o、a 分别表示属主、属组、其他用户、所有用户)
(r,w,x权限字符可分别表示为8进制字符4,2,1,表示一个权限组合时需要将数字进行累加;如rwx=7,rw-r-r=644)语法2:chmod  nnn  文件或目录...(3位八进制数)常用命令选项:-R:递归修改指定目录下所有子项的权限


方法1

方法2

6.4 设置目录和文件的归属 chown

chown 属主 文件或目录chown :属组 文件或目录
chgrp 属组 文件或目录chown 属主:属组 文件或目录
chown 属主.属组 文件或目录-R:递归修改指定目录下所有子目录及文件的归属

演示:

6.5 设置目录和文件的默认权限 umask

■umask作用
指定目前用户在新建文件或目录时的权限默认值
新建的文件或者目录的权限为默认最大权限减去umake (普通文件的最大默认权限为6, 目录的最大默认权限为7)
1.umask设置:umask 022
2.umask查看:umask

这边我先查询默认的umask默认为0022,0022用后三位022,(文件用6去减权限的八进制数)
如12文件的rw为4+2=6   6-6=0    r为4  6-4=2      022
目录如上用7去减

如果我们想设置所创建的目录所以用户都有rwx权限
示例

总结

■用户账号管理(useradd、passwd、usermod、userdel)

■组账号管理(groupadd、gpasswd.groupdel)

■用户账号文件与组账号文件

■查询账号相关信息的命令(groups.id、finger、w)

■设置目录与文件权限(chmod)

■设置目录与文件归属(chown)

Linux账号和权限管理详解(超详细示例操作)!相关推荐

  1. 【Linux】saltstack的使用详解 超详细

    一.salt常用命令 salt 该命令执行salt的执行模块,通常在master端运行,也是我们最常用到的命令 salt [options] '<target>' <function ...

  2. kubernetes(k8s)之rbac权限管理详解

    kubernetes(k8s)之rbac权限管理详解 RBAC简介 RBAC(Role-Based Access Control) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 ...

  3. Shiro权限管理详解(授权和注解开发)【面试点】

    Shiro权限管理详解 1. 权限管理 1.1什么是权限管理 1.2用户身份认证 1.2.1 概念 1.2.2 用户名密码身份认证流程 1.2.3 关键对象 1.3 授权 1.3.1 概念 1.3.2 ...

  4. linux输入一个用户看是否在工作,linux下的用户管理详解

    linux下的用户管理详解 useradd 命令详解 添加用户 想要对linux下面的帐号了解的话首先必须要了解的4个配置文件[root@localhost /]# cat /etc/passwd 首 ...

  5. linux服务器操作系统日志都有哪些,Linux操作系统服务器日志管理详解

    Linux操作系统服务器日志管理详解 Linux操作系统服务器日志管理详解 日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下 ...

  6. Linux 账号和权限管理(上)

    目录 前言 管理用户和主账号 用户和组账号概述 用户账号管理 用户账号文件 文件/etc/shadow 文件/etc/shadow 添加用户账号 useradd 设置/更改用户口令 passwd 修改 ...

  7. linux文件属性644到755,linux系统文件夹数字权限设置详解644、755、777

    linux系统文件夹数字权限设置详解644.755.777 ,左至右,第一位数字代表文件所有者的权限,第二位数字代表同组用户的权限,第三位数字代表其他用户的权限. 而具体的权限是由数字来表示的,读取的 ...

  8. Java 泛型详解(超详细的java泛型方法解析)

    Java 泛型详解(超详细的java泛型方法解析) 1. 什么是泛型 泛型:是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型.也就是说在泛型使用过程中,操作的数据类型被指定为 ...

  9. 【AWSL】之Linux账号和权限管理(/etc/passwd、/etc/shadow、useradd、passwd、usermod、groupadd、gpasswd...chmod、chown)

    序言 作为一个多用户.多服务的服务器操作系统,Linux提供了严格的权限管理机制,主要从用户身份.文件权限两方面对资源访问进行限制. Linux最优秀的地方之一就在于它的多人多任务环境,如果你首次接触 ...

最新文章

  1. IDEA设置运行tomcat即生成war包
  2. putty或xshell上用vi/vim小键盘无法使用的解决方法
  3. java第五章:面向对象(oop)
  4. SpringBoot v2.2.6版本遇到的坑 --- HiddenHttpMethodFilter组件的锅
  5. python 基类 派生类_在Python中具有两个子(派生)类的继承示例
  6. anaconda中安装xgboost_Anaconda是什么?Anconda下载安装教程 - python基础入门(16)
  7. HDU.1000 A + B Problem
  8. c++中static的全部用法
  9. 读源码Apache-commons-lang3-3.1(一)
  10. Python-运算符和其优先级
  11. Django搭建的个人博客
  12. 用javascript操作xml
  13. matlab delay用法,请教Vensim中DELAY1I函数使用的单位设置
  14. Python3网络爬虫(九):使用Selenium爬取百度文库word文章
  15. mysql sending data 耗时_mysql sending data状态时间花费太大
  16. ArcEngine实现要素类排序的四种方法
  17. GPS之MTK平台代码小结以及gps协议注释
  18. python复利计算_如何让Python复利计算器给出正确的答案
  19. Oracle SQL group by-报错:不是单组分组函数
  20. MySQL 是怎么加行级锁的?为什么一会是 next-key 锁,一会是间隙锁,一会又是记录锁?

热门文章

  1. TCP协议通讯流程(三次握手及四次挥手)
  2. 华为云视频Cloud Native架构设计与工程实践
  3. 章琦:能坚持的唯一的原因就是兴趣
  4. ffplay.c学习-2-数据读取线程
  5. 腾讯基于全时态数据库技术的数据闪回
  6. FFmpeg代码导读系列(一,下半部)----HEVC在RTMP中的扩展
  7. web模块化规范和实现
  8. netstat命令总结
  9. centos7 redis5.0以前版本 部署集群示例 - 第二篇
  10. leetcode 238. Product of Array Except Self | 238. 除自身以外数组的乘积(Java)