提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


一、用户管理

1.1 用户账户和组账户概述

1.1.1 用户的分类

  • 角色类型 UID范围 描述
  • 超级用户 0 root用户,拥有系统最高权限
  • 普通用户 CentOS6: 500+
  • CentOS7: 1000+ 一般系统使用者,权限受限
  • 程序用户 CentOS6: 1-499
    CentOS7: 1-999 用于维持服务运行,通常不用于登录
  1. 超级用户
  • UID范围:固定为 0 0 0
  • 描述:这是系统的root用户,拥有最高权限。它可以执行任何操作,包括修改系统文件、安装软件和管理其他用户。但由于权限过高,日常使用时应避免以root身份登录,以防止意外错误或安全风险。
  1. 普通用户

    • UID范围
      • 在CentOS 6系统中:UID ≥ 500 \geq 500 500
      • 在CentOS 7系统中:UID ≥ 1000 \geq 1000 1000
    • 描述:这类用户是普通系统使用者,权限受限。他们只能访问自己的文件目录和授权的资源,无法修改系统核心设置。这有助于隔离用户活动,提高系统安全性。例如,普通用户无法删除其他用户的文件或更改系统配置。
  2. 程序用户

    • UID范围
      • 在CentOS 6系统中: 1 ≤ UID ≤ 499 1 \leq \text{UID} \leq 499 1UID499
      • 在CentOS 7系统中: 1 ≤ UID ≤ 999 1 \leq \text{UID} \leq 999 1UID999
    • 描述:这类用户专用于运行后台服务或应用程序(如Web服务器或数据库服务),通常不用于登录系统。它们的权限被严格控制,以最小化安全风险。程序用户账户通常没有登录shell或家目录,仅用于维持服务稳定运行。

关键差异总结

  • CentOS版本差异:CentOS 7调整了普通用户的UID起始点(从500提高到1000),并扩展了程序用户的UID范围(从1-499扩展到1-999)。这反映了系统设计上的优化,以支持更多服务账户。
  • 安全含义:UID范围的设计遵循最小权限原则:
    • 超级用户(UID 0 0 0)应谨慎使用。
    • 普通用户(UID ≥ 500 \geq 500 500 ≥ 1000 \geq 1000 1000)用于日常任务。
    • 程序用户(UID 1 ≤ UID ≤ 499 1 \leq \text{UID} \leq 499 1UID499 1 ≤ UID ≤ 999 1 \leq \text{UID} \leq 999 1UID999)隔离服务进程,减少攻击面。
  • 实际应用:在管理用户时,您可以使用命令如 useradd 或查看 /etc/passwd 文件来验证UID分配。例如,创建新用户时系统会自动分配符合上述范围的UID。

1.1.2 组账号的分类

  • 基本组是用户默认所属的组,通常与用户名相同。每个用户在创建时会自动拥有一个与用户名相同
    的基本组。
  • 在创建用户时,系统会为用户自动创建与其同名的基本组。
    案例:
  1. 创建用户并查看基本组:
useradd john 
id john

用户 john 的基本组就是 john。

附加组

  • 附加组是用户除基本组之外可加入的其他组别。每个用户可同时加入多个附加组,从而获得对应组别的资源访问权限。
  • 附加组的权限设置将统一应用于所有组内成员。

案例:

  1. 将用户加入附加组:
usermod -aG ftpusers john

这将用户 john 加入到 ftpusers 附加组。

简单总结:
用户和组的关系
用户 是员工 组 是职位
员工 可以兼职多个岗位
总有一个最重要的身份 主要组合附加组
主要组 必须要一个组 有且唯一
附加组 可有可无 有可以有多个
默认行为当你创建一个新用户时会自动创建一个和之同名的主组

1.1.3 UID和GID

  • UID:即每个用户的身份标示,类似于每个人的身份证号码.
    系统用户 UID:1-999(centos7 版本) 1-499(centos6 版本)
  • GID 是每个用户组的唯一标识符。每个用户都属于至少一个组,该组的 GID 用来标识该组。用户
    组用于管理一组具有相同权限的用户,文件和目录的访问权限通常由文件的 GID 来决定。
    系统组:1-499(CentOS6), 1-999(CENTOS7)
    普通组:500+(CentOS6), 1000+(CENTOS7)

1.2 用户账号文件

/etc/passwd 文件在 Linux 系统中保存了所有用户的基本信息,而用户的密码信息和一些安全设置
则保存在 /etc/shadow 文件中。密码的加密存储在 /etc/shadow 文件中, /etc/passwd 文件只存储
占位符(如 x 或 !! ),以确保密码的安全。

1.2.1 /etc/passwd 文件格式

/etc/passwd 文件记录每个用户的基本信息,每行一个用户,字段之间用冒号(:)分隔,格式如下

用户名:密码占位符:UID:GID:用户描述:宿主目录:登录Shell

示例解析

ftp:x:113:125:ftp daemon,,,:/srv/ftp:/usr/sbin/nologin
字段说明
用户名ftp系统 FTP 服务账户
密码指示符x密码在 shadow 文件
UID113系统级用户 ID
GID125所属组 ID
GECOSftp daemon,,,描述信息(全名留空)
家目录/srv/ftpFTP 服务根目录
登录Shell/usr/sbin/nologin禁止交互式登录

解释:

  • x :密码占位符,表示密码信息保存在 /etc/shadow 中。
  • 0 :UID,root 用户的 UID 是 0。 0 :GID,root 用户的基本组的 GID 也是 0。 root :用户描述,通常是该用户的全名。
  • /root :宿主目录,root 用户的默认工作目录。
  • /bin/bash :登录 Shell,root 用户登录后使用的默认 Shell。
    在这里插入图片描述示例:
root:x:0:0:root:/root:/bin/bash

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

总结
密码字段: /etc/passwd 中的密码字段只包含占位符 x ,真实密码存储在 /etc/shadow 文件
中。
加密密码:使用 SHA-512 等算法加密密码,提升安全性。

1.3 添加用户账号useradd

添加用户账号

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

案例:

useradd zhangsan 
id zhangsan 
tail -1 /etc/passwd
 ls /home

在这里插入图片描述

1.4 更改用户口令passwd

#调用管道符,给 zhangsan 用户设置密码 “123”,为了方便系统管理,passwd 命令提供了 --stdin
选项,用于批量给用户设置初始密码。

passwd username # 设置密码
passwd -l username # 锁定账户
passwd -S username # 查看账户状态
passwd -u username # 解锁账户
passwd -d username # 清空密码

1.5 修改用户账号的属性usermod

#调用管道符,给 zhangsan 用户设置密码 “123”,为了方便系统管理,passwd 命令提供了 --stdin
选项,用于批量给用户设置初始密码。

passwd 用户 
echo "123" | passwd --stdin zhsngsan

在这里插入图片描述

  • -d:清空指定用户的密码,仅使用用户名即可登录系统。
  • -l:锁定用户账户。
  • -S:查看用户账户的状态(是否被锁定)。
  • -u:解锁用户账户。
passwd username                  # 设置密码
passwd -l username               # 锁定账户
passwd -S username               # 查看账户状态
passwd -u username               # 解锁账户
passwd -d username               # 清空密码

1.6 删除用户账号userdel

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

userdel -r admin
id admin
ls -ld /home/admin

在这里插入图片描述

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

1.6.1 账号初始配置的作用

① 来源目录:
当使用 useradd 创建新用户时,系统会从 /etc/skel/ 复制默认配置文件到新用户的家目录。
② 常见文件:

  • .bash_profile :登录时执行的命令。
  • .bashrc :每次加载 bash 时执行(包括登录)。
  • .bash_logout :用户退出登录时执行

③ 所有用户都可以使用
如果希望为所有用户添加登录后自动运行的命令程 序、自动设置变量等,可以直接修改/etc 目录下的类
似文件,如/etc/bashrc 文件、/etc/profile 文件。例如,执行以下操作可以为所有用户自动设置 myls
命令别名

vi /etc/bashrc 
alias myls='/bin/ls -lhr' 
source /etc/bashrc

在这里插入图片描述

1.6.2 用户账号的初始配置文件(详解)

  • .bash_profile:示例代码中为用户添加了2个环境变量(JAVA_HOME和CLASSPATH),并修改了已有
    环境变量PATH的值.(PATH的查找是从前开始查找,找到就返回)
    CLASSPATH环境变量的值是在JAVA运行时查找加载类的默认classpath.
  • .bashrc :例子中定义了路径,语言,命令别名(使用rm删除命令时总是加上-i参数需要用户确
    认,使用ls命令列出文件列表时加上颜色显示)。
    每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的设置,使
    之生效。一般会在.bash_profile文件中显式调用.bashrc。登陆linux启动bash时首先会去读取
    /.bash_profile文件,这样/.bashrc也就得到执行了,你的个性化设置也就生效了。
    关于环境变量的读取顺序:
    登录的数据流向
  • 用户登录 ->> 加载~/.bash_profile --> bash_profile中配置了首先是使~/.bashrc生效
  • .bash_logout
    用途: 用户登出时执行的命令
    ~/ . bash_logout在当前用户登出时,打印出Logout 和当前的时间echo "Logout, date "
    例子

二、组管理

2.1 组账号文件

与组账号相关的配置文件有两个:/etc/group 和 /etc/gshadow。其中:

1./etc/group 存储组账号的基本信息,包括组名、GID 和组成员列表
2./etc/gshadow 保存组账号的加密密码等安全信息(实际使用频率较低)
组内成员信息会显示在 group 文件的最后一个字段中(基本组对应的用户默认可能不显示),多个成员之间用英文逗号,分隔。

grep "^root" /etc/group #//检索root 组包括哪些用户
grep "root" /etc/group //检索哪些组包括root 用户

在这里插入图片描述

2.2 添加组账号groupadd

groupadd [-g GID] 组账号名
groupadd -g 1200 market 
tail -1 /etc/group

在这里插入图片描述

2.3删除组账号groupdel

groupdel 组账号名
groupdel market
grep "market" /etc/group

三、查询账号信息

3.1 groups命令

查询用户所属的组

groups [用户名]
groups adm

3.2 id命令

查询用户身份标识

id [用户名]

3.3 finger命令
#查询用户账号的详细信息

 finger [用户名]

在这里插入图片描述

3.4 w、who、users

查询已登录到主机的用户信息可以通过以下命令实现:

系统命令主要信息
Linuxw用户+活动详情
Linuxwho基础登录信息
Windowsquery user会话状态与空闲时间

3.5 扩充

以下是关于TTY终端类型与切换的说明:

终端类型说明切换快捷键
tty1图形界面Ctrl+Alt+F1
tty2-tty6文字界面(命令行模式)Ctrl+Alt+F2-F6

补充说明:

  1. 图形界面 (tty1):
    通常为默认登录的桌面环境,支持图形化操作界面。

  2. 文字界面 (tty2-tty6):
    提供纯命令行操作环境,适用于系统调试、服务管理或图形界面崩溃时的应急操作。

四、su命令切换用户

4.1 用途及用法

  • 用途:Substitute User,切换用户
  • 格式 :su - 目标用户

4.2 密码验证

root-----> 任意用户,不验证密码

  • 普通用户-----> 其他用户,验证目标用户的密码

五、文件权限

5.1 查看目录和文件的属性

5.1.1 访问权限

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

5.1.2 归属(所有权)

属主:拥有该文件或目录的用户帐号

  • 属组:拥有该文件或目录的组帐号

5.1.3 查看权限

使用 ls -l 命令可以查看文件或目录的详细权限和归属信息。例如:

命令格式:

ls -l [文件或目录名]

输出示例:

-rw-r--r-- 1 user group 1024 Jan 1 10:00 example.txt
drwxr-xr-x 2 user group 4096 Jan 1 10:00 directory

各部分含义详解:

  1. 权限字段 (10个字符):

    • 第1个字符:文件类型标识符
      • - : 普通文件
      • d : 目录
      • l : 符号链接 (软链接)
      • c : 字符设备文件
      • b : 块设备文件
      • p : 命名管道 (FIFO)
      • s : 套接字 (socket)
    • 第2-4个字符:文件所有者 (属主) 的权限
      • r : 读权限
      • w : 写权限
      • x : 执行权限
      • - : 无对应权限
    • 第5-7个字符:文件所属用户组 (属组) 的权限
      • 同上 r, w, x, -
    • 第8-10个字符:其他用户 (既不是属主也不在属组) 的权限
      • 同上 r, w, x, -

    示例解读:

    • -rw-r--r--
      • -:普通文件
      • rw-:属主可读、可写、不可执行
      • r--:属组可读、不可写、不可执行
      • r--:其他用户可读、不可写、不可执行
    • drwxr-xr-x
      • d:目录
      • rwx:属主可读、可写、可执行 (对于目录,x 代表可进入目录)
      • r-x:属组可读、不可写、可执行 (可进入目录)
      • r-x:其他用户可读、不可写、可执行 (可进入目录)
  2. 硬链接数:

    • 对于文件:表示指向该文件数据块的硬链接数量。
    • 对于目录:表示该目录下包含的子目录总数 (包括 ...)。
  3. 文件所有者 (属主):

    • 显示拥有该文件或目录的用户账户名。
  4. 文件所属用户组 (属组):

    • 显示拥有该文件或目录的组账户名。
  5. 文件大小:

    • 以字节为单位显示文件大小。
    • 对于目录:显示的是目录本身所占的元数据大小 (通常是 4096 字节或 4K 的倍数),而不是目录内容的总大小。要查看目录内容总大小,需使用 du 命令。
  6. 最后修改时间:

    • 显示文件或目录内容最后一次被修改的日期和时间。
  7. 文件或目录名:

    • 文件或目录的名称。
    • 如果是符号链接 (l),会显示链接指向的目标路径,格式如 link_name -> target_path

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

好的,我们来详细说明 chmod 命令的用法,它用于更改 Linux/Unix 系统中文件和目录的访问权限。

核心概念:
文件或目录的权限分为三类:

  1. 拥有者 (u): 文件或目录的创建者。
  2. 所属组 (g): 文件或目录所属的用户组。
  3. 其他用户 (o): 系统上的其他所有用户。
  4. 所有用户 (a): 包括以上三者。

权限类型有三种:

  • 读取 (r): 查看文件内容或列出目录内容。
  • 写入 (w): 修改文件内容或在目录中创建/删除文件。
  • 执行 (x): 运行文件(如脚本)或进入目录。

chmod 语法格式:
chmod 主要有两种方式来设置权限:符号表示法八进制(数字)表示法

  1. 符号表示法 (更直观)
    格式:
chmod [用户类别][操作符][权限] 文件或目录名
  • 用户类别
    • u: 拥有者
    • g: 所属组
    • o: 其他用户
    • a: 所有用户 (默认值,如果省略类别)
  • 操作符
    • +: 添加权限
    • -: 移除权限
    • =: 精确设置权限 (覆盖原有权限)
  • 权限
    • r: 读
    • w: 写
    • x: 执行
    • 组合:如 rw, rx

示例:

  • 给拥有者添加执行权限:chmod u+x filename
  • 给所属组和其他用户添加读权限:chmod go+r filename (或 chmod g+r,o+r filename)
  • 移除其他用户的所有权限:chmod o= filename
  • 给所有用户设置读写权限(无执行):chmod a=rw filename
  • 给目录设置权限,使其拥有者可以读写执行,所属组可以读和执行,其他用户只能执行:
    chmod u=rwx,g=rx,o=x directoryname
    

2. 八进制(数字)表示法 (更简洁)

每个权限类型(r, w, x)对应一个数字:

  • r = 4
  • w = 2
  • x = 1
  • 无权限 = 0

权限值通过将所需权限的数字相加得到:

  • rw- = 4 + 2 + 0 = 6
  • r-x = 4 + 0 + 1 = 5
  • rwx = 4 + 2 + 1 = 7

格式:

chmod [拥有者权限值][所属组权限值][其他用户权限值] 文件或目录名

示例:

  • 设置权限 rw-r--r-- (拥有者读写,所属组读,其他用户读):chmod 644 filename
    • 拥有者:rw- = 4+2+0 = 6
    • 所属组:r-- = 4+0+0 = 4
    • 其他用户:r-- = 4+0+0 = 4
  • 设置权限 rwxr-xr-x (拥有者读写执行,所属组读执行,其他用户读执行):chmod 755 filename
    • 拥有者:rwx = 7
    • 所属组:r-x = 5
    • 其他用户:r-x = 5
  • 设置权限 rwx------ (仅拥有者有读写执行权限):chmod 700 filename
  • 设置权限 rwxrwxrwx (所有用户都有读写执行权限):chmod 777 filename (通常不推荐,过于开放)

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

chown命令

  • chown 属主 文件或目录
  • chown :属组 文件或目录
  • chown 属主:属组 文件或目录
    常用选项
  • -R:递归修改指定目录下所有文件、子目录的归属

总结

以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而Linux提供了大量能使我们快速便捷地处理数据的函数和方法。

更多推荐