• linux用户权限


    无论是在linux中还是windows中,用户权限管理一直是一个很重要的问题

    用户权限

    了解一下/etc/passwd 和 /etc/shadow

    用户文件 /etc/passwd
    在linux系统中,所创建的用户帐号和其相关信息 (密码除外) 均是存放在/etc/passwd 配置文件中。由于所有用户对 passwd文件均可读的权限,因此密码信息并未保存在该文件中,而是保存在了/etc/shadow 的配置文件中。该文件除了root用户可以修改以外,其他用户无法修改,虽然所有用户都可以查看,但是内容是md5加密后的

    [root@gogogo ~]# ls -al /etc  | grep passwd
    -rw-r--r--.  1 root root     1545 11月  7 11:43 passwd
    -rw-r--r--.  1 root root     1545 11月  7 11:52 passwd-
    [root@gogogo ~]# ls -al /etc  | grep shadow
    ----------.  1 root root      548 11月  7 11:42 gshadow
    ----------.  1 root root      535 11月  7 11:39 gshadow-
    ----------.  1 root root      989 11月  7 12:01 shadow
    ----------.  1 root root      798 11月  7 11:52 shadow- 
    

    在 passwd 文件中,一行定义一个用户帐号,每行均由多个不同的字段构成,各字段值间用 ":” 分隔,每个字段均代表该帐号某方面的信息。
    在刚安装完成的 linux 系统中,passwd 配置文件已有很多帐号信息了,这些帐号是由系统自动创建的,他们是 linux 进程或部分服务程序正常工作所需要使用的账户,这些账户的最后一个字段的值一般为/sbin/nologin,表示该帐号不能用来登录 linux 系统。

    用户账号 : 用户密码 : 用户ID : 用户组ID : 用户名全称 : 用户主目录 : 用户所使用的shell

    1. 用户账户,即你创建的账号,在刚安装好的linux中会存在一些需要的账号身份
    2. 密码由于/etc/passwd下面的每个用户都可以改,所以密码是不会放在这里的,用x占位,用户真实的密码采用MD5加密算法加密后,保存在/etc/shadow配置文件中,只有root用户可以读取。
    3. 用户id指的是用户的uid,是用户身份的标识号,比如root的身份就是0,如果你创建了一个用户hzj,并把他的uid改成0,那么系统就会认为root和hzj是同一个账户身份。0是超级用户(root)的标识号,1~499由系统保留,作为管理账号,普通用户的标识号从500开始 用户组id叫做gid,与/etc/group中对应,
    4. 同样的gid也是从500开始,划分规则和uid类似。
    5. 用户主目录表示用户登陆后所处的目录 root的目录是/root,普通用户的家目录则是/home/username,如果你需要更改,在/etc/passwd下面更改就行了

    用户组账号文件 /etc/group
    用户组账号文件保存在/etc/group中,任何用户都可以读取

    用户密码 /ect/shadow

    [root@gogogo etc]# ls -al /etc/ | grep shadow
    ----------.  1 root root      523 8月  21 10:39 gshadow
    ----------.  1 root root      513 7月  12 17:57 gshadow-
    ----------.  1 root root      737 9月   3 14:48 shadow
    ----------.  1 root root      737 9月   3 14:48 shadow- 
    

    你会发现他们的文件属性是0000,但是root用户可以访问和更改

    用户组密码 /etc/gshadow
    用户组的真实密码保存在/etc/gshadow配置文件中

    其中第一字段表示用户组的名称,第二字段为x,第三字段为用户组的ID号,第四个为该用户组的用户成员列表,逗号隔开

    文件 /etc/shells
    系统某些服务在运行过程中,会去检查用户能够使用的 shells,而这些 shell 的查询就是借助 /etc/shells 这个文件,我们所创建的用户所使用的shells也都存放在/etc/shells这个文件中
    /bin/false本身是不存在/etc/shells中的,如果要使用,可以添加进去

    echo '/bin/false' > /etc/shells
    echo '/bin/true'  > /etc/shells
    

    /bin/false是最严格的禁止login选项,一切服务都不能用。将用户的shell设置为/bin/false,用户会无法登录,并且不会有任何提示。
    sbin/nologin只是不允许login系统,即使给了密码也不行。所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已,并不是说这个账号就无法使用系统资源。举例来说,各个系统账号中,打印作业有lp这个账号管理,www服务器有apache这个账号管理,他们都可以进行系统程序的工作,但就是无法登陆主机而已。

    如果我想要让某个具有 /sbin/nologin 的用户知道,他们不能登陆主机时,可以新建 /etc/nologin.txt 这个文件,在文件内面写上不能登陆的原因,当用户登录时,屏幕上就会出现这个文件里面的内容。

    touch /etc/nologin.txt && echo 'no permission login ..'   > /etc/nologin.txt
    

    用户和用户组的管理

    新增一个组 groupadd

    groupadd [-g gid] groupname 
    

    新增一个用户 useradd

    useradd username [-u uid] [-g gid] [-d home] [-s]
    

    -c 注释
    -d 家目录
    -m 若家目录不存在,则创建他
    -M 不建立家目录
    -e date指定账户过期的日期
    -g 用户组 指定将用户加入到哪个用户组,该用户组必须存在
    -G 用户组列表 指定用户同时加入的用户组列表,各组用逗分隔
    -n 不为用户创建私有用户组
    -s shell 指定用户登录时使用的 shell,默认为 / bin/bash
    -r 创建一个用户 ID 小于 500 的系统账户,默认不创建对应的主目录
    -u 用户 ID 手动指定新用户的 ID 值,该值必须唯一,且大于 499
    -p password 为新建用户指定登录密码。此处的 password 是对应登录密码经 MD5 加密后所得到的密码值,不实真实密码原文,因此在实际应用中,该参数选项使用较少,通常单独使用 passwd 命令来为用户设置登录密码。

    删除一个用户 userdel

    userdel [-r] username 
    

    -r 删除账户的时候连带账户的家目录一起删除

    删除一个组 groupdel

    groupdel groupname 
    

    如果组下还存在其他的账户,则不能删除组

    创建和修改一个用户的密码

    passwd

    [hzj@gogogo ~]$ passwd --help
    用法: passwd [选项...] <帐号名称>
      -k, --keep-tokens       保持身份验证令牌不过期
      -d, --delete            删除已命名帐号的密码(只有根用户才能进行此操作)
      -l, --lock              锁定指名帐户的密码(仅限 root 用户)
      -u, --unlock            解锁指名账户的密码(仅限 root 用户)
      -e, --expire            终止指名帐户的密码(仅限 root 用户)
      -f, --force             强制执行操作
      -x, --maximum=DAYS      密码的最长有效时限(只有根用户才能进行此操作)
      -n, --minimum=DAYS      密码的最短有效时限(只有根用户才能进行此操作)
      -w, --warning=DAYS      在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
      -i, --inactive=DAYS     当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
      -S, --status            报告已命名帐号的密码状态(只有根用户才能进行此操作)
      --stdin                 从标准输入读取令牌(只有根用户才能进行此操作)
    
    Help options:
      -?, --help              Show this help message
      --usage                 Display brief usage message
    

    root可以修改其他账户的密码,其他账户只能修改自己的密码

    密码生成器
    mkpasswd 密码生成工具,如果自己定义的密码并不完美,或者说容易被猜出来,那么你可以用密码生成器来生成无规律的密码

    # 下载
    yum install -y expect
    # 使用
    [root@gogogo ~]# mkpasswd
    Bmb2^Wuu4
    [root@gogogo ~]# mkpasswd
    Wk05aOxj/
    

    用户权限命令

    介绍一些用户权限操作中经常用到的命令

    切换用户

    su (选项) (参数)
    
    -c command user 切换成user并使用command后返回当前用户
    -user 改变成user后进入到user的家目录
    

    查看当前用户名称

    whoami == id -un

    显示用户的id以及群组id

    id (选项) user
    
    -g  显示用户所属群组的id
    -un 显示当前用户名称
    
    
  • 相关阅读:
    代码操作
    购物车
    利息计算器
    生成海报
    知识库
    JavaScript处理字符串--参照W3C
    C#输入排序-冒泡
    enum举例
    C# 表达式计算器----数据结构
    C# 测试单词的完美度
  • 原文地址:https://www.cnblogs.com/Alpacapyer/p/11880532.html
Copyright © 2020-2023  润新知