inux基础之用户权限

inux基础之用户权限

安全3A

  • Authentication认证
  • Authorization授权
  • Accouting|Audition审计
  • 什么是3A比如说windows 就有3A
  • 华为路由,硬件等等都有
  • 那3A到底什么意思
  • 所谓认证,就是确定你的身份
  • 确认了身份当然就是给你授权,给他适当权限
  • 审计就是所谓的监管,记录他所做事,有了权利你不能为所欲为吧,要监管他做了些什么事

用户usder

  • 令牌token或identity
  • 那他们什么意思,其实他们和认证相关
  • 每个用户我怎么知道你是谁张三李四
  • 每个用户登录的时候他会在系统自动的标识你的身份,这就是令牌
  • 就像古代军队的军牌和虎符一样
  • 我们普通用户和root用户登录了系统是看ID号的(UID)
  • 我们登录的时候输入的用户名等等一些英文,但是在计算机里面他识别的是数字
    • 通过UID来判断,在底层计算机会自动的把你的用户名字转换为ID 的,在后台有个转换功能
    • 对于管理员来说,我们用的是root帐号,那为什么他是管理员,不是别的帐号,那因为他的ID是0 系统会自动判断你的权限,因为root是系统分配的,他可以改吗 ,可以我们后面在说。
      • 在linux里面用户的范围是有限制的一共是从1-65535 加上0那一共是65536个帐号
      • 但是在每个版本他们普通用户的 默认用户ID都不同比如CentOS 6里面他们的帐号ID是从500开始变的,entOS 7 里面他们的帐号是从1000开始变的。
      • CentOS 5里面1-499,这个是给系统用的,不是给用户用的
      • CentOS 7 以后才从1-999才预留给系统用
        • 所以我们才会显示500到1000
        • 系统帐号一般给进程来使用
        • 比如说我们远程链接的SSH,这个服务
        • 这个服务也是进程,他也需要指定一个帐号的身份来运行,他就要用到一些特定的用户,以谁的身份来运行这就是系统帐号。
        • 一般帐号是不能登录的只能在本机用
        • 我们创建了用户以后系统会默认给我们用户分配ID ,这个ID是可以改的

组group

  • 同样的组也是一样:组Groupname/GID
  • 那组是什么,组相当于多的用户的集合,比如我们组团玩,吃饭
  • 那组有什么好处,比如说2个用户在一个组,要给他权限,比如给他读和写的权限,那我把权限给组就可以了。
    • 就相当于给组给权限了,他们都在这个组里面,他们会继承这个组的权限
    • 如果又有个帐号想要读和写的权限,那把这个帐号加到这个组就可以了
    • 当然也可以不用组给他权限,可以单独给,但是用户一多就权限就乱了,有了组管理更方便
    • 所以组比是必须了,他是为了方便管理而存在的
      • 当然组也是有ID 号的哦,组也有个帐号也叫root哦,ID也是0哦
      • 当然他是所属组的和用户不同
      • 用户的ID叫UID
      • 组的用户叫GID
      • 那表示组用户名和用户名同名
      • windows 是不允许用户名和组名同名的哦
      • 当然在linux里面我们可以给用户授权也可以给组授权,一般情况下给组授权好一点,以为你方便管理,给组授权代表一个集合更方便

安全上下文

程序(program)
进程(process)

  • 安全上下问什么意思
  • 比如说我给某个用户读和写的权限
  • 他不关用什么工具都可以用
  • 这表示权限不是和工具相关
  • 和这个用户相关
  • 那我在创建个用户
  • 只给他读的权限
  • 那他不管用什么工具那他只有读的权限
  • 这表示用户能怎么用和工具无关和你的身份有关
  • 这就是安全上下文
  • 用户得到的权限是进程的发起者赋予的
  • 这个程序是谁执行的那他就是权限的发起者
  • 进程所能访问的权限取决于,进程运行者的身份,而不是进程本身
  • 你去运行某个程序的时候会检测你运行的环境和用户的身份和权限

用户组的类别

  • 用户是可以加到几个组的,就是多个组
  • 那么我这里创建3个组分别是Q1,Q2.Q3
  • Q是读;Q2是写;Q3是读和写
  • 这表示只要有用户加到那里组就就会继承他们的权限,比如加到Q3这个用户就会有读和写的权限
  • 如果有个用户在三个组里面都有他, 那他就会继承他们所有的累加权限
    主要组(primary group)
  • 一个帐号必须有个主组,只有一个主组
  • 那什么是主组
  • 主组的意思就是你在公司上班的岗位
  • 就是身份你在公司的身份

附加组(suoolementary group)

  • 附加组对于帐号来说可以有可以没有
  • 有的话可以有多个
  • 附加组的意思就是你可能身兼数个岗位

注意不管你是主组或是附加组权限上面没有影响

用户和组的配置文件

linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称,UIN,主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性

/etc/passwd文件

  • psaawd 是一个文本文件

  • 他里面定义了和用户相关ID等资料

  • 文件的格式

  • 运行了vi /etc/passwd命令以后会显示很多字段

  • 我们用其中的一个用户来表示如:root

  • 第一个字段显示的是我们的用户

  • 第二个字段显示的是我们密码现在是X表示

  • 可以用

  • pwunconv 回归以前查看口令界面

  • pwconv 恢复口令最新状态

  • 来查看

  • 第三个字段是系统自动分配的系统ID号,来修改权限等等,可以把普通用户修改为管理员

  • 这表示帐号和名字决定不聊身份,只有帐号ID才能决定身份

  • 但是千万不要把root 修改为0以上不然很麻烦

  • 如果改了只有进单用户去修改

  • 第四字段是组的编号主组的ID

  • 第五字段是放的是用户的描述信息用

  • chfn可以修改用户的描述信息

  • 第六字段是家目录路径

  • 第七字段是shell类型也可以来改shell类型

  • nlogin是给程序用的不是给用户用的

  • 命令 getent shadow 可以用户选择性的来查看
    etc/shadow: 密码加密

  • shadow 影子的意思 ,用来放用户的密码

  • 加密机制

  • 哈希算法

  • 单向加密算法,所谓单向我一但加密,就是不可以退的,所以加密是固定的,所以位数也是一样的
    /etc/group

  • 第一个是用户名

  • 第二个是组的口令

  • 第三个是组的ID号

  • 第四个是附组用户

  • groups可以查出用户所属组

  • groupmems -g 命令 -l 可以查看组里包括那些附属组。

  • 用户密码放在了cat /etc/gshadow 里面

  • gpasswd是用来给组加口令

  • 那组的口令是干啥用的,,当用户想把自己加到某个组里就要用密码。

    • froupmems -g 用户1 -a 用户2 这条命令就是把用户2加到用户1里面.
    • newgrp 用户 临时切换为主组,需要输入密码

    用户和组的配置文件

  • 打开cat /group 后会显示组

  • 找到root用户组

  • 第一个字符root用户显示的是用户

  • 第二个字符显示的是口令

  • 第三个字符是组的ID号

  • 最后是写的附属组

  • id 用户可以查看属于那个组

  • groups 用户也可以查看属于那个组

  • /etc/group 可以添加附属组

  • 进 `cat /etc/passwd可以查看主组

  • groups这个文件放的是附属组,不放主组

  • groumems -g 用户 -l 也可以查看用户这个组里面的附属组成员>这个是组名>这个命令是这个组里包括那些用户,附属组的用户

  • groups 用户这个命令列出的是用户名>这个是用户名别和上面的搞混了,这个命令是查这个用户是属于什么组,运行了列出的就是他的主组

  • 口令已经不放在原来的路径下了,他放在了cat /etc/gshadow这个文件是专来放组的口令的。

  • 给用户加口令用的是passwd

  • 给组加口令用的是gpassws多了一个g

  • 就算他加了口令对我们的group文件没有变化,/etc/gshadow才是放口令的

  • 可以管理员账号用grupmems -g 用户1 -a 用户2 这条命令是把用户2加到用户1组里面,千万别写反了,可以用groups 用户2来查看有没有加入进去

  • 当我把一个用户加到组里面以后,加入的那个组必须要重新登录才可以,只有重新登录以后才他获取自己的组成员关系

  • 虽然属于一个组但是他们不同步就需要输入口令

  • 如果想输入不需要口令需要去/etc/gshadow里面修改让他们同步才不需要输入密码

  • gshadow文件他决定了切换需要不需要口令

  • 最好是cat /etc/group 和 /etc/gshadow文件最好是一样的否则会出现一些莫名奇妙的问题,最好是同步

  • 如果我已经在这个附属组里面了那就不需要输入口令,如果我们不在需要去里面加。

  • 组不设定口令是没有机会在往里面加的

  • gpasswd -a 用户 组名这样可以加用户

  • gpasswd -d 用户 组名 这样可以去掉用户

  • gpasswd -A 用户 组名 这样可以把用户设为组的管理员

  • gpaswd -M 用户 用户 用户 组名 可以多用户添加用户到组里面

  • 不要迫不得已不要修改文件

  • 如果你一定想改就用vipw

  • pwck可以检查命令的语法

  • grpck是对组来进行检查管理的是组

  • 最好不要改文本,最好用命令改
    用户和组管理命令

  • useradd 是创建用户

  • usermod 是修改用户

  • userdel 是删除用户>这个命令是默认不删除家目录的,加入删除了用户会显示出UID号

  • 加入-ruserdel -r 用户 才会把用户家目录删除

  • 删除用户只能一个一个删除,不能多用户删除

组管理

  • groupadd 增加组用户
  • groupmod 修改组用户
  • groudel 删除组用户

useradd

  • -u是指定用户useradd -u uid 用户
  • -o 配合-u 选项,不检查UID的唯一性,加入Uid一样他们会共享一个家目录
    --N 创建用户的时候直接加组
  • -g 创建用户的时候指定组useradd -g 主组 用户
  • -r 创建系统用户 系统用户的家目录是不会自动生成的
  • -G 指定附属组useradd -g 主组 -G 附属组可以一次指定多个附属组
  • -d是指定家目录 指定家目录要这个目录要必须不存在 useradd -d 路径 用户
  • -s 指定shell类型useradd -s shell类型 -r 用户用-r系统账号家目录不会自动生成
  • 一般写是 useradd -s shell类型 -r -d 家目录 用户 这样才会创建家目录``如:useradd -s /shin/bash -r -d /app/apache apache`
  • -M 是不创建家目录如useradd -M 创建的用户名`
  • chpasswd 可以批量修改口令如 cat passwd.t nxt| chpasswd
  • 文件权限

  • 权限(peumission)
  • 在linux权限分配里面就只有三种
  • r read 读 读取
  • w write 写 写入
  • x excute 执行
  • 其中所有者是用前三个字母来分别是用r w x 来表示 输入有会显示没有用- 来表示
  • 因为有三种人 ,三种权限分配所以有9个字符
  • 中间是所属组
  • 最后一个是其他人
  • chown 更改所有者
  • chgrp 更改所属组
  • ————————————————
  • chown 这个命令可以修改组和所有者有几个方式
  • chown . 组名 文件
  • chown : 组名 文件
  • chown 所有者:组名 文件
  • chouwn 所有者: 文件假如不加组名会默认加入所有者的组
  • chmod 添加权限 + - =
  • + 是添加权限
  • -是去掉权限
  • = 是覆盖权限
  • chmod -- rederence 组1 组2 这是参考组1给2组配权限
    ————————————————————————
  • u 是所有者
  • g 所属组
  • o是其他_______________________________________
  • 使用格式
  • chmod u+x 文件名
    ——————————————————————
  • 所有者是可以改文件权限的
  • usermod -G 组 用户可以添加组
  • 执行权限是对管理员账号是有效的,如果其中有1个可执行的的管理员就可以执行,如果都没有管理员账号也不能执行。
  • ` 删除文件和文件本身权限无关,和目录有关
  • umask + defaule permission
    -umask 是改变创建文件时候权限大小

  • umask掩码
  • umask -s 显示权限
  • umask修改权限
  • 如:umask u=rw,g=r,o=x
  • umask -p 显示掩码
  • 二进制程序没有权限一样能执行
  • suid sgis 权限必须放在可执行程序上
    • 功能是继承所有者或所属组的权限



你可能感兴趣的:(inux基础之用户权限)