• Linux入门-5 用户及权限基础


    Linux用户基础

    用户限制使用者进程可以或不可以使用资源,组用来组织管理用户。

    • 每个用户拥有一个UserID,OS实际使用的是用户ID,而非用户名
    • 每个用户属于一个主组,属于一个或多个附属组
    • 每个组拥有一个GroupID
    • 每个进程以一个用户身份运行,并受该用户可访问的资源限制
    • 每个可登录用户拥有一个指定的shell

    用户

    • 用户ID为32位,从0开始,但为了和老式系统兼容,用户ID限制在60000以下。
    • 用户分为三种:
      • root用户(ID为0)
      • 系统用户(1-499, 现在为1-999):没有shell,为某些服务而创建,如打印服务
      • 普通用户(500以上, 现在为1000以上)
    • 系统中的文件都有一个所属用户及所属组
    • 使用id命令可以显示当前用户的信息(每个用户可以有31个附属组)
    • 使用passwd可以修改当前用户密码

    相关文件

    • /etc/passwd 保存用户信息
      username:x:uid:gid:commit:home:shell
      x表示密码,在shadow文件中
    • /etc/shadow 保存用户密码
      下面是一个加密后的密码,由$分为三部分,加密方式、sort、加密后的密码
      $1$t4BLqkzi$.LDsXR//TU7Ujrhm/HK8F0
    • /etc/group 保存组信息
      gname:password:gid:users
      用户使用组密码加入对应的组,现代操作系统已经不使用组密码,因为一个用户可以属于一个或多个附属组

    查看登录的用户

    • whoami 显示当前用户
    • who 显示已登录用户
    • w 显示已登录用户及工作

    Linux中,有一个约定:命令名字越长,显示内容越少,vv。

    添加用户

    useradd <username>

    • -d 指定家目录
    • -m 自动创建家目录
    • -s 登录shell
    • -u userid
    • -g 主组
    • -G 附属组(最多31个,用逗号隔开)
      该命令执行以下操作:
    1. 在/etc/passwd中添加用户信息
    2. 如果使用passwd命令创建密码,则将密码保存在/etc/shadow中
    3. 为用户建立一个新的家目录/home/username
    4. 将/etc/skel中的文件复制到用户的家目录
    5. 建立一个与用户名相同的组,新建用户默认属于这个同名组

    修改用户信息

    usermod <username>

    • -l 新用户名
    • -u 新userid
    • -d 家目录
    • -g 主组
    • -G 附属组
    • -L 锁定,使其不能登录
    • -U 解除锁定

    删除用户

    userdel <username> 不删除家目录
    userdel -r <username> 同时删除家目录

    一般使用部门、职能或地理区域的分类方式来创建使用组。

    • 每个组有一个GID
    • 组信息保存在/etc/group中
    • 每个用户拥有一个主组,和最多31个附属组

    创建、修改、删除组

    • groupadd groupname
    • groupmod -n newname oldname
    • groupmod -g newGid oldGid
    • groupdel groupname

    Linux权限机制

    权限

    权限是操作系统用来限制对资源访问的机制,权限一般分为执行

    权限 对文件的影响 对目录的影响
    r 可读取文件内容 可列出目录内容
    w 可修改文件内容 可在目录中创建删除文件
    x 可以作为命令执行 可访问目录内容

    目录必须拥有x权限,否则无法查看其内容。

    UGO

    Linux权限基于UGO模型进行控制:

    • User, Group, Other
    • 每个文件的权限基于UGO进行设置
    • 权限三个一个组(rwx),对应UGO分别设置
    • 命令ls -l可以查看当前目录下文件的详细信息:
      drwxr-xr-- 2 username groupname size updatetime filename

    修改文件所属用户和组

    • chown 修改所属用户
      • chown username filename
      • -R 递归修改目录下所有文件的所属用户
    • chgrp 修改所属组
      • chgrp username filename
      • -R 递归修改目录下所有文件的所属组

    修改权限

    chmod 模式 文件

    模式:

    • u, g, o
    • a表示ugo(all)
    • +, -代表添加或删除权限
    • r, w, x表示权限
    • -R递归

    示例:

    • chmod u+rw linuxcast.net
    • chmod g-x linuxcast.net
    • chmod go+r linuxcast.net
    • chmod a-x linuxcast.net

    chmod支持数字方式修改权限,三个权限分别由三个数字表示:

    • r = 4(2^2)
    • w = 2(2^1)
    • x = 1(2^0)
    • - = 0

    每组权限分别对应数字之和:

    • rw- = 4+2 = 6
    • rwx = 4+2+1 = 7
    • r-x = 4+1 = 5
    • 修改时必须同时修改ugo的权限:
      • chmod 660 linuxcast.net (rw-rw----)
      • chmod 775 linuxcast.net (rwxrwxr-x)

    Linux权限扩展

    默认权限

    • 每个终端都有一个umask属性,来确定新建文件、文件夹的默认权限
    • umask使用数字方式表示权限,如:022
    • 目录默认是777-umask,文件默认是666-umask
    • 普通用户默认umask=002,root用户默认umask=022
    • i.e. 普通用户:
      • 新建目录的权限是:777-002=775
      • 新建文件的权限是:666-002=664
    • 命令umask可以查看设置umask值
    • umask实际是四位数,一位是特殊权限

    特殊权限

    权限 对文件的影响 对目录的影响
    suid 以文件的所属用户身份执行
    sgid 以文件所属组身份执行 该目录中创建的任意新文件的所属组与该目录的所属组相同
    sticky 有写权限的用户也不能删除目录中的文件,只能被owner和root删除
    • suid权限的文件,u的权限x变为s,通常为可执行文件设置,比如/usr/bin/passwd文件,普通用户以root用户权限执行,将密码写入shadow文件。
    • sgid主要用在目录上,使目录中的文件和目录自动继承目录组
    • sticky称为粘滞位,写在o的x位置上,假如本来在该位上有x, 则这些特别标志 (suid, sgid, sticky) 显示为小写字母 (s, s, t).否则, 显示为大写字母 (S, S, T)

    设置方法:

    • chmod u+s filename
    • chmod g+s filename
    • chmod o+t filename
    • 也可以用数字方式,chmod 4755 filename
      • SUID = 4
      • SGID = 2
      • Sticky = 1
  • 相关阅读:
    程序员为什么难管理?
    Python多继承
    如何从程序员走向管理层?
    为什么Python能超越JAVA,有什么优势?
    HTTP协议简介与在python中的使用详解
    人力资源管理书籍推荐,这本书HR必看
    把市面上的书翻了个遍,找到这五本经典营销管理书籍推荐给大家
    服务器部署之 cap deploy:setup
    【转】D3DXLoadSkinMeshFromXof函数及.x在不同dx版本中
    【转】C/C++字节对齐算法
  • 原文地址:https://www.cnblogs.com/whenyd/p/8426688.html
Copyright © 2020-2023  润新知