Linux---账号和权限管理(user、group、chmod、chown)

一、管理用户账号和组账号

1.1 用户账号和组账号概述

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

1、用户账号

  • 超级用户:root 用户是 Linux 操作系统中默认的超级用户账号,对本主机拥有至高无上的权限,类似于 Windows 操作系统中的 Administrator 用户。只有当进行系统管理、维护任务时,才建议使用 root 用户登录系统,日常事务处理建议只使用普通用户账号。

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

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

2、组账号
私有组(基本组):随着用户的建立而建立,与用户同名
共有组(附加组):直接创建空组,可以自由添加已有用户。给组设置权限后,该组中的所有用户都具备此权限。

3、UID号和GID号
UID(User IDentity,用户标识号)

  • root 用户账号的 UID 号为固定值 0,而程序用户账号的 UID 号默认为 1~499,500~60000 的 UID 号默认分配给普通用户使用。

GID(Group IDentify,组标识号)

  • root 组账号的 GID 号为固定值 0,而程序组账号的 GID 号默认为 1~499,500~ 60000 的 GID 号默认分配给普通组使用。

1.2 用户账号文件

1.2.1 用户账号文件/etc/passwd

  • 保存用户名名称、宿主目录、登录Shell等基本信息
    • 文件位置:/etc/passdwd
    • 每一行对应一个用户的账号记录
例如:查看passwd文件头两行内容(每一行对应一个用户的账号记录)
[root@localhost ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
  • passwd 文件的每一行内容中包含了七个用“:”(冒号)分隔的配置字段,从左到右各配置字段的含义分别如下所述。
    • 第 1 字段:用户账号的名称,也是登录系统时使用的识别名称。
    • 第 2 字段:经过加密的用户密码字串,或者密码占位符“x”。
    • 第 3 字段:用户账号的 UID 号。
    • 第 4 字段:所属基本组账号的 GID 号。
    • 第 5 字段:用户全名,可填写与用户相关的说明信息。
    • 第 6 字段:宿主目录,即该用户登录后所在的默认工作目录。
    • 第 7 字段:登录 Shell 等信息,用户完成登录后使用的 Shell。一般是/bin/bash
      在这里插入图片描述

1.2.2 用户账号文件/etc/shadow

  • 保存用户的密码、账号有效期等信息
    • 文件位置:/etc/shadow
    • 每一行对应一个账户的加密信息
查看头两行shadow文件内容
[root@localhost opt]# cat /etc/shadow
root:666avzTM/XgLwTNebk6$vhnv.oCvWagc8lC9I7SRM.T1uAIWswUz1xxzU6Ib7UOrQoBLgvW2P/LaCCQkAraNtKqecrz5.EQXYxDKEkTnK.::0:99999:7:::
  • shadow 文件的每一行内容中包含了九个用“:”(冒号)分隔的配置字段,从左到右各配置字段的含义分别如下所述。
    • 1 账户名
    • 2 mde5密码加密信息 ###*或!!则不等登录 如空则没密码也可以登录
      ###做项目的时候,所有设备上线都要弱口令扫描,如果结果说密码强度不高,则需要重新设置密码。
      如果过弱口令方案,你可以备份shadow文件,然后进shadow 删除没过的账号。
    • 3 上次修改密码时间 1970年1月1号到最近修改密码间隔的天数
    • 4 密码的最短有效天数,如0则不限制
    • 5 密码的最长有效天数,如99999则不进行限制
    • 6 提前多少天告警,用户口令将过期,默认是7
    • 7 密码过期后多少天内禁用此用户
    • 8 账号失效时间,1970年1月1日计算,默认是空则账号永久使用
    • 9 保留字段,目前没使用

二、用户账号和组帐号管理

2.1 用户账号管理

切换用户:su 用户,保持路径不变

su - 用户,切换到当前用户的家目录

grep “bash$” /etc/passwd 查看当前可用用户

用户被锁定后,可以从高权限用户切换到普通用户,但是不可以用普通用户登录

2.1.1 添加用户账号

  • useradd命令
    useradd [选项] 用户名

  • 常用选项有:
    -u 指定用户的UID号,要求UID号码未被其他用户使用
    -d 指定用户的宿主目录位置(当与 -M 一起使用时,不生效)
    -e 指定用户的账户失效时间,可以使用YYYY-MM-DD的日期格式
    -g 指示基本组
    -G 指示附加组
    -M 不建立宿主目录,即使/etc/login.defs系统配置中已设置要建立宿主目录
    -s 指定用户的登录shell

  • 例如:

创建一个名为lala的FTP账号(禁止终端登录),该账号将于2020.10.1失效。
[root@localhost ~]# useradd -e 2020-10-1 -s /sbin/nologin lalala
/sbin/nologin后用户无法直接登录和被切换登录

2.1.2 设置/更改用户口令passwd

  • passwd命令
    passwd [选项] 用户名

  • 常用选项
    -d 清空指定用户的密码,仅使用用户名即可登录系统
    -l 锁定用户账户
    -S (大S)查看用户账户是否被锁定
    -u 解锁用户账户
    不指定用户名时,修改当前账号的密码

  • 通过passwd命令锁定的用户账号,将无法再登录系统(shadow文件中的对应密码子串前将添加“!!”字符),只能由管理员来解除锁定。(还可以从root用户切换登录)

设置用户密码的两种方法

第一种:

[root@localhost ~]# useradd yang
[root@localhost ~]# passwd yang

第二种:

[root@localhost ~]# useradd yang
[root@localhost ~]# echo “123123” | passwd --stdin yang    ###--stdin为标准型输入

2.1.3 修改用户账号的属性usermod

  • usermod命令
    usermod [选项] 用户名

  • 常用选项
    -l 更改用户账号的登录名称(Login Name)
    -L 锁定用户账户
    -U 解锁用户账户
    -u 修改用户的UID号
    -d 修改用户的宿主目录位置
    -e 修改用户的账户失效时间,可以使用YYYY-MM-DD的日期格式
    -s 指定用户的登录shell

usrmod和password区别:

  • usrmod -L ###锁定 一个感叹号
    usrmod -U ###解锁 一个感叹号
  • password -l tom###锁定 两个感叹号
    password -u tom###解锁 两个感叹号

2.1.4 删除用户账号userdel

  • userdel命令
    userdel [-r] 用户名
  • 添加-r选项时,表示连用户的宿主目录一并删除

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

  • 文件来源

    • 新建用户账号时,从/etc/skel 目录中复制而来的
  • 主要的用户初始配置文件
    ~/.bash_profile ###文件中命令将在该用户每次登录被执行
    ~/.bashrc ###文件中的命令在每次加载/bin/bash程序(包括登录)执行
    ~/.bash_logout ###文件中的命令将在每次退出登录时执行

    • .bashrc和.bash_profile都是开机启动,.bashrc 要比.bash_profile 更加精细
    • .bash_logout 可以理解,干坏事后擦屁股,擦脚印。

上三个都是针对用户的,用户一旦切换,就不会生效

  • ~/etc/profile ###针对系统的,不管切换到哪个用户都会生效

2.2 组帐号管理

2.2.1 groupadd命令 --添加组账号

  • 需要指定GID号时,可以使用’-g’选项。
    groupadd [-g GID] 组账号名
    示例:
添加组账号market
[root@localhost ~]# groupadd -g 1000 market
[root@localhost ~]# tail -1 /etc/group   ###查看刚建的组账号

2.2.2 gpasswd命令–添加删除组成员

  • 设置组账号密码(极少用),添加/删除组成员
    gpasswd [选项] 组账号名

  • 常用选项
    -a 向组内添加一个用户
    -d 从组中删除一个用户成员
    -M 定义组成员列表,以逗号分隔

  • 例如:

向组内添加一个用户
[root@localhost ~]# gpasswd -a 12
例如:从组内删除一个用户
[root@localhost ~]# gpasswd -d 12
例如:添加多个用户
[root@localhost ~]# gpasswd -M a,b,c,d

2.2.3 groupdel命令–删除组账号

groupdel 组账号名
例如

[root@33 ~]# groupdel  market

2.2.4 查询账号信息

  • groups命令:查询用户所属的组
    groups [用户名]

  • id命令:查询用户的身份标识
    id [用户名]

  • finger命令:查询用户账号的详细信息(包括登录名称,完整名称,宿主目录,登录shell等。)
    finger [用户名]

  • w、who、users命令:查询已登录到主机的用户信息

  • last:查看最近哪些人登录

  • lastb:记载错误登录

三、管理目录和文件的属性

3.1 文件/目录的权限和归属

  • 访问权限
    4–读取r:允许查看文件内容、显示目录列表
    2–写入w:允许修改文件内容、允许在目录中新建、移动、删除文件或子目录
    1–可执行x:允许运行此程序、切换目录

  • 归属(所有权)
    属主:拥有该文件或目录的用户账号
    属组:拥有该文件或目录的组账号

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

在这里插入图片描述

  • 理解权限字段-rw-r–r–的含义
    • 第 1 个字符:表示该文件的类型,可以是 d(目录)、b(块设备文件)、c(字符设备文件)、“-”(普通文件)、字母“l”(链接文件)等。
    • 第 2~4 个字符:表示该文件的属主用户(User)对该文件的访问权限。
    • 第 5~7 个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限。
    • 第 8~10 个字符:表示其他任何用户(Other)对该文件的访问权限。
    • 第 11 个字符:这里的“.”与 SELinux 有关,目前不必关注。
  • 其他字段含义
    • 1 子文件数量
    • root 属主
    • root 属组
    • 34298 大小,单位:字节
    • 04-02 00:23 创建时间

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

  • chmod命令
    chmod [ugoa] [+ - =] [rwx] 文件或目录
    chmod nnn 文件或目录 ###常用
    (u,g,o,a分别表示属主,属组,其他用户,所有用户)
    (+ - =分别表示增加,去除,设置权限)
    (r、w、x分别表示读、写、运行权限)

  • 常用选项
    -R: 递归修改指定目录下所有子项的权限

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

  • chown命令
    chown 属主 文件或目录
    chown:属组 文件或目录
    chown 属主:属组 文件或目录### :也可以用 . 代替

  • 常用选项
    -R: 递归修改指定目录下所有文件,子目录的归属
    在这里插入图片描述

3.5 权限掩码umask

  • umask作用
    • 控制新建的文件或目录的权限
    • 默认权限去除umask的权限就为新建的文件或者目录的权限
  • **umask设置:umask 022
    umask的分数指的是“该默认值需要减掉的权限,”因此,如果执行“umask 022”,代表group和other被拿掉了权限“2”,也就是被拿掉了写的权限。
    如果执行命令“umask 000”,代表文件的默认权限是“777”
  • **umask查看:umask
  • -R 递归修改指定目录下所有文件,子目录的归属

猜你喜欢

转载自blog.csdn.net/ycycyyc_/article/details/107032237