账户和权限管理

87 阅读7分钟

用户账户和组账号概述

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

    • 用户账号

      • 超级管理员:权限最高的用户
      • 普通用户:权限受到限制的用户
      • 程序用户:不是给人登录用的
    • 组账号

      • 基本组(私有组):一定要有,有且只有一个
      • 附加组(公共组):可有可无,可以有多个
    • UID和GID

      • UID(User IDentify,用户标识号):用户的uid为0,就是超级管理员,不是因为它叫“root”

      • GID(Group IDentify,组标识号)

      • 系统是靠UID来区分用户身份的

      • Centos7的UID范围

        • 超级管理员0
        • 普通用户1000-60000
        • 程序用户1-999
      • Centos6的UID范围

        • 超级管理员0
        • 普通用户500-60000
        • 程序用户1-499

用户账号文件/etc/passwd

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

    • 文件位置:/etc/passwd
    • 每一行对应一个用户密码记录
  • root: x : 0:0:root:/root:/bin/bash

    • root:用户的名字
    • x :密码占位符
    • 0:uid
    • 0:gid
    • root:备注信息
    • /root:家目录位置
    • /bin/bash:登陆时默认加载的shell类型

    man 5 passwd可以查询该文件的信息

    密码文件Shadow

  • shadow文件

  • 文件位置:/etc/shadow

    作用:存放密码及密码策略的文件

    zhangsan:663/O6NuAjdnApLp2f$:19818:0:99999:7:::

    • zhangsan:用户名
    • 663/O6NuAjdnApLp2f$:加密的密码

    如果第二列是!!或*该用户不可以登录到系统中,如果为空代表该用户密码可以直接登录

    • 19818:上次修改密码的时间

    1970.1.1到修改密码那天一共过了19818天

    • 0:最短修改密码间隔的时间,0代表不限制下次修改密码的时间

    如果该项为3,今天修改密码后,想再次修改密码,需要3天以后

    • 99999:密码有效期为99999天

    9999天约等于273年(约等于永久有效)

    • 7:密码到期前7天提醒你
    • 空:密码宽限时间

    如果为3,密码到期后还可以登录3天

    • 空:账户失效时间

    1970.1.1+失效天数=失效日期

    • 保留字段:暂未未启用

    man 5 shadow可以查询该文件的信息

命令

useradd

useradd 用户名

  • 新建一个用户
[root@localhost /]# useradd wangyue
[root@localhost /]# cat /etc/passwd | grep "wangyue"
wangyue:x:1003:1003::/home/wangyue:/bin/bash

特点

  • 自动建立一个同名的基本组
  • 自动建立一个同名的家目录,在/home下

useradd常用选项(默写)

  • -u:指定uid

    [root@localhost ~]# useradd -u 1100 wangwu
    [root@localhost ~]# cat /etc/passwd|grep "wangwu"
    wangwu:x:1100:1100::/home/wangwu:/bin/bash
    
  • -s指定登录shell类型

    [root@localhost ~]# useradd lisi -s /sbin/nologin
    [root@localhost ~]# cat /etc/passwd|grep "lisi"
    lisi:x:1112:1112::/home/lisi:/sbin/nologin
    
  • -M不建立家目录

    [root@localhost ~]# useradd test -M
    [root@localhost /]# cd /home
    [root@localhost home]# ls
    huang  list
    

用法:useradd 【选项】 【用户名】

useradd lisi -u 1111 -s /sbin/nologin -M

[root@localhost home]# useradd lisi -u 1111 -s /sbin/nologin -M
[root@localhost home]# cat /etc/passwd |grep "lisi"
lisi:x:1111:1111::/home/lisi:/sbin/nologin

useradd其他选项

  • -d:指定家目录
  • -e:指定用户失效时间,格式yy-mm-dd
  • -r:随机生成一个系统用户
  • -g:指定基本组
  • -G:指定附加组
  • -c:备注信息
  • -p:密码,但是不能直接使用,必须输入加密后的密码(一个字符串)

passwd

passwd 修改当前用户密码

[root@localhost /]# passwd
更改用户 root 的密码 。
新的 密码:

passwd 用户名

不加用户名修改当前用户的密码

[root@localhost /]# passwd lisi
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

-d:清空用户密码

[root@localhost /]# passwd lisi -d
清除用户的密码 lisi。
passwd: 操作成功
[root@localhost /]# cat /etc/shadow |grep "lisi"
lisi::19821:0:99999:7:::

-l:锁定用户无法登录

[root@localhost /]# passwd lisi -l
锁定用户 lisi 的密码 。
passwd: 操作成功

-u:解锁用户

[root@localhost /]# passwd lisi -uf
解锁用户 lisi 的密码。
passwd: 操作成功

-S:查看用户是否被锁定

[root@localhost /]# passwd lisi -S
lisi LK 2024-04-08 0 99999 7 -1 (密码已被锁定。)

免交互

echo ”123123“ |passwd lisi --stdin

[root@localhost /]# cat /etc/shadow |grep "lisi"
lisi:$6$HmQnymCN$Rp9yOaSexzwgHptFlZn6q5LSxGa4t3IG97muaYO8JSesAJ42vwzp60D.Ws5lTyGU0q9DWMKdGmqXezN/nN4QI/:19821:0:99999:7:::
[root@localhost /]# echo "123123"|passwd lisi --stdin
更改用户 lisi 的密码 
passwd:所有的身份验证令牌已经成功更新
[root@localhost /]# cat /etc/shadow |grep "lisi"
lisi:$6$4jGS0bo.$FxRfKiPTlHB9Lvw225vTTr9.jlXvvcMKnkEUchxTyTLLnqMwfddlUmvuHrXUoyz4AfpjRBNk976bVh2Owi.Vt1:19821:0:99999:7:::

usermod自定义账户

usermod

  • -l:修改用户名,先写新的名字,再写旧的名字

    usermod -l new_user old_user
    
  • -u:修改uid

usermod -u uid user
  • -s修改登录shell类型
[root@localhost /]# usermod -s /sbin/nologin lisi
[root@localhost /]# cat /etc/passwd|grep "lisi"
lisi:x:1001:1001::/home/lisi:/sbin/nologin
  • -e:指定用户失效时间,格式yy-mm-dd
[root@localhost /]# usermod lisi -e 2024-4-9
[root@localhost /]# cat /etc/shadow|grep "lisi"
lisi:$6$4jGS0bo.$FxRfKiPTlHB9Lvw225vTTr9.jlXvvcMKnkEUchxTyTLLnqMwfddlUmvuHrXUoyz4AfpjRBNk976bVh2Owi.Vt1:19821:0:99999:7::19822:
  • -L:锁定用户账户

同passwd,注意这里是大写的“L"

  • -u:锁定用户无法登录

同passwd

userdel

userdel 用户名:删除用户

  • -r:和家目录一起删除
[root@localhost home]# userdel lisi -fr
[root@localhost home]# id lisi
id: lisi: no such user

权限管理

r:读(4)

文件:可以看到里面的内容

文件夹:可以用ls看文件夹中的文件列表

w:写(2)

文件:可以修改文件的内容

文件夹:新建文件(文件夹),删除文件(文件夹),移动文件(文件夹)

x:执行(1)

  • 文件:可以运行(命令,脚本)颜色是绿色
  • 文件夹:执行是最小的权限,没有执行读写无法使用
  • 对文件而言,如果大家都没有执行权限,超级管理员也没有执行权限,只要有一个人有执行权限,那么超级管理员也有
  • 删除一个文件和文件夹

修改文件的属性

  • chmod 可以修改文件权限

    选项:-R:递归修改

非数字法

  • 用法:chmod 【选项】 指明属主or属主or其他人【权限】【文件】

chmod u+r abc:给属主加上读的权限

chmod u=r abc:给属主去赋予的权限

chmod u-r abc:给属主去掉读的权限

chmod a+r abc:给所有人加上读的权限

  • 属主:u
  • 属组:g
  • 其他人:o
  • 所有:a
  • +:加上
  • -:减去
  • =:赋予

数字表示法

  • 表示方式:rwx rwx rwx=777

    • 数字法表示,文件的权限
  • 用法:chmod 777 test

r w x

1 0 0 ——————4

0 1 0 ——————2

0 0 1 ——————1

1 1 1 ——————7

二进制转换成十进制

  • 满权限

7 7 7

属主 属组 其他人

cp的最小权限

cp /etc/issue /data/mnt

cp:x

/etc:x

issue:r

/data:x

/mnt:wx

chown 改变文件的属主,属组

chown 属主 文件名:只改变文件的属主

chown :属组 文件名:只改变文件的属组

umask

在linux中规定了新建文件夹和新建文件的权限

默认umask为022 ,是你没有的权限

拿最高权限减去umask就是你的最终权限

文件夹的最高权限为777

777-002=755,所以文件夹的最高权限为rwx r-x r-x

文件的最高权限为666,执行权限对于文件而言非常危险

666-002=644 rw- r-- r--

直接使用umask可以看到当前的umask设置

umask后面跟上数值可以设置umask的值

umask 123

文件夹一样

文件权限,用666-umask结果有奇数自动加1,偶数不变

666-123=543奇数加1=644

三种特殊权限

suid:默认当前用户为属主

guid:默认当前用户为属组

stikey:粘贴位,只对文件夹有效。拥有该权限的文件夹,该文件夹内的文件只有超级管理员和属主可以删除,其他人不可以删除。