关于linux:⭐Linux实战技能100讲个人笔记-12-基础及系统操作篇

1次阅读

共计 13830 个字符,预计需要花费 35 分钟才能阅读完成。

[TOC]

写在后面:

Virtualbox 装置加强工具须要先执行以下命令才行:

yum install -y gcc gcc-c++ kernel kernel-devel

若提醒无奈加载光驱, 则须要先 umount 曾经挂载的光盘.

版本

内核版本

https://www.kernel.org

主版本号、次版本号、末版本号

实践上次版本号是奇数为不稳定版, 偶数为稳定版

然而从内核 2.6 开始就曾经不依照次版本号来辨别是否是稳定版了, 倡议间接以官方网站上表明 “Stable” 的为准.

发行版本

RedHat Enterprise Linux(RHEL) – 商业免费, 是商业公司保护的发行版本的代表

  • Fedora – 收费(由 RedHat 桌面版倒退来的免费版, 绝对 RedHat Enterprise 不稳固), 稳定性较差.
  • CentOS – 社区版企业操作系统(RHEL 社区克隆版), 由 RedHat Enterprise 代码再编译(去除相干 logo, 版本信息), 其实就是 RedHat, 收费又稳固.

Debian – 社区收费, 是社区组织保护的发行版本的代表

  • Ubuntu – 基于 Debian 的 unstable 版本增强桌面零碎, 桌面零碎分为三套: Gnome、KDE(kubuntu)、Xfc(xubuntu). 适宜作为桌面零碎

Debian

  • 7.7 代号: Wheezy
  • 8 代号: Jessie
  • 9 代号: Stretch
  • 10 代号: Buster

Ubuntu

  • 14 代号: Trusty
  • 16 代号: Xenial
  • 17 代号: Artful

Alpine – 面向平安的轻型 Linux 发行版本。不同于其余的 Linux 发行版本,Alpine 采纳 musl libcbusybox 进行构建,减小零碎的体积和运行时资源耗费。

留神: 如果须要波及到编译,Alpine 镜像采纳的是 musl libc 而非 glibc,这点须要额定注意

发行版本
基于 Debian ▪ Debian▪ Ubuntu▪ Linux Mint▪ Knoppix▪ MEPIS▪ sidux▪ CrunchBang Linux▪ Chromium OS▪ Google Chrome OS
基于 Red Hat ▪ Red Hat Enterprise Linux▪ Fedora▪ CentOS▪ Scientific Linux▪ Oracle Linux
基于 Mandriva ▪ Mandriva Linux▪ PCLinuxOS▪ Unity Linux▪ Mageia
基于 Gentoo ▪ Gentoo Linux▪ Sabayon Linux▪ Calculate Linux▪ Funtoo Linux
基于 Slackware ▪ Slackware▪ Zenwalk▪ VectorLinux
其它 SUSE▪ Arch Linux▪ Puppy Linux▪ Damn Small Linux▪ MeeGo▪ Slitaz▪ Tizen▪ StartOS

终端

终端的类型

  • 字符终端(命令行终端)
  • 图形终端
  • 近程终端(VNC, SSH)

运行级别

init 运行级别 target 含意
0 shutdown.target 关机
1 emergency.target 单用户(能够找回明码)
2 rescure.target 多用户(无网络)
3 multi-user.target 多用户(有网络)
4 保留,未调配
5 graphical.target 图形界面
6 零碎重启

关机(poweroff) init 0

切换到字符终端 init 3

图形终端 init 5

重启 init 6

应用 systemctl 查看和批改默认运行级别

systemctl [command] [unit.target]

示例
    systemctl get-default                        获取以后的运行级别(字符)
    systemctl set-default multi-user.target        设置以字符终端级别启动(即 init 3)

command:
    get-default : 获得以后的 target
    set-default : 设置指定的 target 为默认的运行级别
    isolate : 切换到指定的运行级别(无需重启)可选的 unit.target
    shutdown.target
    emergency.target
    rescure.target
    multi-user.target
    graphical.target

终端提醒

# root

$ 普通用户

常见目录

  • / 根目录
  • /root root 用户的 home 目录
  • /home/<username> 普通用户的 home 目录
  • /etc 配置文件目录

    /etc/services 文件蕴含服务及端口映射

  • /bin 命令目录
  • /sbin 治理命令目录
  • /usr/bin:/user/sbin 零碎预装的其余命令
  • /dev 设施目录

    /dev/null        # 空设施。任何写入都将被间接抛弃(但返回 "胜利");任何读取都将失去 EOF(文件完结标记)。/dev/zero        # 零流源。任何写入都将被间接抛弃(但返回 "胜利");任何读取都将失去有限多的二进制零流。/dev/random      # 真随机数发生器。以背景噪声数据或硬件随机数发生器作为熵池,读取时会返回小于熵池噪声总数的随机字节。# 若熵池空了,读操作将会被阻塞,直到收集到了足够的环境噪声为止。倡议用于须要生成高强度密钥的场合。# [留神]尽管容许写入,但希图通过写入此文件来 "预存" 随机数是徒劳的,因为写入的数据对输入并无影响。/dev/urandom     # 伪随机数发生器。更快,然而不够平安。仅用于对安全性要求不高的场合。# 即便熵池空了,读操作也不会被阻塞,而是把曾经产生的随机数做为种子来产生新的随机数。# [留神]尽管容许写入,但希图通过写入此文件来 "预存" 随机数是徒劳的,因为写入的数据对输入并无影响。/dev/pts*        # 伪终端 (在 init 5 级别下的终端也是伪终端).  每一个伪终端(PTY) 都有一个 master 端 (共享 /dev/ptmx) 和一个 slave 端(/dev/pts*)
    
    /dev/tty*        # 终端 (字符) 设施
    
    
    " 对于磁盘设施, 目前内核曾经将 SATA/PATA/IED 硬盘对立应用 /dev/sd* 来示意,曾经不再应用 /dev/hd* 这种过期的设施文件了。/dev/sr?        # SCSI CD-ROM device
    /dev/hd*        # IDE 接口的硬盘
    /dev/sd*        # SATA 接口的硬盘
    
  • /mnt 挂载目录
  • /proc 内存信息以文件模式的体现, 并非物理上的文件.

环境配置

语言

1. 确认零碎以后语言

locale
# 或
echo $LANG

2. 确认零碎以后是否反对中文, 若不反对则需先依照语言包

locale -a|grep zh_CN

3. 批改成中文

echo > /etc/locale.conf <<"EOF"
LANG="zh_CN.UTF-8"
EOF

CentOS 6 是批改这个文件: /etc/sysconfig/i18n

4. 设置应用中文的 man 帮忙

yum install -y man-pages-zh-CN.noarch

若以后不反对中文. 则须要执行命令 yum -y groupinstall "Chinese Support" 装置中文反对

若只是想执行某个命令长期用某个语言, 能够如下

# 查看中文的 man 帮忙
LANG=zh_CN.UTF-8 man iptables

# 查看英文的 man 帮忙
LANG=c man iptables

若呈现装置完中文反对后缺失 “zh_CN” 的状况(或应用一段时间后), 则可思考应用如下命令修复

localedef -v -c -f UTF-8 -i zh_CN zh_CN.UTF8

时区

  1. 确认以后时区
date
  1. 复制并替换以后时区配置文件
# 此处以 Asia/Shanghai 为例
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

也能够应用 tzselect 获取指标地区的时区字符, 再批改 TZ 环境变量来配置.

代理

# 通过设置环境变量
http_proxy=socks5://192.168.0.9:1084
https_proxy=socks5://192.168.0.9:1084
ftp_proxy=socks5://192.168.0.9:1084

命令

以下仅列出局部集体感觉值得记录的命令: 未用过的命令 或 参数简单.

帮忙命令

  • man(manual 的缩写)

    共 9 章

    # 查看指定命令的第 section 节的帮忙, section 取值: 1~9, 默认是 1
    man [<section=1>] <command>
    # 顺次查看各个 section(如果有的话) 的帮忙
    man -a <command> 
    
    section 参数:
    1: 用户指令(Commands)
        能够从 shell 运行的命令
    2: 零碎调用(System calls)
        必须由内核实现的性能
    3: 程序库调用(Library calls)
        大多数 libc 函数, 例如 qsort
    4: 设施(Special files) 
        /dev 目录中的文件
    5: 文件格式(File format and conventions) 
        /etc/passwd 等人类可读的文件的格局阐明
    6: 游戏(Games)
    7: 杂项(Macro packages and conventions) 
        文件系统规范形容, 网络协议, ASCII 和其余字符集, 以及其余货色
    8: 零碎指令(System management commands)
        相似 mount 等命令, 大部分只能由 root 执行.
    9: 内核外部指令
        已废除.
  • help

    shell(命令解释器)自带的命令称为 外部命令 , 其余的是 外部命令

    # 查看命令是属于哪种类型的命令
    type < 命令名 >
    
    # 查看外部命令的帮忙
    help < 外部命令 >
    
    # 查看外部命令的帮忙
    < 外部命令 > --help
  • info

    help 更具体, 作为 help 的补充, 根本都是英语.

shell

通配符

通配符是 shell 内建的符号, 罕用于操作多个类似的文件.

通配符 阐明
* 匹配任何字符
? 匹配 1 个字符
[xyz] 匹配 xyz 中任意一个
[a-z] 匹配范畴
[!xyz][^xyz] 不匹配

clear

清空屏幕, 实质是屏幕翻页, 可通过向上滚动查看到之前的命令.

clear

能够应用 Ctrl+l(小写的 L) 来清空屏幕.

echo

打印到规范输入

echo [选项] 打印内容

选项
    -n        # 不追加换行(默认会)
    -e        # 反对转义字符的解释
    -E        # 不反对转义字符的解释
    
转义字符 -e
      \a        alert (bell)
      \b        backspace
      \c        suppress further output
      \e        escape character
      \f        form feed
      \n        new line
      \r        carriage return
      \t        horizontal tab
      \v        vertical tab
      \\        backslash
      \0nnn     the character whose ASCII code is NNN (octal).  NNN can be
        0 to 3 octal digits
      \xHH      the eight-bit character whose value is HH (hexadecimal).  HH
        can be one or two hex digits

文件 / 目录相干

ls 命令

查看目录状况

ls [选项] < 文件名或门路 >...

选项

    显示范畴
    -a, --all        显示所有, 包含暗藏的    
    -A, --almost-all 近乎所有, 不显示 . 和 ..
    -R, --recursive    递归显示子目录
    -d                将目录名像文件一样显示, 而不是显示目录里的内容. 
                    特地实用于要间接查看某个目录的信息而不是目录内文件信息时.
    -i                显示文件的 i 节点编号
    
    显示格局
    -l, --format=long, --format=verbose
    -h, --human-readable    主动转换文件大小单位, 默认单位是字节.

    排序相干(默认按文件名排序)
    -r, --reverse    逆序显示
    -t, --sort=time    按最近批改工夫排序
    -S, --sort=size    按文件大小排序

输入解释

[root@localhost tmp]# ll -ih --time-style=long-iso /var/
总用量 12K
34889261 drwxr-xr-x.          2               root root       19 2020-02-15 18:24 account
33844659 drwxr-xr-x.          2               root root        6 2018-04-11 12:59 adm
50402559 drwxr-xr-x.         13               root root      159 2020-02-15 18:42 cache
50827832 drwxr-xr-x.          2               root root        6 2018-11-05 01:10 crash
  370319 drwxr-xr-x.          3               root root       34 2020-02-23 17:05 db
16862160 drwxr-xr-x.          3               root root       18 2020-02-15 18:24 empty
33844660 drwxr-xr-x.          2               root root        6 2018-04-11 12:59 games
50402560 drwxr-xr-x.          2               root root        6 2018-04-11 12:59 gopher
50409426 drwxr-xr-x.          3               root root       18 2020-02-15 18:17 kerberos
33574985 drwxr-xr-x.         61               root root     4.0K 2020-02-23 22:56 lib
50402561 drwxr-xr-x.          2               root root        6 2018-04-11 12:59 local
50331726 lrwxrwxrwx.          1               root root       11 2020-02-15 18:16 lock -> ../run/lock
16861864 drwxr-xr-x.         20               root root     4.0K 2020-02-23 23:11 log
50402562 lrwxrwxrwx.          1               root root       10 2020-02-15 18:16 mail -> spool/mail
  370321 drwxr-xr-x.          2               root root        6 2018-04-11 12:59 nis
16862162 drwxr-xr-x.          2               root root        6 2018-04-11 12:59 opt
33844662 drwxr-xr-x.          2               root root        6 2018-04-11 12:59 preserve
50331725 lrwxrwxrwx.          1               root root        6 2020-02-15 18:16 run -> ../run
50402563 drwxr-xr-x.         12               root root      140 2020-02-15 18:24 spool
17300610 drwxr-xr-x.          4               root root       28 2020-02-15 18:19 target
      69 drwxrwxrwt.         15               root root     4.0K 2020-02-23 23:12 tmp
33844663 drwxr-xr-x.          2               root root        6 2018-04-11 12:59 yp
   ↑         ↑                ↑                   ↑           ↑
i 节点编号     权限     与该 i 节点链接的文件名数量   归属主和归属组    大小

stat 命令

打印 inode 信息

stat <filename>

mkdir 命令

创立目录

mkdir [选项] < 目录名 >...

选项
    -p, --parents    递归创立目录. 疏忽已存在的目录时的报错信息.

cp 命令

复制文件 / 目录

cp [选项] <src> <dest>

选项
    提醒
    -f    笼罩目标文件而不提醒    
    -r    递归
    -v, --verbose    显示复制的文件名
    
    复制范畴
    -p, --preserve    保留源文件的元数据(所有者, 组, 权限, 工夫)
    -a, --arhchive    等同于 -dpR

mv 命令

挪动(改名) 文件

mv [选项] <src> <dest>

选项
    -f, --force              # 笼罩前永不提醒
    -i, --interactive         # 笼罩前提醒
    

留神:

  • mv 不能用于同名目录笼罩, 即 mv /patha/dirname /pathb/dirname, 此时会提醒目录已存在, 无奈挪动

    解决办法参见:

    • https://unix.stackexchange.co…

    简略来说就是:

    cd ${SOURCE}; 
    find . -type d -exec mkdir -p ${DEST}/\{} \; 
    find . -type f -exec mv \{} ${DEST}/\{} \; 
    find . -type d -empty -delete

文本查看

cat

head

tail

more

less

wc 命令

统计文件内容信息

wc [选项] [< 文件 >]

选项
    -c, --bytes, --chars    字节数
    -l, --lines                换行符数(即行数)
    -w, --words                单词数

file 命令

查看文件的类型

file <file>

tee 命令

从规范输出读入, 并同时写往规范输入和文件

tee [选项] <FILE>...

选项
    -a, --append        # 追加到 给出的 文件, 而不是 笼罩

readlink 命令

找出符号链接或标准文件名所指向的地位(绝对路径)

readlink [选项] <filename>

选项
    -f, --canonicalize        # 递归追随给出文件名的所有符号链接以标准化,除最初一个外所有组件必须存在。示例
    readlink -f /bin/awk            # 输入 /bin/gawk
    cd /bin && readlink -f ./awk    # 输入 /bin/gawk            

打包压缩和解压缩

tar 命令

打包: tar

压缩: gzip 和 bzip2

罕用扩展名: .tar.gz, .tar.bz2, .tgz, .tbz2

打包

tar [选项] <dest> <src>...

示例
    tar -czvf xx.tar.gz xx1 xx2 xx3...    打包并应用 gzip 压缩
    tar -tvf xx.tar 具体查看压缩包内的文件
    tar -xzvf xx.tar.gz 解压缩

必须选项
    -c, --create    创立新存档
    -x, --extract, --get    从存档中取出文件. 目前大多数状况下 tar 会自行检测包的压缩格局, 因而在不指定压缩选项时会主动解决好.
    -t, --list        查看存档中的文件目录
    
    --delete        从存档中删除
    -r, --append    附加到存档结尾
    
其余选项
    -f, --file < 文件 >    指定存档或设施
    
    压缩选项
    -a, --auto-compress                依据文件后缀来决定压缩程序    
    -z, --gzip, --gunzip, --ungzip    用 gzip 解决存档, 罕用扩展名: .tar.gz 或 .tgz
    -j, --bzip2                        用 bzip2 解决存档, 罕用扩展名: .tar.bz2 或 .tbz2
    -Z, --compress, --uncompress    用 compress 解决存档
    
    解压时选项
    -C, --directory=DIR        扭转解压目录至 DIR
    --no-same-owner            将解压后的文件属主和属组放弃与以后用户统一(普通用户默认应用该选项)
    --same-owner            将解压后的文件属主和属组放弃与压缩时的 uid、gid 统一(root 用户默认应用该选项)
    --strip-components N    去除 N 层目录构造(实用于压缩包中的目录构造后面很多空白层)
    
    

压缩算法比照:

bzip2 比 gzip 领有更高的压缩比例, 但耗费更长的工夫(多好几倍的工夫)

通常举荐用 gzip.

unzip 命令

查看, 提取 ZIP 压缩包

unzip [选项] < 压缩包.zip> [<file>...] [-d <dir>]

参数
    <file>...    只提取指定文件, 反对通配符 *

选项
    -l            查看压缩包内的文件列表(不解压)
    -v            查看压缩包内的具体文件列表, 包含压缩比率等(不解压)
    -j            疏忽压缩文件中的原有目录, 间接将其中的文件解压进去
    -d <dir>    解压到指定目录(若未制订则默认是在当前目录)

示例
    unzip test.zip a.txt b.txt        # 从 test.zip 中解压出 a.txt 和 b.txt 文件

文本编辑器 vim

VIM 有 4 种模型:

  • 失常模式 Normal-mode
  • 插入模式 Insert-mode
  • 命令模式 Command-mode
  • 可视模式 Visual-mode
graph TB
    normal(失常模式) --i,o,O,a,A--> insert(插入模式)
    insert --ESC--> normal
    normal --:,/--> command(命令模式)
    command --ESC--> normal
    command --:q--> 退出

VIM 集体举荐配置

set tabstop=4    " 制表符占用宽度为 4
set smartindent " 智能缩进

VIM 局部配置

"set nu" 显示行数
syntax on    " 启用语法高亮
set tabstop=4        " 设置 tab 制表符所占宽度为 4
set softtabstop=4    " 设置按 tab 时缩进的宽度为 4
set shiftwidth=4    " 设置主动缩进宽度为 4
set expandtab " 缩进时将 tab 制表符转换为空格
set autoindent    " 开启主动缩进
set smartindent " 智能缩进
set hlsearch     " 搜寻后果高亮
filetype on     " 开启文件类型检测
syntax on         "开启语法高亮"set relativenumber "显示绝对行号"set nonu     " 敞开显示行数
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set encoding=utf-8

/etc/vimrc

~/.vimrc

失常模式

# 模式切换
i        进入插入模式 光标定位在以后字符.
a        进入插入模式, 光标定位在下一个字符.

I        进入插入模式, 光标定位在本行的结尾
A        进入插入模式, 光标定位在本行的开端

o        进入插入模式, 光标在下一行结尾并产生一个空行.
O        进入插入模式, 光标在上一行结尾并产生一个空行.

:        进入命令模式
/        进入命令模式, 并查找

v        进入字符可视模式
V        行可视模式
Ctrl+v    块可视模式

# 历史操作
u        undo, 撤销操作
Ctrl+r    redo, 重做撤销


# 光标挪动(在方向键产生乱码时适宜应用)
h        ←
j        ↓
k        ↑
l        →
gg        挪动到第一行
G        挪动到最初一行
<num>G    挪动到第 num 行
^        挪动到行结尾
$        挪动到行开端
e        挪动到下一个单词开端


# 行操作
yy            复制本行(包含换行符)
y$            复制光标到本行开端间的内容(不包含换行符)
<num>yy        复制 num 行

dd            剪切本行
d$            剪切光标到行开端间的内容
<num>dd        剪切 num 行

p            在以后光标处黏贴(插入)


# 字符操作
x            删除单个字符
r            替换单个字符, 输出 r 后再输出替换后的字符即可.

大写的是指 Shift+ 字符

插入模式

ESC        返回失常模式

命令模式

ESC                        返回失常模式
:w    [</path/to/file>]    保留 | 另存为
:q                        退出
:q!                        退出(不保留)
:!<linux 命令 >               切换执行 linux 命令

# 查找
/< 待查找文本 >                    全文查找, n 定位下一个匹配, N 定位上一个匹配
/< 待查找文本 >\c                    疏忽大小写
/< 待查找文本 >\C                    大小写敏感
# 查找反对正则, 但要留神本义, 例如:
/\s                    匹配一个空格
/\s\+                匹配一个或多个空格
/\s\{2,}            匹配 2 个或以上空格


# 替换 - 命令格局
:[前缀]s/<src>/<dest>[/ 后缀]

# 替换 - 前缀总结
:< 行号 >s                        仅在第 < 行号 > 内替换
:< 开始行 >,< 完结行 >s             仅在指定行范畴内替换
:%s                             全文替换(默认每行只替换一此, 除非配合 /g)
:.,+<num>s                     以后行及上面的 num 行替换

# 替换 - 后缀总结(能够组合应用)
/g                            global, 替换所有匹配项
/c                            confirm, 一一确认替换
/i                            疏忽大小写


# vim 配置
## 行号
set nu                显示行号
set nonu            不显示行号(默认)
set relativenumber  显示绝对行号

set hlsearch        高亮显示查找匹配内容(默认)
set nohlsearch        不高亮显示查找匹配内容

## 大小写
set ignorecase        大小写不敏感
set smartcase        大小写敏感(默认)

## 空格与制表符
set expandtab        缩进时将 tab 制表符转换为空格
set autoindent        开启主动缩进
set smartindent     智能缩进
set tabstop=4        设置 tab 制表符所占宽度为 4
set softtabstop=4    设置按 tab 时缩进的宽度为 4
set shiftwidth=4    设置主动缩进宽度为 4

## 编码
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936    一一尝试文件编码
set encoding=utf-8    文件编码

filetype on         开启文件类型检测
syntax on             开启语法高亮

vim 的配置文件:

  • /etc/vimrc 针对所有人
  • ~/.vimrc 针对集体

可视模式

可视模式分三种

v        进入字符可视模式
V        行可视模式
Ctrl+v    块可视模式
ESC        返回失常模式

# 可视操作
## 以下的 '<,'> 是主动输出的
:'<,'>/            在选定的行查找
:'<,'>s            在选定的行替换, 其实若晓得行号也能够用 :<line1>,<line2>s 来等价解决.

# 块操作 - 需用 Ctrl+v 进入块模式, 并选定作用范畴后
d                将抉择的块删除
I(大写的 i)          将文本插入光标所在范畴列, 输出要插入的内容后再按 ESC+ESC 将插入的内容利用到块.

用户和用户组

用户分为:

  • root 用户
  • 普通用户(受限用户)

新建用户理论做的操作

  1. /etc/passwd 增加该用户信息, 每个用户都会调配一个新的独立的 uid
  2. /etc/shadow 增加该用户明码相干配置
  3. 若未指定用户所属的组, 则会在 /etc/group 创立和用户名同名的组(group), 并调配给该用户
  4. 创立用户的 home 目录及其配置文件, 位于 /home/< 用户名 >

重要配置文件

相干重要配置文件

  • /etc/passwd
  • /etc/passwd
  • /etc/group

/etc/passwd

用户配置信息.

如果要新建用户, 甚至只须要往这里增加新用户的信息就能够了(当然 home 目录须要本人手动创立)

root:x:0:0:root:/root:/bin/bash
...
ntp:x:38:38::/etc/ntp:/sbin/nologin
...
youjiaxing:x:1000:1000:youjiaxing:/home/youjiaxing:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash

上述每行字段 (用: 分隔)格局如下

字段 1            字段 2            字段 3           字段 4         字段 5   字段 6           字段 7
用户名        是否须要明码验证   用户 id(uid)   组 id(gid)    正文   home 目录  用户登录胜利的命令解释器
          x: 须要明码验证                                                    /bin/bash 目前通用的解释器
          空: 不须要明码                                                    /sbin/nologin 禁止登陆

/etc/shadow

root:.........:18307:0:99999:7:::
...
youjiaxing:..............::0:99999:7:::

上述每行字段 (用: 分隔)格局如下:

字段 1         字段 2    
用户名      加密后的明码    

/etc/group

组的配置信息

root:x:0:
...
youjiaxing:x:1000:youjiaxing

上述每行字段 (用: 分隔)格局如下:

字段 1         字段 2            字段 3            字段 4
组名      是否须要明码验证      组 id(gid)    其余组设置
        x: 须要

命令

id 命令

显示实在和无效的 UID 和 GID

id [选项] < 用户名 = 以后用户 >

useradd 命令

新建用户

useradd [选项] < 用户名 >

选项
    -g, --gid < 组名 >               # 设置用户初始的主组名(必须是已存在的组名)
    -d, --home-dir <HOME_DIR>    # 指定 home 目录, 默认是在 /home/< 用户名 >
    -s, --shell <SHELL>            # 指定用户的登录 shell 名。默认为留空,让零碎依据 /etc/default/useradd 中的 SHELL 变量抉择默认的登录 shell,默认为空字符串。# 例如不容许登录的用户, 能够这样: "-s /sbin/nologin"
    -c, --commentCOMMENT        # 任何字符串。通常是对于登录的简短形容,以后用于用户全名
    -r, --system                # 创立一个零碎账户(不会主动创立 home 目录)

userdel 命令

删除用户

userdel [选项] < 用户名 >

选项
    -r, --remove    同时移除对应 home 目录(默认不会移除)

passwd 命令

批改用户明码

passwd [选项] < 用户名 = 以后用户 >

选项
    --stdin        # 指定从规范输出获取新密码
    
    
示例
    echo 123456 | passwd user1        # 将用户 user1 明码设置为 123456

usermod 命令

批改用户属性

usermod [选项] < 用户名 >

选项
    -d, --home <NEW_HOME_DIR>    批改用户的 home 目录
    -m, --move-home                需和 -d 配合应用, 示意将旧的 home 目录挪动到新的 home 目录.    
    
    -g, --gid < 组名 >              设置用户初始的主组名(必须是已存在的组名)

    -a, --append                将用户增加到附加组。只能和 -G 选项一起应用                            
    -G, --groups <group1>[,<group2>...]        设置用户的附加组(默认行为是替换), 若同时应用 -a 则是追加

chage 命令

更改用户过期明码信息

chage [选项] < 用户名 >

groupadd 命令

新建用户组

groupadd [选项] < 组名 >

选项
    -r, --system          # 创立一个零碎组

groupdel 命令

删除用户组

groupdel [选项] < 组名 >

su 命令

切换用户

su [-] < 用户 >

示例
    su - < 用户 >        # 应用 login shell, 同时会切换到
    su < 用户 >            # 应用 non-login shell

留神
    应用 exit 能够退出以后用户.
    root 用户切换到其余用户是不须要输出明码.

选项
    -        切换用户的同时切换环境(指的是工作门路, 切换到用户的 home 目录)

sudo 命令

以其余用户身份 (默认是管理员) 执行一条命令

sudo [选项]

选项
    -u, --user=<user>        以指定的用户或 id 执行命令
    -H                         将 HOME 环境变量设为新身份的 HOME 环境变量

visudo 命令

# 设置须要应用 sudo 的用户(组)

visudo

# 示例: 容许 user3 用户在任意终端上执行勾销关机命令
user3 ALL=/usr/sbin/shutdown -c

# 示例: 容许 user4 用户在任意终端执行任意命令
user4 All=(ALL) ALL

# 示例: 容许 user5 用户在任意终端执行任意命令(无需输出明码)
user5 All=(ALL) NOPASSWD: ALL

相干配置项阐明:

  • localhost: 指的是字符终端, 并非 ssh 和图形终端.
  • ALL: 所有终端

who 命令

查看以后主机上有哪些登录的用户, 对应终端, 及起源.

who

whoami 命令

查看以后用户

whoami

文件与目录权限

!!! root 用户不受任何权限限度, 权限管制是针对普通用户.

owner 和 group 优先级

  • 如果用户是该文件属主且同组, 则权限断定时只会看 owner 局部, 疏忽 group 局部.

    如果 owner 权限回绝, 但 group 权限容许, 一样是回绝.

权限示意

-rw-------             1             username groupname   mtime  filename
类型和权限    指向该 i 节点的文件名数量   用户      组名     批改工夫   文件名


类型和权限:
     -    rw-    ---    ---
    类型           权限
          owner group other
          
有时候权限的前面会多出一个 "+" , 它示意有额定的 facl 权限

文件类型

-    一般文件
d    目录
b    块非凡文件(也叫做 "块设施", eg. 插入的移动硬盘, 光驱)
c    字符非凡文件(也叫做 "字符设施", eg. 终端. 在 /dev 目录中很多)
l    符号链接(软链接)
f    命名管道(通信性能)
s    套接字文件(通信性能)

不问文件类型的权限的意义不一样! 这点须要留神

块设施无奈间接用相似 cat 之类的命令间接操作, 须要先挂载

权限示意

# 一般文件权限示意
r    4    读
w    2    写
x    1    执行


# 目录权限示意
r        可查看目录内的文件名
x        进入目录(目录的拜访权)
rx        可进入目录并查看目录文件名
wx        批改目录内的文件名(包含删除文件)

创立新文件有默认权限, 依据 umask 值计算, 属主和属组依据以后过程的用户来设定.

非凡权限

SUID

念作 SET UID

用于 二进制可执行文件 , 执行命令时获得文件属主(owner) 权限

设置 SUID

# 符号形式
chmod u+s <file>

# 数字形式, 假如文件原先权限是 755, 当初须要在此基础上设置 SUID
chmod 4755 <file>

# user 带执行权限
--s

# user 不带执行权限(大写的 s)
--S

示例

如 /usr/bin/passwd(留神权限中 user 的 x 地位): s
-rwsr-xr-x root root /usr/bin/passwd


用户批改明码时须要批改文件 /etc/passwd, 而该文件状态是:
-rw-r--r-- root root /etc/pass
其余用户无权写, 因而须要 SUID

SGID

念作 SET GID

用于 目录, 在该目录下创立新的文件或目录, 权限主动更改为该目录的属组(group).

罕用于文件共享.

在权限中 group 的 x 地位: s

设置 SGID

# 符号形式
chmod g+s <dir>

# 数字形式, 假如目录原先权限是 755, 当初须要在此基础上设置 SGID
chmod 2755 <dir>

# group 带执行权限
--s

# group 不带执行权限(大写的 s)
--S

SBIT

个别称作 Stick 位

用于 目录, 该目录下新建的文件和目录, 仅 root 和本人能够删除

罕用于在一个公共目录中, 为了避免本人的文件 (在其他人可写的状况下) 被其他人删掉.

设置 SBIT

# 符号形式
chmod o+t <dir>

# 数字形式, 假如目录原先权限是 755, 当初须要在此基础上设置 SBIT
chmod 1755 <dir>

# other 带执行权限
--t

# other 不带执行权限(大写的 t)
--T

示例

如 /tmp/ 目录(留神权限中 other 的 x 地位): t

drwxrwxrwt root root /tmp

命令

chmod 命令

批改文件、目录权限

chmod [选项] <mode> < 文件 >

chmod 疏忽符号链接文件.

mode:
    [ugoa..][+-=][rwxXstugo...]    能够应用符号或数字 (8 进制) 来更改权限, eg. chmod 755 <file>
        u    文件所有者
        g    文件所在组的用户
        o    其余用户
        a    所有用户(默认), 等同于 ugo
        
        +    追加权限(在原来根底上)
        -    撤销权限
        =    设置权限(只具备这些权限)
        
        r    读权限
        w    写权限
        x    执行权限(或对目录的拜访权)
        X
        s
        t
        u
        g
        o



选项:
    -R        递归扭转子目录及文件

chown

更改属主、属组

chown [选项] <user>:<group> <file>...

<user> 和 <group> 可疏忽其中任意一个, eg. chown :<group> <file>... 示意仅更改属组

chgrp

独自批改属组

chgrp

不罕用

umask

显示或设置用户文件创建掩码

umask [选项] [<mode>]

创立新文件的默认权限是 666, 而不同用户的 umask 是不同的.

比方 root 用户的默认 umask 是 0022, 那么它创立的文件的初始权限就是: 666 – 0022 = 644, 也就是 rw-r--r--

正文完
 0