Linux 基础知识

发布时间: 更新时间: 总字数:1165 阅读时间:3m 作者: IP上海 分享 网址

Linux 基础知识汇总,介绍 Linux 的基础知识

Linux 基础知识

  • 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:
    • 标准输入文件(stdin):stdin 的文件描述符为 0,Unix 程序默认从 stdin 读取数据
    • 标准输出文件(stdout):stdout 的文件描述符为 1,Unix 程序默认向 stdout 输出数据
    • 标准错误文件(stderr):stderr 的文件描述符为 2,Unix 程序会向 stderr 流中写入错误信息
  • Linux 设备分为三类:
    • 字符设备,如键盘、鼠标等
    • 块设备,如硬盘、光驱、软驱等
    • 网络设备,如以太网卡

查看架构

apt install coreutils

# Linux
$ arch
x86_64
$ getconf LONG_BIT
64

# Mac
$ arch
i386
$ getconf LONG_BIT
64

文件权限

使用 ls -lh 可以查看文件权限

# 文件权限
-rwxr-xr-x

# 位
9876543210

说明:

  • 第 9 位表示文件类型,可选值:
    • p 命名管道文件
    • d 目录文件
    • l 符号连接文件
    • - 普通文件
    • s socket 文件
    • c 字符设备文件
    • b 块设备文件
  • 第 8-6 位:文件所有者的权限
  • 第 5-3 位:同组用户的权限
  • 第 2-0 位:其他用户的权限
  • 上述三组的形式为 rwx
    • r 可读
    • w 可写
    • x 可执行

SUID & SGID & SBID

控制文件访问的权限标志(flag)

  • SUID(set uid ID upon execution) 允许用户以可执行文件的 owner 的权限运行可执行文件
    • chmod u+s /path/to/binchmod u-s /path/to/bin
    • SUID 仅对 二进制程序(binary program) 有效,且执行者需要有执行 x 权限
      • 对脚本无效
      • 对目录无效
    • 权限仅在上述程序的执行过程(runtime)时有效
    • 执行者临时拥有该程序 所有者(owner) 的权限
  • SGID(set group ID upon execution) 允许用户以可执行文件的 owner group 的权限运行可执行文件
    • chmod g+s /path/to/binchmod g-s /path/to/bin
    • SGID 对二进制程序有效,且执行组需要有执行 x 权限
    • SGID 主要用在目录上
    • 假设用户在某个目录下具有 w 权限,若使用者在此目录下建立新文件,则新文件的群组与此目录的群组相同
  • SBID(the restricted deletion flag or sticky bit) 仅对目录有效,用来阻止非文件的所有者删除文件,如 drwxrwxrwt ... /tmp

SUIDSGID 文件文件示例:

  • -rwsr-xr-x 表示 SUID 和所有者权限中可执行位被设置
  • -rwSr--r-- 表示 SUID 被设置,但所有者权限中可执行位没有被设置
  • -rwxr-sr-x 表示 SGID 和同组用户权限中可执行位被设置
  • -rw-r-Sr-- 表示 SGID 被设置,但同组用户权限中可执行位没有被设置

设置方法:

# 设置 SUID 位
chmod u+s <filename>

# 去掉 SUID 位
chmod u-s <filename>

# 设置 SGID 位
chmod g+s <filename>

# 去掉 SGID 位
chmod g-s <filename>

# 设置 SBID 位
chmod o+t <dirname>

# 去掉 SBID 位
chmod o-t <dirname>
  • SUID 示例:普通用户使用 passwd 可以临时拥有 root 权限修改 /etc/shadow 文件
$ ls -lhart /usr/bin/passwd
-rwsr-xr-x 1 root root 28K Aug  9  2019 /usr/bin/passwd

# 默认 root 拥有所有文件的权限
$ ls -lhart /etc/shadow
---------- 1 root root 660 Mar 26  2023 /etc/shadow
  • SGID 示例:获得该程序所属用户组的权限
    • mlocate 程序通过查询数据库文件 /var/lib/mlocate/mlocate.db 实现快速的文件查找
    • 普通用户执行 mlocate 命令时,会临时获得用户组 mlocate 的执行权限,因为用户组 mlocatemlocate.db 具有读权限,所以普通用户可以读取 mlocate.db
# SGID 文件
$ ls -lhart /usr/bin/mlocate
-rwxr-sr-x 1 root mlocate 47K Jul 16  2019 /usr/bin/mlocate

$ ls -lhart /var/lib/mlocate/
total 216K
drwxr-xr-x 1 root root    4.0K Nov 22 14:54 ..
-rw-r----- 1 root mlocate 201K Nov 22 14:54 mlocate.db
drwxr-xr-x 2 root root    4.0K Nov 22 14:54 .

其他类似工具

  • setpriv 使用不同的 Linux 权限设置运行程序

其他

  • agetty 是一个用于处理终端登录的程序,处理终端设备上的输入和输出,并为用户登录会话提供基本的交互功能
    • agetty 用于打开一个 tty 端口,提示登录名并调用 /bin/login 命令。agetty 一般由 init 调用
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数