Linux笔记(一)

systemd

systemctl 管理服务命令

命令(systemctl 参数 服务名)作用
systemctl start foo开启服务
systemctl stop foo关闭服务
systemctl restart foo重启服务
systemctl reload foo重新加载服务配置文件(不终止服务)
systemctl status foo查看服务
systemctl enable foo开机自启动
systemctl disabel foo开机不自动启动
systemctl is-enabled foo查看该服务是否为开机自动启动
systemctl list-unit-files --type=service查看各个级别下服务的启动与禁用情况

常用系统工作命令


命令名称   [命令参数]   [命令对象]


echo

echo [字符串|$变量]
echo命令用于在终端输出字符串或者变量提取后的值

[linuxprobe@linuxprobe Desktop]$ echo linux
linux
[linuxprobe@linuxprobe Desktop]$ echo $SHELL
/bin/bash

date

date [选项][+指定的格式]
date命令用于显示及设置系统的时间或者日期

参数作用
%t跳格 [类似Tab健]
%Y
%m
%d
%H小时(24小时制)
%I(大写i)小时(12小时制)
%M分钟
%S
%j今年中的第几天

按默认格式显示当前时间

[linuxprobe@linuxprobe Desktop]$ date
Fri Aug 14 18:26:02 CST 2020

按照“年-月-日 时:分:秒”的格式显示当前时间

[linuxprobe@linuxprobe Desktop]$ date "+%Y-%m-%d %H:%M:%S"
2020-08-14 18:26:05

设置时间

[root@linuxprobe ~]# date -s "20180630 9:00:00"
Sat Jun 30 09:00:00 CST 2018
[root@linuxprobe ~]# date
Sat Jun 30 09:00:01 CST 2018

可用来查询今天是当年中的第几天。这个参数能够很好的地区分备份时间的新旧,即数字越大,越靠近当前的时间。

[root@linuxprobe ~]# date
Fri Aug 14 18:39:09 CST 2020
[root@linuxprobe ~]# date "+%j"
227

reboot

reboot命令用于重启操作系统,由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用root管理员来重启

[root@linuxprobe ~]# reboot

poweroff

poweroff命令用于关闭系统,由于关闭计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用root管理员来关闭

[root@linuxprobe ~]# poweroff

wget

wget [参数] 下载地址
wget 命令用于在终端下载网络文件

参数作用
-b后台下载模式
-P下载到指定目录
-t最大尝试次数
-c断电续传
-p下载页面内所有资源,包括图片、视频
-r递归下载

ps命令

ps [参数]
ps 命令用于查看系统中的进程状态

参数作用
-a显示所有进程(包括其他用户的进程)
-u用户以及其他详细信息
-x显示没有控制终端的进程

5种常见的进程状态,被别是运行、中断、不可中断、僵死和停止

  • R(运行):进程正在运行或在运行队列中等待。
  • S(中断):进程处于休眠中,当某个条件形成后或者接到信号时,则脱离该状态。
  • D(不可中断):进程不响应系统异步信号,即便用 kill 命令也不能将其中断。
  • Z(僵死):进程已经终止,但进程描述符依然存在,直到父进程调用 wait4() 系统函数后将进程释放。
  • T(停止):进程收到停止信号后停止运行。
    在这里插入图片描述
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
进程的所有者进程ID号运算器占用率内存占用率虚拟内存使用量(单位是KB)占用的固定内存量(单位是KB)所在终端进程状态被启动的时间实际使用CPU的时间命令名称与参数

top

top命令用于动态地监视进程活动与系统负载等信息

[root@linuxprobe ~]# top

在这里插入图片描述
前5行的系统整体的统计信息其所代表的含义

-----
系统时间运行时间登录终端数系统负载
进程总数运行中的进程数睡眠中的进程数停止中的进程数僵死的进程数
用户占用资源百分比 us系统内核占用资源百分比 sy改变过优先级的进程资源百分比 ni空闲的资源百分比 id
物理内存总量内存使用量内存空闲量作为内核缓存的内存量
虚拟内存总量虚拟内存使用量虚拟内存空闲量已被提前加载的内存量

load average (系统负载): 三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低。

pidof

pidof [参数] [服务名称]
pidof命令用于查询某个指定服务进程的PID值

[root@linuxprobe ~]# pidof sshd
1715

kill

kill [参数] [进程PID]
kill命令用于终止某个指定PID的服务进程

[root@linuxprobe ~]# kill 1715

killall

killall [参数] [进程名称]
killall命令用于终止某个指定名称的服务所对应的全部进程

[root@linuxprobe ~]# pidof httpd
13581 13580 13579 13578	
[root@linuxprobe ~]# killall httpd
[root@linuxprobe ~]# pidof httpd
[root@linuxprobe ~]# 

如果有些命令在执行时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾添加上一个 & 符号,这样命令将进入系统后台来执行。

系统状态检测命令

ifconfig

ifconfig [网络设备] [参数]
ifconfig命令用于获取网卡配置与网络状态等信息

uname

uname [-a]
uname命令用于查看系统内核与系统版本等信息。
查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。

[root@linuxprobe ~]# uname -a
Linux linuxprobe.com 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux

如果要查看当前系统版本的详细信息,则需要查看redhat-release文件。

[root@linuxprobe ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.0 (Maipo)

uptime

uptime命令用于查看系统的负载信息
它显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况;负载值越低越好,尽量不要长期超过1,在生产环境中不要超过5。

[root@linuxprobe ~]# uptime
 00:18:55 up  5:15,  2 users,  load average: 0.07, 0.07, 0.05

free

free [-h]
free命令用于显示当前系统中内存的使用量信息。

[root@linuxprobe ~]# free -h
             total       used       free     shared    buffers     cached
Mem:          1.8G       1.7G        91M        10M       1.4M       534M
-/+ buffers/cache:       1.2G       627M
Swap:         2.0G         0B       2.0G

主要关注已用量和可用量

内存总量已用量可用量进程共享的内存量磁盘缓存的内存量缓存的内存量
totalusedfreesharedbufferscached
Mem(内存)1.8G1.7G91M10M1.4M534M
-/+ buffers/cache1.2G627M
Swap(交换分区)2.0G0B2.0G

who

who [参数]
who命令用于查看当前登入主机的用户终端信息

[root@linuxprobe ~]# who
root     :0           2020-08-18 13:25 (:0)
root     pts/0        2020-08-18 13:26 (:0)
登录的用户名终端设备登录到系统的时间
root:02020-08-11 11:35 (:0)
rootpts/02020-08-11 11:36 (:0)

last

last [参数]
last命令用于查看所有系统的登录记录

[root@linuxprobe Desktop]# last
root     pts/0        :0               Tue Aug 18 13:26   still logged in   
root     :0           :0               Tue Aug 18 13:25   still logged in   
(unknown :0           :0               Tue Aug 18 13:24 - 13:25  (00:00)    
reboot   system boot  3.10.0-123.el7.x Tue Aug 18 21:24 - 13:29  (-7:-55)   
linuxpro pts/0        :0               Tue Aug 11 11:36 - 13:24 (7+01:48)   
linuxpro :0           :0               Tue Aug 11 11:35 - 13:24 (7+01:49)   
(unknown :0           :0               Tue Aug 11 11:32 - 11:35  (00:02)    
reboot   system boot  3.10.0-123.el7.x Tue Aug 11 19:30 - 13:24 (6+17:53)   

wtmp begins Tue Aug 11 19:30:47 2020

history

history [-c]
history命令用于显示历史执行过的命令
使用 -c 参数则会清空所有命令历史记录。使用 " !编码数字 " 的方式来重复执行某一次的命令。
历史命令会被保存到用户家目录中的 .bash_history文件中。Linux 系统中以点( . )开头的文件均是隐藏文件,这些文件大多数为系统服务文件,可以用 cat 命令查看其文件内容。

[root@linuxprobe Desktop]# history
    1  ls
    2  pwd
    3  cd /ect
    4  date -j
    5  date "+%j"
    6  date
    7  date -s "20200814 18:39:00"
    8  date "+%j"
    9  date
   10  date "+%j"
   11  wget http://www.linuxprobe.com/docs/LinuxProbe.pdf
   12  ps -aux
   13  top
   14  pidof sshd
   15  kill 1715
   16  pidof sshd
   17  systemctl start sshd
   18  pidof sshd
   19  pidof httpd
   20  systemctl start hhtpd
   21  ifconfig
   22  uname -a
   23  cat /etc/redhat-release 
   24  uptime
   25  free -h
   26  cat /var/log/messages 
   27  more /var/log/me
   28  more /var/log/messages 
   29  who
   30  who
   31  last
   32  history
[root@linuxprobe Desktop]# !30
who
root     :0           2020-08-18 13:25 (:0)
root     pts/0        2020-08-18 13:26 (:0)
[root@linuxprobe Desktop]# history -c
[root@linuxprobe Desktop]# history 
1  history 

sosreport

sosreport 命令用于收集系统配置及架构信息并输出诊断文档
当Linux系统出现故障需要联系技术支持人员时,大多数时候都要先使用这个命令来简单收集系统的运行状态和服务配置信息,以便让技术支持人员能够远程解决一些小问题,亦或让他们能提前了解某些复杂问题。

工作目录切换命令

pwd

pwd [选项]
pwd命令用于显示用户当前所处的工作目录

[root@linuxprobe Desktop]# pwd
/root/Desktop

cd

cd [目录名称]
cd命令用于切换工作路径

cd-cd ..cd~
返回到上一次所在的目录进入上级目录切换到当前用户的家目录
[root@linuxprobe var]# cd log
[root@linuxprobe log]# cd ~
[root@linuxprobe ~]# cd -
/var/log
[root@linuxprobe log]# cd ..
[root@linuxprobe var]# 

ls

ls [选项] [文件]
ls 命令用于显示目录中的文件信息
" -a " 参数看到全部文件(包括隐藏文件)
" -l " 参数可以查看文件的属性、大小等详细信息
" -d " 参数查看目录属性信息

[root@linuxprobe ~]# ls -la
total 56
dr-xr-x---. 14 root root 4096 Aug 18 13:25 .
drwxr-xr-x. 17 root root 4096 Aug 18 21:24 ..
-rw-------.  1 root root 1043 Aug 11 19:30 anaconda-ks.cfg
-rw-------.  1 root root  406 Aug 18 13:24 .bash_history
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
drwx------.  9 root root 4096 Aug 18 13:26 .cache
drwx------. 15 root root 4096 Aug 18 13:26 .config
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
drwx------.  3 root root   24 Aug 11 11:30 .dbus
drwxr-xr-x.  2 root root   17 Aug 18 15:44 Desktop
drwxr-xr-x.  2 root root    6 Aug 18 13:25 Documents
drwxr-xr-x.  2 root root    6 Aug 18 13:25 Downloads
-rw-------.  1 root root   16 Aug 18 13:25 .esd_auth
-rw-------.  1 root root  314 Aug 18 13:25 .ICEauthority
-rw-r--r--.  1 root root 1094 Aug 11 11:31 initial-setup-ks.cfg
drwxr-xr-x.  3 root root   18 Aug 18 13:25 .local
drwxr-xr-x.  2 root root    6 Aug 18 13:25 Music
drwxr-xr-x.  2 root root    6 Aug 18 13:25 Pictures
drwxr-xr-x.  2 root root    6 Aug 18 13:25 Public
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
drwxr-xr-x.  2 root root    6 Aug 18 13:25 Templates
drwxr-xr-x.  2 root root    6 Aug 18 13:25 Videos
[root@linuxprobe ~]# ls -ld /etc
drwxr-xr-x. 132 root root 8192 Aug 18 21:24 /etc

文本文件编辑命令

cat

cat [选项] [文件]
cat 命令用于查看纯文本文件(内容较少的)
" -n " 参数显示行号

[root@linuxprobe ~]# cat -n initial-setup-ks.cfg 
     1	#version=RHEL7
     2	# X Window System configuration information
     3	xconfig  --startxonboot
     4	
     5	# License agreement
     6	eula --agreed
     7	# System authorization information
     8	auth --enableshadow --passalgo=sha512
     9	# Use CDROM installation media
    10	cdrom
    11	# Run the Setup Agent on first boot
    12	firstboot --enable
    13	# Keyboard layouts
    14	keyboard --vckeymap=us --xlayouts='us'
    15	# System language
    16	lang en_US.UTF-8
    17	
    18	ignoredisk --only-use=sda
    19	# Network information
    20	network  --bootproto=dhcp --device=eno16777736 --onboot=off --ipv6=auto
    21	network  --bootproto=dhcp --hostname=linuxprobe.com
    22	# Root password
    23	rootpw --iscrypted $6$yf5cSSI3ZUWDt0RC$/Qi7l7jApCzNTrpCWKXXoXvzXRA8EEFcG.h5eMopUYKLTasj0pJnWxjNTzlRVuD9lcF/FTDS/XIHfwRlJdHOP1
    24	# System timezone
    25	timezone America/New_York --isUtc
    26	# System bootloader configuration
    27	bootloader --location=mbr --boot-drive=sda
    28	autopart --type=lvm
    29	# Partition clearing information
    30	clearpart --all --initlabel --drives=sda
    31	
    32	%packages
    33	@base
    34	@core
    35	@desktop-debugging
    36	@dial-up
    37	@fonts
    38	@gnome-desktop
    39	@guest-agents
    40	@guest-desktop-agents
    41	@input-methods
    42	@internet-browser
    43	@multimedia
    44	@print-client
    45	@x11
    46	
    47	%end
    48	

more

more [选项] 文件
more 命令用于查看纯文本文件(内容较多的)

[root@linuxprobe ~]# more initial-setup-ks.cfg 
#version=RHEL7
# X Window System configuration information
xconfig  --startxonboot

# License agreement
eula --agreed
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Run the Setup Agent on first boot
firstboot --enable
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

ignoredisk --only-use=sda
# Network information
network  --bootproto=dhcp --device=eno16777736 --onboot=off --ipv6=auto
network  --bootproto=dhcp --hostname=linuxprobe.com
# Root password
--More--(51%)

head

head [选项] [文件]
head 命令用于查看纯文本文件的前 N 行

[root@linuxprobe ~]# head -n 10 initial-setup-ks.cfg 
#version=RHEL7
# X Window System configuration information
xconfig  --startxonboot

# License agreement
eula --agreed
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom

tail

tail [选项] [文件]
tail 命令用于查看纯文本文档的后 N 行或者持续刷新内容,想要实时查看最新日志文件时,这命令特别适合

[root@linuxprobe ~]# tail -n 10 initial-setup-ks.cfg 
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@multimedia
@print-client
@x11

%end

[root@linuxprobe ~]# tail -f /var/log/messages
Aug 21 16:49:47 linuxprobe gnome-keyring-daemon[12373]: couldn't create login keyring: An error occurred on the device
Aug 21 16:49:47 linuxprobe dbus-daemon: dbus[1052]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service'
Aug 21 16:49:47 linuxprobe dbus[1052]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service'
Aug 21 16:49:47 linuxprobe systemd: Starting Hostname Service...
Aug 21 16:49:47 linuxprobe dbus-daemon: dbus[1052]: [system] Successfully activated service 'org.freedesktop.hostname1'
Aug 21 16:49:47 linuxprobe dbus[1052]: [system] Successfully activated service 'org.freedesktop.hostname1'
Aug 21 16:49:47 linuxprobe systemd: Started Hostname Service.
Aug 21 16:50:01 linuxprobe systemd: Starting Session 54 of user root.
Aug 21 16:50:01 linuxprobe systemd: Started Session 54 of user root.
Aug 21 16:50:15 linuxprobe fprintd: ** Message: No devices in use, exit

tr

tr [原始字符] [目标字符]
tr 命令用于替换文本文件中的字符

[root@linuxprobe Desktop]# cat haha
aaabbbcccdddeeefff
[root@linuxprobe Desktop]# cat haha | tr [a-z] [A-Z]
AAABBBCCCDDDEEEFFF

wc

wc [参数] 文本
wc 命令用于统计指定文本的行数、字数、字节数

参数作用
-l显示行数
-w显示单词数
-c显示字节数
[root@linuxprobe Desktop]# wc -l /etc/passwd
38 /etc/passwd

stat

stat 文件名称
stat 命令用于查看文件的具体存储信息和时间等信息

AceessModifyChange
最后一次查看文件内容时间最后一次修改文件内容时间最后一次修改文件属性信息时间
[root@linuxprobe Desktop]# stat haha
  File: ‘haha’
  Size: 19        	Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d	Inode: 71452994    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-08-21 16:56:31.307571830 +0800
Modify: 2020-08-21 16:56:26.481571556 +0800
Change: 2020-08-21 16:56:26.482571556 +0800
 Birth: -

cut

cut [参数] 文本
cut 命令用于按 “列” 提取文本字符
" -f " 参数来设置需要查看的列数
" -d "参数来设置间隔符号

[root@linuxprobe Desktop]# head -n 10 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@linuxprobe Desktop]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
dbus
polkitd
unbound
colord
usbmuxd
avahi
avahi-autoipd
libstoragemgmt
saslauth
qemu
rpc
rpcuser
nfsnobody
rtkit
radvd
ntp
chrony
abrt
pulse
gdm
gnome-initial-setup
postfix
sshd
tcpdump
linuxprobe

diff

diff [参数] 文本
diff命令用于比较多个文本文件的差异
" --brief " 参数来确认两个文件是否不同
" -c " 参数来详细比较出多个文件的差异之处

[root@linuxprobe Desktop]# cat haha
aaabbbcccdddeeefff
aaabbbcccdddeeefff
aaabbbcccdddeeefff
111111111111111111
aaabbbcccdddeeefff
[root@linuxprobe Desktop]# cat haha1
aaabbbcccdddeeefff
aaabbbcccdddeeefff
aaabbbcccdddeeefff
111111111111122222
aaabbbcccdddeeefff
[root@linuxprobe Desktop]# diff --brief haha haha1
Files haha and haha1 differ
[root@linuxprobe Desktop]# diff -c haha haha1
*** haha	2020-08-21 17:08:36.825613076 +0800
--- haha1	2020-08-21 17:09:39.921616663 +0800
***************
*** 1,5 ****
  aaabbbcccdddeeefff
  aaabbbcccdddeeefff
  aaabbbcccdddeeefff
! 111111111111111111
  aaabbbcccdddeeefff
--- 1,5 ----
  aaabbbcccdddeeefff
  aaabbbcccdddeeefff
  aaabbbcccdddeeefff
! 111111111111122222
  aaabbbcccdddeeefff

文件目录管理命令

touch

touch [选项] [文件]
touch 命令用于创建空白文件或设置文件的时间

参数作用
-a修改 “ 读取时间 ” (atime)
-m修改 “修改时间 ”(mtime)
-d同时修改atime与mtime
[root@linuxprobe Desktop]# ls -l haha
-rw-r--r--. 1 root root 95 Aug 21 17:08 haha
[root@linuxprobe Desktop]# echo "haha" >> haha
[root@linuxprobe Desktop]# ls -l haha
-rw-r--r--. 1 root root 100 Aug 21 17:22 haha
[root@linuxprobe Desktop]# touch -d "2020-8-21 17:00" haha
[root@linuxprobe Desktop]# stat haha
  File: ‘haha’
  Size: 100       	Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d	Inode: 71452992    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-08-21 17:00:00.000000000 +0800
Modify: 2020-08-21 17:00:00.000000000 +0800
Change: 2020-08-21 17:23:12.921662883 +0800

mkdir

mkdir [选项] 目录
mkdir 命令用于创建空白的目录
" -p "参数用来递归创建出具有嵌套叠层关系的文件目录

[root@linuxprobe Desktop]# mkdir -p a/b/c/d/e
[root@linuxprobe Desktop]# cd a
[root@linuxprobe a]# cd b
[root@linuxprobe b]# cd c
[root@linuxprobe c]# 

cp

cp [选项] 源文件 目标文件
cp 命令用于复制文件或者目录

  • 如果目标文件是目录,则会把源文件复制到该目录中
  • 如果目标文件也是普通文件,则会询问是否要覆盖它
  • 如果目标文件不存在,则执行正常的复制操作
参数作用
-p保留原始文件的属性
-d若对象为 “链接文件”,则保留该 “链接文件” 的属性
-r递归持续复制(用于目录)
-i若目标文件存在则询问是否覆盖
-a相当于-pdr(p、d、r 为上述参数)

mv

mv [选项] 源文件 [目标路径 | 目标文件名]
mv 命令用于剪切文件或将文件重命名

rm

rm [选项] 文件
rm 命令用于删除文件或者目录
" -f "参数来强制删除
" -r "参数来删除目录

dd

dd [参数]
dd 命令用于按照指定大小和个数的数据块来复制文件或转换文件

参数作用
if输入的文件名称
of输出的文件名称
bs设置每个 “块” 的大小
count设置要复制 “块” 的个数

例如我们可以用 dd 命令从 /dev/zero 设备文件中取出一个大小为 560MB 的数据块,然后保存成名为560_file的文件。

[root@linuxprobe c]# dd if=/dev/zero of=560_file count=1 bs=560M
1+0 records in
1+0 records out
587202560 bytes (587 MB) copied, 2.13431 s, 275 MB/s
[root@linuxprobe c]# ls -lh
total 560M
-rw-r--r--. 1 root root 560M Aug 22 10:22 560_file
drwxr-xr-x. 3 root root   14 Aug 21 17:27 d

dd 命令的功能也绝不仅限于复制文件这么简单。如果你想把光驱设备中的光盘制作成 iso 格式的镜像文件,在 Window 系统中需要借助第三方软件才能做到,但在 Linux 系统中可以直接使用 dd 命令来压制出光盘镜像文件,将它变成一个可立即使用的 iso 镜像

[root@linuxprobe c]# dd if=/dev/cdrom  of=RHEL-server-7.0-x86_64-Linux.iso

file

file 文件名
file 命令用于查看文件的类型

[root@linuxprobe Desktop]# file haha
haha: ASCII text
[root@linuxprobe Desktop]# file a
a: directory

打包压缩与搜索命令

tar

tar [选项] [文件]
tar 命令用于对文件进行打包压缩或解压
在 Linux 系统中,常见的文件格式比较多,其中主要使用的是 .tar 或 .tar.gz 或 .tar.bz2 格式,我们不用担心格式太多而记不住,其实这些格式大部分都是由 tar 命令来生成。

参数作用
-c创建压缩文件
-x解开压缩文件
-t查看压缩包内有哪些文件
-z用Gzip压缩或解压
-j用bzip2压缩或解压
-v显示压缩或解压的过程
-f目标文件名
-p保留原始的权限与属性
-P使用绝对路径来压缩
-C指定解压到的目录

" -f "参数要放在参数的最后一位,代表要压缩或解压的软件包名称
一般使用 " tar -czvf 压缩包名称.tar.gz 要打包的目录 " 命令把指定的文件进行打包压缩
相应的解压命令为 " tar -xzvf 压缩包名称.tar.gz "

[root@linuxprobe Desktop]# tar -czvf a.tar.gz ./a
./a/
./a/b/
./a/b/c/
./a/b/c/d/
./a/b/c/d/e/
./a/b/c/560_file
./a/etc.tar.gz
[root@linuxprobe Desktop]# mkdir b
[root@linuxprobe Desktop]# tar -xzvf a.tar.gz -C ./b
./a/
./a/b/
./a/b/c/
./a/b/c/d/
./a/b/c/d/e/
./a/b/c/560_file
./a/etc.tar.gz

grep

grep [选项] [文件]
grep 命令用于在文本中执行关键词搜索

参数作用
-b将可执行文件(binary)当作文本文件(text)来搜索
-c仅显示找到的行数
-i忽略大小写
-n显示行号
-v反向选择——仅列出没有 “关键词” 的行
[root@linuxprobe Desktop]# grep -n  /sbin/nologin /etc/passwd
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
……………………………………………省略部分输出过程信息………………………………………………………

find

find [查找路径] 寻找条件 [操作]
find 命令用于按照指定条件来查找文件
它可以使用不同的文件特性作为寻找条件(如文件名、大小、修改时间、权限等信息)

参数作用
-name匹配名称
-perm匹配权限(mode 为完全匹配,-mode 为包含即可)
-user匹配所有者
-group匹配所有组
-mtime -n +n匹配修改内容的时间( -n 指 n 天以内,+n 指 n 天以前)
-atime -n +n匹配访问文件的时间( -n)
-ctime -n +n匹配修改文件权限的时间( -n 指 n 天以内,+n 指 n天以前)
-nouser匹配无所有者的文件
-nogroup匹配无所有组的文件
-newer f1 !f2匹配比文件 f1 新但比 f2 旧的文件
–type b/d/c/p/l/f匹配文件类型(后面的字母参赛依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
-size匹配文件的大小(+50KB 为查找超过 50KB 的文件,而且 -50KB 为查找小于 50KB 的文件)
-prune忽略某个目录
-exec …… { };后面可跟用于进一步处理搜索结果的命令

-exec 参数的重要作用
这个参数用于把 find 命令搜索到的结果交由紧随其后的命令作进一步处理,十分类似管道符
例:在整个文件系统中找出所有归属于 linuxprobe 用户的文件并复制到 /root/findresults 目录。重点是“-exec {} \” 参数,其中的 {} 表示 find 命令搜索出的每一个文件,并且命令的结尾必须是 “;”。

[root@linuxprobe Desktop]# find / -user linuxprobe -exec cp -a {} /root/findresults/ \;
[root@linuxprobe Desktop]# find /etc -name "host*" 
/etc/avahi/hosts
/etc/host.conf
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/selinux/targeted/modules/active/modules/hostname.pp
/etc/hostname
[root@linuxprobe Desktop]# 

Vim

Vim中常用的命令

命令作用
dd删除(剪切)光标所在整行
5dd删除(剪切)光标处开始的 5 行
yy复制光标所在整行
5yy复制光标处开始的5行
n显示搜索命令定位到的下一个字符串
N显示搜索命令定位到的上一个字符串
u撤销上一步的操作
p将之前删除(dd)或复制(yy)过的数据粘贴到光标后面

末行模式中可用的命令

命令作用
:w保存
:q退出
:q!强制退出(放弃对文档的修改内容)
:wq!强制保存退出
:set nu显示行号
:set nonu不显示行号
:命令执行该命令
:整数跳转到该行
:s/one/two将当前光标所在行的第一个 one 替换成 two
:s/one/two/g将当前光标所在行的所以 one 替换成two
:%s/one/two/g将全文中的所有 one 替换成 two
?字符串在文本中从下至上搜索该字符串
/字符串在文本中从上至下搜索该字符串

shell

一个完整的shell脚本拥有:

  • 脚本声明  #!/bin/bash
  • 脚本注释  #注释内容
  • 脚本命令  ls、pwd等命令
[root@linuxprobe ~]# vim demo.sh
[root@linuxprobe ~]# 
[root@linuxprobe ~]# cat demo.sh 
#!/bin/bash
#For Example By linuxprobe.com
pwd
ls -al
[root@linuxprobe ~]# bash demo.sh
/root
total 76
dr-xr-x---. 15 root       root       4096 Aug 27 15:26 .
drwxr-xr-x. 18 root       root       4096 Aug 21 17:27 ..
-rw-------.  1 root       root       1043 Aug 11 19:30 anaconda-ks.cfg
…………………………………省略部分内容……………………………………………

两种方式执行shell脚本
一、bash 解释器命令直接运行Shell脚本
二、完整的路径方式执行,有时会因为权限不足,需要增加权限(chmod)

接收参数

参数作用
$0脚本名称
$#参数个数
$*全部参数都输出一次
$1、$2第一个参数、第二个参数

判断参数

shell 脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字 0 ,否则便返回其他随机数值。条件测试语法的执行格式: [ 条件表达式 ] ,切记条件表达式两边均应有一个空格。
按照测试对象来划分,条件测试语句可以分成4种:

  • 文件测试语句
  • 逻辑测试语句
  • 整数值比较语句
  • 字符串比较语句

文件测试所用的参数

运算符作用
-d测试文件是否为目录类型
-e测试文件是否存在
-f判断是否为一般文件
-r测试当前用户是否有权限读取
-w测试当前用户是否有权限写入
-x测试当前用户是否有权限执行

" $? "变量显示上一条命令执行后的返回值。0 为真,非 0 为假。

[root@linuxprobe ~]# [ -d /etc/fastb ]
[root@linuxprobe ~]# echo $?
1
[root@linuxprobe ~]# [ -f /etc/fstab ]
[root@linuxprobe ~]# echo $?
0

逻辑测试所用的参数

逻辑语句可用于对测试结果进行逻辑分析,根据测试结果可实现不同的效果。
**分别是 与、或、非:" &&、||、!"

[root@linuxprobe ~]# [ -e /dev/cdrom ] && echo "Exist"
Exist

整数值比较语句

运算符作用
-eq是否等于
-ne是否不等于
-gt是否大于
-lt是否小于
-le是否等于或小于
-ge是否大于或等于
[root@linuxprobe ~]# [ 10 -gt 10 ]
[root@linuxprobe ~]# echo $?
1
[root@linuxprobe ~]# [ 10 -eq 10 ]
[root@linuxprobe ~]# echo $?
0

字符串比较语句

运算符作用
=比较字符串内容是否相同
!=比较字符串内容是否不同
-z判断字符串内容是否为空
[root@linuxprobe ~]# [ -z $String ]
[root@linuxprobe ~]# echo $?
0
[root@linuxprobe ~]# String="aaa"
[root@linuxprobe ~]# [ -z $String ]
[root@linuxprobe ~]# echo $?
1
[root@linuxprobe ~]# echo $LANG
en_US.UTF-8
[root@linuxprobe ~]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US

流程控制语句

if 条件测试语句

if 条件测试操作
	then 
	命令语句
fi
-------------------------
if 条件测试操作
	then 
	命令语句
else
	命令语句
fi
-------------------------
if 条件测试操作
	then 
	命令语句
elif
	then
	命令语句
else
	命令语句
fi
-------------------------

for 条件循环语句

for  变量名 in 取值列表
do
	命令语句
done
-------------
read -p "请输入数据:" parameter #把输入的值存到parameter

while 条件循环语句

while	条件测试操作
do
	命令语句
done

--------------
let arg    #arg:要执行的表达式
例:
自加操作:let i++
自减操作:let i--
let a=5+4
let b=9-3 
echo $a $b
结果为
9 6

case 条件测试语句

case  变量值 in
条件1)
	命令语句
	;;
条件2)
	命令语句
	;;
*)
	默认命令序列
esac

计划任务

计划任务分为一次性计划与长期性计划任务

  • 一次性计划任务:今晚 09 点 00 分开启网站服务
  • 长期性计划:每周一的凌晨 3 点 20 分把 /home/wwwroot 目录打包备份为backup.tar.gz

顾名思义,一次性计划任务只执行一次,一般满足临时的工作需求。我们可以用 at 命令实现这种功能,只需要写成 “ at 时间 ” 的形式就可以。如果想要查看已设置好但还未执行的一次性计划任务,可以用 “ at -l ”命令。想要将其删除,可以用 “ atrm 任务序号 ”。在使用 at 命令来设置一次性计划任务时,默认采用的是交互式方法。

root@linuxprobe ~]# at 23:30
at> systemctl restart httpd
at> <EOT>  #这里 同时按下  Ctrl+D 组合键来结束编写计划任务
job 1 at Thu Aug 27 23:30:00 2020
[root@linuxprobe ~]# at -l
1	Thu Aug 27 23:30:00 2020 a root
[root@linuxprobe ~]# atrm 1
[root@linuxprobe ~]# at -l
[root@linuxprobe ~]# 

长期性任务:
创建、编辑计划任务的命令为 “ crontab -e ”,查看当前计划任务的命令为 “ crontab -l ”,删除某条计划任务的命令为 “ crontab -r ”。另外,如果你是以管理员的身份登录的系统,还可以在 crontab 命令中加上 -u 参数来编辑他人的计划任务。
在正式部署计划任务前,先记住这个口诀 “ 分、时、日、月、星期 命令 ”。这是使用 crond 服务设置任务的参数格式,需要注意的是,如果有些字段没有设置,则需要使用星号( * )占位。

字段说明
取值为 0~59 的整数
取值为 0~23 的整数
取值为 1~31 的整数
取值为1~12 的整数
星期取值为 0~7 的整数,其中 0 和 7 均为星期日
命令要执行的命令或脚本程序

假设一个每周一、三、五的凌晨 3 点 25 分,都需要使用 tar 命令把某个网站的数据目录进行打包处理,使其作为一个备份文件。我们可以使用 crontab -e 命令来创建计划任务。为自己创建计划任务无需使用 -u 参数,具体的实现效果的参数如 crontab -l 命令。

[root@linuxprobe Desktop]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@linuxprobe Desktop]# crontab -l
25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot

除了用逗号( ,)来分别表示多个时间段,例如 “ 8,9,12 ” 表示 8月、9月和12月。还可以用减号( - )来表示一段连续的时间周期(例如字段 “日” 的取值为 “ 12-15 ”,则表示每月的12~15日)。以及用除号( / )表示执行任务的时隔时间(例如 “ */2 ” 表示每隔 2 分钟执行一次任务)。
如果在 crond 服务中需要同时包含多条计划任务的命令语句,应每行仅写一条。例如我们再添加一条计划任务,它的功能是每周一至周五的凌晨1点钟自动清空 /tmp 目录内的所有文件。尤其需要注意的是,在 crond 服务的计划任务参数中,所有命令一定要用绝对路径的方式来写,如果不知绝对路径,请用 whereis 命令来查询,rm 命令路径为:/usr/bin/rm

[root@linuxprobe Desktop]# whereis rm
rm: /usr/bin/rm /usr/share/man/man1/rm.1.gz /usr/share/man/man1p/rm.1p.gz

计划任务中的 “分” 字段必须有数值,绝不能为空或者是 * 号,而 “日” 和 “星期” 字段不能同时使用,否则会发生冲突。

用户身份与文件权限

  • 管理员 UID 为 0:系统的管理员用户。
  • 系统用户 UID 为 1~999:Linux 系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。
  • 普通用户 UID 从 1000 开始:是由管理员创建的用于日常工作的用户。
    UID 是不能冲突的,而且管理员创建的普通用户的UID默认是从1000开始的(即使前面有闲置的号码)

useradd

useradd [选项] 用户名
useradd 命令用于创建新的用户
使用该命令创建用户账户时,默认的用户家目录会被存放在 /home 目录中。

参数作用
-d指定用户的家目录(默认为 /home/username )
-e账户的到期时间,格式为 YYYY-MM-DD
-u指定该用户的默认 UID
-g指定一个初始的用户基本组(必须已存在)
-G指定一个或多个扩展用户组
-N不创建与用户同名的基本用户组
-s指定该用户的默认 Shell 解释器

下面我们创建一个普通用户并指定家目录的路径、用户的 UID 以及 Shell 解释器。在下面的命令中,请注意 /sbin/nologin,它是终端解释器中的一员,与 Bash 解释器有着天壤之别。一旦用户的解释器被设置为 nologin ,则代表该用户不能登录到系统中:

[root@linuxprobe Desktop]# useradd -d /home/linux -u 8888 -s /sbin/nologin linuxone
[root@linuxprobe Desktop]# id linuxone
uid=8888(linuxone) gid=8888(linuxone) groups=8888(linuxone)
[root@linuxprobe Desktop]# su - linuxone
This account is currently not available.

groupadd

groupadd [选项] 群组名
groupadd 命令用于创建用户组
为了能够更加高效地指派系统中各个用户的权限,在工作中常常会把几个用户加入到同一个组里面,这样便可以针对一类用户统一安排权限。

usermod

usermod [选项] 用户名
usermod 命令用于修改用户的属性
修改如用户的 UID 、基本/扩展用户组、默认终端等。

参数作用
-c填写用户账户的备注信息
-d -m参数 -m 与参数 -d 连用,可重新指定用户的家目录并自动把旧的数据转移过去
-e账户的到期时间,格式为 YYYY-MM-DD
-g变更所属用户组
-G变更扩展用户组
-L锁定用户禁止其登录系统
-U解锁用户,允许其登录系统
-s变更默认终端
-u修改用户的 UID
[root@linuxprobe Desktop]# id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),10(wheel)
[root@linuxprobe Desktop]# usermod -G root linuxprobe
[root@linuxprobe Desktop]# id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),0(root)
[root@linuxprobe Desktop]# usermod -u 7777 linuxprobe
[root@linuxprobe Desktop]# id linuxprobe
uid=7777(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),0(root)

passwd

passwd [选项] [用户名]
passwd 命令用于修改用户密码、过期时间、认证信息等
普通用户只能使用 passwd 命令修改自身的系统密码,而 root 管理员则有权限修改其他所有人密码。

参数作用
-l锁定用户,禁止其登录
-u解除锁定,允许用户登录
--stdin允许通过标准输入修改用户密码,如 echo “NewPassWord” | passwd --stdin Username
-d使该用户可用空密码登录系统
-e强制用户在下次登录时修改密码
-S显示用户的密码是否被锁定,以及密码所采用的加密算法名称

userdel

userdel [选项] 用户
userdel 命令用于删除用户
在执行删除操作时,该用户的家目录默认会保留下来,此时可以使用 -r 参数将其删除。

参数作用
-f强制删除用户
-r同时删除用户及用户家目录
[root@linuxprobe Desktop]# id linuxone
uid=8888(linuxone) gid=8888(linuxone) groups=8888(linuxone)
[root@linuxprobe Desktop]# userdel linuxone
[root@linuxprobe Desktop]# id linuxone
id: linuxone: no such user

文件权限与归属

linux系统中一切都是文件,但是每个文件的类型不尽相同,因此 Linux 系统使用了不同的字符来加以区分。

  • -:普通文件
  • d:目录文件
  • l:链接文件
  • b:块设备文件
  • c:字符设备文件
  • p:管道文件

文件的特殊权限

chmod

chmod [参数] 权限 文件或者目录名称
chmod 命令用于设置文件或目录的权限
对目录进行操作需要加上参数 -R 来表示递归操作,意思是对目录内所有的文件进行整体操作

[root@linuxprobe Desktop]# ls -al haha
-rw-r--r--. 1 root root 100 Aug 21 17:00 haha
[root@linuxprobe Desktop]# chmod 777 haha
[root@linuxprobe Desktop]# ls -al haha
-rwxrwxrwx. 1 root root 100 Aug 21 17:00 haha

chown

chown [参数] 所有者:所属组 文件或目录名称
chown 命令用于设置文件或目录的所有者和所属组
对目录进行操作需要加上参数 -R 来表示递归操作,意思是对目录内所有的文件进行整体操作

[root@linuxprobe Desktop]# ls -al haha1
-rw-r--r--. 1 root root 95 Aug 21 17:09 haha1
[root@linuxprobe Desktop]# chown root:linuxprobe haha1
[root@linuxprobe Desktop]# ls -al haha1
-rw-r--r--. 1 root linuxprobe 95 Aug 21 17:09 haha1

SUID

SUID 是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。例如,所有用户都可以执行 passwd 命令来修改自己的用户密码,而用户密码保存在 /etc/shadow 文件中。仔细查看这个文件就会发现它的默认权限是 000 ,也就是说除了 root 管理员以外,所有用户都没有查看或编辑该文件的权限。但是,在使用 passwd 命令时如果加上 SUID 特殊权限位,就可让普通用户临时获取程序所有者的身份,把变更的密码信息写入到 shadow 文件中。
查看 passwd 命令属性时发现所有者的权限由 rwx 变成 rws,其中 x 改成 s 就意味着该文件被赋予了 SUID 权限。如果原本的权限是 rw- ,那么被赋予特殊权限后将变成大写的S。

[root@linuxprobe Desktop]# ls -l /etc/shadow
----------. 1 root root 1141 Aug 28 04:26 /etc/shadow
[root@linuxprobe Desktop]# ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jan 30  2014 /bin/passwd

SGID

SGID 主要实现如下两种功能:

  • 让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置)
  • 在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)
    SGID 的第一种功能是参考 SUID 而设计的,不同点在执行程序的用户获取的不再是文件所有者的临时权限,而是获取到文件所属组的权限。

SBIT

SBIT 特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。意思是当对某个目录设置了SBIT 粘滞位权限后,那该目录中的文件就只能被所有者执行删除操作了。文件能否被删除并不取决于自身的权限,而是看其所在目录是否有写入权限。

文件的隐藏属性

chattr

chattr [参数] 文件
chattr 命令用于设置文件的隐藏权限
如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加 “ +参数 ”,如果想要把某个隐藏功能移出文件,则需要追加“ -参数 ”。

参数作用
i无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S文件内容在变更后立即同步到硬盘(sync)
s彻底从硬盘中删除,不可恢复(用 0 填充原文件所在硬盘区域)
A不再修改这个文件或目录的最后访问时间(atime)
b不再修改文件或目录的存取时间
D检查压缩文件中的错误
d使用 dump 命令备份时忽略本文件/目录
c默认将文件或目录进行压缩
u当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t让文件系统支持尾部合并( tail-merging )
X可以直接访问压缩文件中的内容

lsattr

lsattr [参数] 文件
lsattr 命令用于显示文件的隐藏权限,文件的隐藏权限必须使用 lsattr 命令来查看。

文件访问控制列表

一般权限、特殊权限、隐藏权限其实有一个共性——权限是针对某一类用户设置的。如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)了。通俗来讲,基于普通文件或者目录设置 ACL 其实就是针对指定的用户或用户组设置文件或目录的操作权限。另外,如果针对某个目录设置了 ACL ,则目录中的文件会继承其 ACL;若针对文件设置了 ACL ,则文件不再继承其所在目录的 ACL。

setfacl

setfacl [参数] 文件名称
setfacl 命令用于管理文件的 ACL 规则
文件的 ACL 提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用 setfacl 命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。其中,针对目录文件需要使用 -R 递归参数;针对普通文件则使用 -m 参数;如果想要删除某个文件的 ACL,则可以使用 -b 参数。

[root@linuxprobe ~]# ls -ld /root
dr-xr-x---. 15 root root 4096 Aug 27 15:26 /root
[root@linuxprobe ~]# setfacl -Rm u:linuxprobe:rwx /root
[root@linuxprobe ~]# su - linuxprobe
Last login: Tue Sep  1 17:11:28 CST 2020 on pts/1
[linuxprobe@linuxprobe ~]$ cd /root
[linuxprobe@linuxprobe root]$ ls
anaconda-ks.cfg  Desktop    Downloads    initial-setup-ks.cfg  Pictures  Templates
demo.sh          Documents  findresults  Music                 Public    Videos
[linuxprobe@linuxprobe root]$ cat anaconda-ks.cfg 
[linuxprobe@linuxprobe root]$ exit
logout
[root@linuxprobe ~]# ls -ld /root
dr-xrwx---+ 15 root root 4096 Aug 27 15:26 /root

文件的权限最后一个点(.)变成了加号(+),这就意味着该文件已经设置了 ACL 了。

getfacl

getfacl 文件名称
getfacl 命令用于显示文件上设置的 ACL 信息

[root@linuxprobe ~]# getfacl /root
getfacl: Removing leading '/' from absolute path names
# file: root
# owner: root
# group: root
user::r-x
user:linuxprobe:rwx
group::r-x
mask::rwx
other::---

su

su-账户
su 命令用于切换用户身份,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户

[root@linuxprobe ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@linuxprobe ~]# su - linuxprobe
Last login: Wed Sep  2 01:45:13 CST 2020 on pts/1
[linuxprobe@linuxprobe ~]$ id
uid=7777(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

su命令与用户名之间有一个减号(-),这意味着完全彻底换到新用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。建议在切换用户身份时添加这个减号(-)。

sudo

sudo [参数] 命令名称
sudo 命令用于给普通用户提供额外的权限来完成原本 root 管理员才能完成的任务

参数作用
-h列出帮助信息
-l列出当前用户可执行的命令
-u 用户名或 UID 值以指定的用户身份执行命令
-k清空密码的有效时间,下次执行 sudo 时需要再次进行密码验证操作
-b在后台执行指定的命令
-p更改询问密码的提示语

总的来说,sudo 命令具有如下功能 :

  • 限制用户执行指定命令
  • 记录用户执行的每一条命令
  • 配置文件( /etc/sudoers )提供集中的用户管理、权限与主机等参数
  • 验证密码的后 5 分钟内(默认值)无须再让用户再次验证密码

如果担心直接修改配置文件出现问题,则可以使用 sudo 命令提供的 visudo 命令来配置用户权限。这条命令在配置用户权限时将禁止多个用户同时修改 sudoers 配置文件,还可以对配置文件内的参数进行语法检查,并在发现参数错误时进行报错。只有 root 管理员才可以使用 visudo 命令编辑 sudo 服务的配置文件。

visudo

在visudo命令下,操作方法与 Vim 编辑器中用到的方法一直,按照下面的格式将第99行(大概位置)填写上指定的信息:
谁可以使用  允许使用的主机=(以谁的身份) 可执行命令的列表
在这里插入图片描述
在这里插入图片描述

[root@linuxprobe ~]# visudo
[root@linuxprobe ~]# su - linuxprobe
Last login: Wed Sep  2 02:02:57 CST 2020 on pts/1
[linuxprobe@linuxprobe ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[linuxprobe@linuxprobe ~]$ sudo cat /etc/shadow
[sudo] password for linuxprobe: 
root:$6$yf5cSSI3ZUWDt0RC$/Qi7l7jApCzNTrpCWKXXoXvzXRA8EEFcG.h5eMopUYKLTasj0pJnWxjNTzlRVuD9lcF/FTDS/XIHfwRlJdHOP1:18485:0:99999:7:::
bin:*:16141:0:99999:7:::
...........部分内容省略...............

倘若添加 NOPASSWD 参数,这样用户每次执行 sudo 命令时就不再需要密码验证了。
在这里插入图片描述
参考书籍——Linux就该这么学

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值