Linux笔记

Linux

注:笔记中带有特殊标识,特殊标识仅为作者自己设立,起提醒作用

枫染:主要是标识额外的其他命令,或补充命令

幻舞:主要是标识命令的其他用法,多用法,或选项

寒星:主要是标识快捷方式和键盘操作

落霞:主要是标识其他操作或危险命令操作

1|0Linux用户

Linux的用户有三种:root 普通用户 系统用户

[root@localhost ~]#

root:用户名

localhost:主机名

~:指的是当前的宿主目录shell的用户的宿主目录--家目录home,每一个普通用户都会在/home文件夹下面自动生成自己的宿主目录,比如:普通用户tom在/home下就会生成宿主目录,目录名也叫tom

落霞

rm -rf x (删库跑路)

2|0Linux命令行

命令行由命令+选项+参数组成

(1)短选项:由一个连字符和一个字母构成,如-a选项。

(2)长选项:由两个连字符和一些大小写字母组合的单词构成,如— —help选项。

2|11,显示屏幕上的信息:echo命令

echo [选项] [字符串$ 变量名]

1|0(1)echo命令在屏幕上显示how are you

[root@localhost ~]# echo how are you how are you

1|0(2)显示HOME变量的值。

[root@localhost ~]# echo $HOME /root

说明:在变量名称前面加上”$“符号,表示提取出该变量的值

1|0(3)echo 命令显示用户交互的提示信息

[root@localhost ~]# echo -n "请输入密码:"; read passwd ; echo "密码是:" $passwd

说明:read命令用于读取用户在键盘输入的内容,将输入内容放到名为pswd的变量中。

两个命令之间的”;“表示先执行前面的命令,再执行后面的命令。

寒星

init 1 或ctrl+alt+F2:切换到命令模式

init 5 或 ctrl+alt+F1:切换到桌面图形化

Init 0 或 ctrl+alt+Del:关机

2|22,获取计算机和操作系统的信息:uname命令

[root@localhost ~]# uname -r #显示系统的内核版本号 [root@localhost ~]# uname -m #显示计算机硬件架构 [root@localhost ~]# uname -s #显示操作系统名称 [root@localhost ~]# uname -a #显示全部的信息

2|33,获取内存信息:free命令

[root@localhost ~]# free -b #以Byte为单位显示内存使用情况 [root@localhost ~]# free -k #以KB为单位显示内存使用情况 [root@localhost ~]# free -m #以MB为单位显示内存使用情况 [root@localhost ~]# free -g #以GB为单位显示内存使用情况 [root@localhost ~]# free -h #以合适的单位显示内存使用情况

2|44,显示和修改主机名:hostname,hostnamectl命令

显示当前计算机的主机名:

[root@localhost ~]# hostname Localhost.localhost

临时修改当前计算机的主机名为mycomputer

[root@localhost ~]# hostname mycomputer [root@localhost ~]# hostname mycomputer

寒星

键可以补全命令,连按2次键可以以列表的形式显示当前不完整命令行最后一个字母开头的当前目录下的所有文件

2|55,显示和设置系统日期,时间:data命令

用法:data [选项] [+“日期时间的显示格式”]

data的命令常用选项有:

-d <字符串>:根据字符串描述,显示指定日期时间(字符串要加上双单引号,并以+开头)

-s <字符串>:根据字符串的内容,设置系统日期时间

注意:要指定格式显示日期和时间,可以使用“+”开头的字符串对其格式化,用来格式化的常用日期和时间域,如:

%Y 4位数字表示年

%m 2位数字表示月

%d 2位数字表示日

%H 时(24小时制)

%M 分(00~59)

%S 秒(00~59)

%F 完整的日期格式,等价于%Y-%m-%d

%T 完整的时间格式,等价于%H:%M:%S

%A 星期(一日)

%s 从1970年1月1日0点整到当前时刻历经的秒数(时间戳)

%X 时分秒

%x 日期

%W 一年中的某个星期

%w 一星期中的某一天

%D = %m/%d/%y

%I 十二小时制

汐:更详细的data选项内容可以使用man命令(用法:main data)和- -help命令(用法:data --help)查看

2|66,文件操作

1|0(1)显示工作目录与更改工作目录:pwd,cd命令

使用pwd命令可以显示当前目录的绝对路径:

[root@localhost ~]# pwd
  • 完整路径(绝对路径):从 / 分区开始向下遍历,直达目标位置,所经历的所有文件夹加起来组成的目录

  • 相对路径:对当前某个路径遍历,不是从 / 分区开始遍历,是从 / 分区下面的某个路径开始遍历

当需要改变工作目录时,使用cd命令,该命令用于切换工作路径

格式:cd [目录名称]

注意:/mnt/a/b 中的的一个 / 表示根分区,第二个和第三个 / 表示文件分隔符,用来分隔上下级目录

cd命令中的特殊符号:

cd 返回用户家目录

cd ~ 切换至当前登录的家目录 (cd~=cd)

cd ~用户名 切换至指定用户名的家目录

cd - 切换至上次所在目录

cd .. 切换至上级目录,.. 代表上级目录,.代表工作目录

(值得一提的是:cd ..可以返回上级目录,cd .. / ..可以返回上上级目录)

枫染

file命令可以查看文件类型,文件类型中:

黑色字体表示的是可编辑文档,文本文件:Ascll text t:文档

青色字体表示的是链接文件:link l:链接

蓝色字体表示的是文件夹:directory d:目录

1|0(2) 显示文本文件:cat,tac,head,tail命令

cat命令主要用来显示文件,适合内容较少的文件。另外,还能够用来链接两个或多个文件,形成新的文件

格式:cat [选项] 文件名称

常用选项:

-n 由1开始对所有输出的行编号

-b 和-n选项相似,不过对空白行不编号

-s 将两行以上的连续空白行代换为一行

cat命令主要有三大功能:

【1】一次显示整个文件:cat filename

【2】从键盘创建一个文件:cat > filename,此方法只能创建新文件,不能编辑已有的文件,按Ctcl+D组合键结束输入。

【3】将几个文件合并为一个文件:cat file file2 > file

注意:tac命令是从尾到头显示,cat是从头到尾显示

head命令用于查看文本文件的前几行,默认显示文件的前10行,可以通过选项“-n”设置显示的行数

格式:head [选项] 文件名称

[root@localhost ~]# head -n 5 npass #显示npass文件的前5行

tail命令用于指定查看文本文件的最后几行,使用方法和head命令类似

格式:tail [选项] 文件名称

幻舞

如何在几行内容中截取想显示的行数?

[root@localhost ~]# head -n 10 /etc/passwd | tail -n 6

查看前10行里第5行至第10行的6行内容

1,.....................

2,.....................

3,.....................

4,.....................

5,.....................

6,.....................

7,.....................

8,.....................

9,.....................

10,.....................

[root@localhost ~]# tail -n 45 /etc/passwd/ | head -n 5

查看后10行里前面前5行的内容

36,.....................

37,.....................

38,.....................

39,.....................

40,.....................

41,.....................

42,.....................

43,.....................

44,.....................

45,.....................

幻舞

| 这个是管道符,用于把上一个指令的输出作为下一个指令的输入来执行

1|0(3) 文件内容统计:wc命令

wc命令用于对指定文件中的输出行,单词和字节进行计数。如果指定的是多个文件1,则结果中会显示总行数。如果没有指定文件或指定文件是 - ,则读取标准输入文件。

格式:wc [选项] 文本文件1 文本文件n

常用选项:

-c 表示统计文件的字节数 (c是英文单词charater)

-l 表示统计文件的行数 (l是英文单词line)

-w 表示统计文件的字数(以单词个数统计) (w是英文单词word)

枫染

历史命令:history命令

history命令可以显示之前使用过的命令列表

当需要执行历史命令时:

[root@localhost ~]# history ![number] #历史中使用过的命令会进行列表排列显示,![number]表示执行历史命令列表中第number号命令

就近相似原则:

[root@localhost ~]# history ![string] #执行历史命令列表中最近一次匹配的命令,string表示命令的首字母

清除历史命令列表:

[root@localhost ~]# history -c

寒星

vi文本编辑命令快捷键:

Ctrl+a 光标跳到命令行开头

Ctrl+e 光标跳到命令行结尾

Ctrl+u 当前光标跳到命令行的开头的所有内容删除

Ctrl+k 当前光标跳到命令行的结尾的所有内容删除

Ctrl+向左箭头 当前光标跳到前一条命令开头

Ctrl+向右箭头 当前光标跳到下一条命令结尾

Alt+Backspace 快速删除当前命令行

落霞

神秘操作之破解root密码:

在GRUB2菜单界面先按向下箭头,再按e
在linux行末尾加空格和rd.break,按ctrl+x,再输入mount -o remount,rw /sysroot #以读写的方式重新挂载/sysroot

再回车,输入chroot /sysroot

再回车,输入ls -a

再回车,输入passwd root

再输入新密码,回车确认后并再输入一次

再回车,输入touch /.autorelabel

再输入exit退出,退2次

最后等待.......

1|0(4) 创建目录:mkdir命令

格式:mkdir [-mp] 目录名

常见选项:

-m 手动配置所创建目录的权限,而不再使用默认权限

-p 递归创建所有目录

[root@localhost ~]# mkdir a #创建文件夹a [root@localhost ~]# mkdir -p a/b/c 创建多级文件夹

1|0(5) 创建空文件,修改文件时间:touch命令

格式:touch [选项] 文件名

[root@localhost ~]# touch file1 #创建文件 [root@localhost ~]# touch file2 file3 file4 #创建多个文件

1|0(6) 复制文件或目录:cp命令

格式:cp [选项] 源文件 目标文件

常用选项:

-p 保留原始文件的属性

-d 若对象为链接文件,则保留该链接文件的属性

-r 递归复制(用于目录) 【由浅到深,由内到外依次拷贝(带 -r 才能拷贝文件夹)】

-a 相当与-pdr(p,d,r为上述选项)

-i 若目标文件存在,则询问是否覆盖

-u 若目标文件比源文件有差异,则使用该选项可以更新目标文件

注意:cp命令对应的目标位置一定要是文件夹,文件夹才考虑递归

普通复制

[root@localhost ~]# cp a1 a2 #把a1里的内容完全复制到a2中

强制覆盖,即有同名的文件夹名时,系统会过问,直接覆盖掉旧文件

[root@localhost ~]# cp -rf a1 a2

强制覆盖,系统不会过问,并且可视化拷贝【可视化,即能看见拷贝的过程】

[root@localhost ~]# cp -rfv a1 a2

在Linux系统中,复制操作具体分为3中情况。

1,如果目标文件是目录,则会把源文件复制到该目录中。

2,如果目标文件也是普通文件,则会询问是否要覆盖它

(如果出现问题是否覆盖【over write】输入y 是确认的意思)

3,如果目录文件不存在,则执行正常的复制操作


寒星

Ctrl+c 可以强制中断拷贝过程

1|0(7) 移动文件或目录,重命名:mv命令

格式: mv [选项] 源文件 目标文件

常用选项:

-f 强制覆盖,如果目标文件已经存在,则不询问。直接强制覆盖

-i 交互移动,如果目标文件已经存在,则询问用户是否覆盖

-n 如果目标文件已存在,则不会覆盖移动,而且不询问用户

-v 显示文件或目录的移动过程

-i 若目标文件存在,则询问是否覆盖

-u 若目标文件已经存在,但两者相比,源文件更新,则会对目标文件进行升级

[root@localhost ~]# mv file1 file2 #将目录file1中的文件移动到目录file2中

1|0(8) 删除文件或目录:rmdir,rm命令

格式:rmdir [-p] 目录名

[root@localhost ~]# rmdir abc #删除空目录abc [root@localhost ~]# rmdir -p a1/a2/a3/a4 #删除递归目录a1/a2/a3/a4

格式:rm [选项] 文件或目录

rm的常用选项:

-f 强制删除,系统不给出提示信息

-i 在删除文件或目录之前,系统会给出提示信息,使用-i选项可以有效防止不小心删除有用文件或目录的情况发生

-r 递归删除,主要由于删除目录,可删除指定目录及包含所有子目录和文件

(具体用法与cp命令类似)

枫染

特殊创建命令:dd命令

dd命令用来创建一个大容量文件

格式: dd if=/dev/zero/ of=/test.file bs=1M count=100

[root@localhost ~]# dd if=/dev/zero/ of=[文件名] bs=[兆数] conut=[次数]

/dev/zero 代表什么也不写入,没有实际的数据,固定

sda 里面划分出200M的空间给test.file这个文件

2|77,通配符

..符号:省略

,符号:单个

通配符是一种特殊语句,主要有星号(*)和问号(?),当不知道真正的字符或者不想输入多个字符时,常常使用通配符代替一个或多个真正的字符

通配符:

* 代表任意数量的字符(包含0)*【匹配所有】*

? 代表任意一个字符*【匹配单个字符】*

[] 表示可以匹配字符组中的任意一个,例如,[abc]表示可以匹配a,b,c中的任意一个,[1-9]表示可以匹配[1-9]内的任意一个字符

[root@localhost ~]# cd /etc #切换到etc工作目录 [root@localhost ~]# ls *.conf # 查找/etc目录下所有以.conf结尾的文件,再查询该目录下文件名包含3个字符且以.conf结尾的文件

幻舞

其他通配符:

{} 大括号扩展,批量执行命令,可以连续使用或者嵌套使用

例子:

[root@localhost ~]# echo file {a{1,2},b,c}.log filea1.log file a2.log fileb.log filec.log [root@localhost ~]# echo file {a,b,c}{1,3}.log filea1.log filea2.log filea3.log fileb1.log fileb2.log fileb3.log filec1.log filec2.log filec3.log

`` 反引号命令替换,通常与echo配合使用

[root@localhost ~]# echo `data` #反引号实现echo 取data命令的结果

\ 反斜杠,转义字符

2|88,重定向

1|0(1) .标准输入/输出与重定向

Linux命令运行时,会打开3个文件:标准输入(stdin)文件,标准输出(stdout)文件和标准错误(stderr)。

一般情况下,命令从键盘(即标准输入文件)处接收输入内容并将产生的结果输出到终端(即标准输出文件)并在终端显示,如果出错,则输出到终端(即标准错误文件)中。

标准输入/输出
设备 设备名 文件描述符(通道编号值) 类型 符号表示
键盘 /dev/stdin 0 标准输入 < <<
显示器终端 /dev/stdout 1 标准输出 > >>
显示器终端 /dev/stderr 2 标准错误 2> 2>>
/dev/filename 3+ 其他文件

输出重定向:

“>”:重定向

“>>”:追加重定向

输出重定向是指不使用Linux系统默认的标准输出设备显示信息,而是指定某个文件作为标准输出设备来存储文件信息。输出重定向有两种用法,格式如下:

Command > 文件 或者command >> 文件

一般与echo命令一起使用:

[root@localhost ~]# echo ‘hello world’ >> text # 把hello world追加进text 文本文档中

注意:使用“>”符号时,表示文件的所有内容将被新内容替代,如果要将新内容添加在文件夹尾,则需使用“>>”符号

枫染

管道符与筛选符

| :管道符就是把前一步命令的输出作为后一步命令的输入,然后再输出到终端上

[root@localhost ~]# head /etc/passwd | grep -n ‘root’ /etc/passwd

把head命令默认查看/etc/passwd 文件的前10行内容的输出作为参数通过管道符传参给grep命令,通过grep命令查找这10行内有’root’的行,并且显示行数

注意:管道符前面有重定向符号时,管道符后面要加上一个tee命令

[root@localhost ~]# ls -l > |tee less

选项

grep:按照条件进行内的筛选和过滤

-n 查找特定字符,并显示行号

[root@localhost ~]#grep -n ‘root’ /etc/passwd

-v 反向选择,筛选出不包含特定字符的内容

[root@localhost ~]#grep -v ‘wheel’ /etc/groop

[] 利用中括号查找字符集合

[root@localhost ~]#grep -n ’sh[io]rt’ test.file

[io]只筛选单个匹配,不能同时匹配,也就是说,匹配有i的和有o的,不匹配有io的

^ 利用尖括号来进行字符过滤

[root@localhost ~]#grep -v ‘[^w][orl]d’ test.file

反向选择过滤掉含w,d和有orl三个字符组成的内容,例:wrld,wold,hello world的全过滤掉

2|99,管理文本文件

vim/vi编辑器:

在命令提示符下,输入“vim文件名”或“vim”。如果指定文件存在,则打开该文件,否则新建该文件;如果不指定文件名,则新建一个未知名的文本文件,保存时要指定文件名。

vim的4种工作模式:

(1)命令模式

使用vim编辑器编辑文件时,默认vim处于命令模式。在此模式下,按键将作为命令直接执行,可使用方向键(上,下,左,右键)或k,j,h,l键移动光标的位置,还可以对文件内容进行复制,粘贴,替换,删除等操作。

(2)插入模式

在插入模式下,按键将作为输入的内容或相应操作对文件执行写操作,编辑文件完成后,按

Esc键可返回命令模式。

(3)末行模式

末行模式用于对文件中的指定内容执行保存,查找和替换等操作。在命令模式下按“:”键。vim编辑器窗口的左下方出现一个“:”符号,即进入末行模式,在此模式下输入的命令,按Enter键后执行,执行完自动返回命令模式。

(4)可视模式

Ctrl+v进入可视模式,最后一行下面会出现标识

常用:Ctrl+v进入后用上下左右键去选中要操作的对象,删除选中的话用d。


插入命令:

a 在当前光标所在位置之后插入随后输入的文本

i 在当前光标所在位置插入随后输入的文本,光标后的文本应向右移动

o 在当前光标所在行的下面插入新的一行。光标停在空行的行首,等待输入文本

O 在当前光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本

A 在当前光标所在行的行尾插入随后输入的文本,相当光标移动到行尾再执行a命令

I 在当前光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符, 相当于光标移动到行首执行i命令


光标定位命令:

gg 移动到文件的第一行,相当于1G

G 移动到文件的最后一行

nG n为数字,移动到文件的第n行。例如:输入20G会移动到文件的第20行(可配 合:set nu)

Ctrl+f 屏幕向下移动一页,相当于Page Down键

Ctrl+b 屏幕向上移动一页,相当于Page Up键

Ctrl+d 屏幕向下移动半页

Ctrl+u 屏幕向上移动半页

h或向左箭头键 光标向左移动一个字符

j或向下箭头键 光标向下移动一个字符

k或向上箭头键 光标向上移动一个字符

l或向右箭头键 光标向右移动一个字符


编辑命令:

x,X 在一行字中,x为向右删除一个字符(相当与Del键),X为向前删除一个字符(相 当于Backspace退格键)

nx n为数字,连续向后删除n个字符。例如,要连续删除10个字符,输入10x

dd 删除光标所在的那一整行

ndd n为数字,删除光标所在行的向下n行,例如,20dd是删除20行

d1G 删除从光标所在到第一行的所有数据

dG 删除从光标所在行到最后一行的所有数据

yy 复制光标所在的那一行

nyy n为数字,复制光标处向下n行,例如,20yy是复制20行

p,P p为将已复制的数据粘贴到光标下一行,P为粘贴到光标上一行

u 撤销前一个动作


保存,退出等操作(末行模式下的操作)

:w 将编辑的数据写入硬盘文件中(保存)

:w! 文件属性为只读时,强制写入该档案。不过,到底能不能写入,还与用户对该文件 的权限有关(强制保存)

:q 退出vim编辑器(退出)

:q! 若曾修改过文件,又不想储存,则使用“!”强制退出而不储存文件。注意,惊叹 号(!)在vim编辑器当中常常具有强制的意思(强制退出且不保存输入或更改的 内容)

:wq 储存后离开(:wq相当于:x)

:wq! 储存后强制离开


查找于替换:

(1)命令模式下:

/ 查找字符串,从上至下

? 查找字符串,从下至上

n 向同一方向重复上次的查找指令

N 向相反方向重复上次的查找指定

r 替换光标所在位置的字符

R 从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文件内容,按Esc 键可以结束

组合:

/+n 正向寻找

/+N 逆向寻找


(2)末行模式下:

: / 从光标的位置向前查找字符串

: ? 从光标的位置向后查找字符串

: s/a1/a2/g 将当前光标所在行中的所有a1用a2替换

: %s/a1/a2/g 将整个文档中的所有a1替换为a2

: n1,n2/a1/a2/g" 将文件中的n1~n2行的所有a1都用a2替换
: noh 清除搜索


2|1010:管理用户和用户组

Linux系统用户账号分为三种:超级用户,系统用户和普通用户

超级用户:UID为0

系统用户:UID为1-999

普通用户:UID为1000-60000

1|01. /etc/passwd 文件

[root@localhost ~]#vim /etc/passwd

打开文件的每一行代表一个用户账号的基本信息,第一个用户为root用户。每一行用“:”作为分隔符,划分7个字段,每个字段表示的内容如下:

用户名:加密口令(密码):UID:GID:用户的描述信息(注释,可为空):主目录(宿主目录,一般是home):默认登录shell(命令环境)

passwd文件各字段的说明
字段 说明
用户名 用户账号名称
加密口令 该字段用“x”填充,真正的密码保存在/etc/shadow文件中
UID 用户编号
GID 用户组编号,该数字对应/etc/group文件中的GID
用户的描述信息 关于用户的描述性信息(注释)
主目录 关于用户的家目录,用户登录系统后默认的位置
默认登录shell 用户使用的shell,默认为“/bin/bash”(用户可以使用终端)/sbin/nologin则是不可以

1|02. /etc/shadow文件

/etc/passwd文件用于存储linux系统中的用户信息,但是为了系统的安全性,linux将/etc/passwd文件中的密码分离出来放在/etc/shadow文件中,并进行加密处理,该文件又称为影子文件。

[root@localhost ~]#vim /etc/shadow

shadow文件的每一行代表一个用户的密码信息,第一个用户为root用户。每一行用“:”作为分隔符,划分9个字段,每个字段表示的内容如下:

*用户名:加密口令:最后一次修改时间:最小修改时间间隔(密码最短使用期限):最大修改日期间隔(密码最长使用期限):密码过期警告天数:账户禁用宽限期(密码到期后还可以使用的时间):账号被禁用日期:保留字段(预留空白字段)

shadow文件各字段的说明
*字段* *说明*
用户名 用户账号名称
加密口令 加密后的用户口令,“*”表示非登录用户,“! !”表示没有设置密码,“!”表示密码被锁定
最后一次修改日期 1970年1月1日至上次修改密码后过去的天数
最小修改日期间隔 多上天后可以修改密码
最大修改日期间隔 多少天后必须修改密码
密码过期警告天数 密码过期前多少天提醒改密码
账户禁用宽限期 密码过期后多少天禁用用户账号
账号被禁用日期 1970年1月1日至账号被禁用的天数,若值为空,则永久使用
保留字段 用于功能扩展

1|03. /etc/group文件

组是具有相同特征用户的集合

默认情况下,新建用户的组名和用户名同名,GID与UID同号

/etc/group文件是系统的用户组配置文件,存储了系统中所有用户组的基本信息,分主要组和从属组两部分

[root@localhost ~]#vim /etc/group

group文件的每一行代表一个用户组的基本信息,第一个用户为root组。每一行用“:”作为分隔符,划分4个字段,每个字段表示的内容如下:

组名:组口令(组密码):GID:该用户组中的用户成员列表(从属组用户)

group文件个字段说明
字段 说明
组名 用户组名称
组口令 该字段用“x”填充,真正的组密码保存在/etc/shadow文件中
GID 用户组编号,用于唯一标识一个用户组
该用户中的用户成员列表 该用户组中含有的成员列表,成员之间用逗号隔开

例:小明 1000 小明 (小明是小明的主要组)

1001 小红 (小红是小明的从属组)

小红 1001 小红 (小红是小红的主要组)

1|04,/etc/gshadow文件

用户组密码信息同样是从/etc/group文件中分离出来地,经加密后地口令存放在/etc/gshadow文件中,该文件只允许root用户读取

[root@localhost ~]#vim /etc/gshadow

gshadow文件的每一行代表一个用户组的相关信息,第一个用户组为root。每一行用“:”作为分隔符,划分4个字段,每个字段表示的内容如下:

组名:组口令:组的管理员:该组中的用户成员列表

gshadow文件各字段的说明
字段 用户组名称
组口令 加密后的组口令
组的管理员 用户组编号,用于唯一标识一个用户组
该组的用户成员列表 该组中含有的成员列表,成员之间用逗号隔开

2|1111,管理用户账号

1|01,新建用户:useradd命令

创建用户账号就是在/etc/passwd文件中为新用户增加一条记录

[root@localhost ~]#useradd [选项] 用户名
选项 说明
-u UID 指定用户的UID(默认系统递增),不能重复,且大于1000
-g GID 指定用户所属初始组的名称或者GID
-G GID 指定用户所属附加组的名称或者GID
-p 制定用户加密的口令
-d目录 指定用户主目录,如果此目录不存在,则由系统自动创建
-e 日期 指定账号禁用日期,格式为YYYY-MM-DD
-f 设置账号过期多少天后,账户被禁用
-s 指定用户登录的shell,默认为/bin/bash

使用useradd命令添加用户时,系统执行了如下操作:

(1)修改/etc/passwd文件,添加用户名,UID,GID,登录shell等账号记录

(2)修改/etc/shadow文件,添加加密的密码字串,密码有效期等相关记录

(3)修改/etc/group,/etc/gshdow,添加与用户名同名的初始组记录

(4)为用户在/home目录下创建主目录,名称与用户名相同

(5)将模板目/etc/skel/下的文件复制到用户主目录下

枫染

id命令用于显示用户UID,所属组的GID和附加组的信息

ps -aux 查看系统进程信息(全部)并显示相关联的用户

ls -l 查看用户所有权

1|02,usermod命令

usermod命令用于修改用户的属性

[root@localhost ~]#usermod [选项] 用户名
选项 说明
-u UID 指定用户的UID(默认系统递增),不能·重复,且大于1000
-g GID 指定用户所属初始组的名称或者GID(指定主要组)
-G GID 指定用户所属附加组的名称或者GID(指定从属组)
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,创建主目录
-e 日期 指定账号禁用日期,格式为YYYY-MM-DD
-L 锁定用户,禁止其登录系统
-U 解锁用户,允许其登录系统
-s 修改用户的登录shell类型
-c 为用户添加注释

幻舞

将luna从属组加入到nancy主要组里:

命令:usermod -G nancy -u 3000 -c “staff” luna

1|03,删除用户:userdel命令

当不在使用某个用户时,可用userdel命令删除

[root@localhost ~]#userdel [-r] 用户名

注意:执行该命令时如果不加-r选项,则会在系统的所有与账户有关的文件中(/etc/passwd,/etc/shadow,/etc/group)将用户的信息全部删除

如果加-r选项执行该命令,则在删除用户账号的同时,将用户家目录及其下的所有文件和目录全部删除。

2|1212,管理用户组账户

1|01,新建用户组:groupadd命令

groupadd命令用于添加用户组

[root@localhost ~]#groupadd [选项] 用户组名称
选项 说明
-g 指定新建用户组的GID

1|02,维护用户组及其成员:groups,groupmod,gpasswd命令

(1)group命令

用于查询用户所在的组

[root@localhost ~]#groups

(2)groupmod命令

用于修改用户组的相关信息

[root@localhost ~]#groupmod [选项] 用户组名称
选项 说明
-g gid 指定要修改的GID(指定新的GID)
-n group-name 指定新用户的名称(指定新的组名)

(3)gpasswd命令

通过useradd命令添加用户时,会生成一个与用户名同名的用户组,这就是初始组。但如果需要将用户添加到附加组中,则需要用到gpasswd命令

[root@localhost ~]#gpasswd [选项] 用户名 用户组名称

注意:这个命令只有root用户和组管理员才能使用这个命令

选项 说明
-a 把用户加入到组中
-d 把用户从组中删除
-r 取消组的密码
-A 给组指派管理员

1|03,删除用户组:groupdel命令

当不在使用某个用户组时,可以使用groupdel命令删除用户组

[root@localhost ~]#groupdel 用户组名称

注意:使用groupdel命令删除用户组,实际上是将/etc/group和/etc/gshadow文件中有关用户组的行删除,如果使用groupdel命令删除的是用户的初始组,则会提示“不能移除用户‘XXXX’的主组”。如果一定要删除该用户组,可以先删除用户。

枫染

1,分配明文密码

命令:echo “000000” | passwd --stdin luna (给luna用户分配明文密码)

2,使用chage命令设置账户到期时间

chage选项:

-d 设置最后修改密码的时间,以距离1970年1月1日开始

-E 设置密码到期时间

-i 设置密码到期还能使用的时间

-m 设置密码最短使用时间

-W 设置密码警告日期(一般是7天)

-M 设置密码最长使用时间

2|1313,管理权限与所有者

在Linux系统中马,有三种类型的用户可以访问文件或目录:文件所有者,同组用户,其他用户

(1)文件所有者:即文件的创建者

(2)同组用户:与文件所有者在同一个组的用户

(3)其他用户:其他组用户


文件和目录的访问权限
权限 文件 目录
读(r) 可以读取文件的内容 可以读取目录内容列表
写(w) 可以打开并修改文件的内容 可以在目录中添加和删除文件
执行(x) 可以将文件作为程序运行 表示是否可以进入此目录

1|01,查看下一级目录中的文件/目录用户所有权信息:ll命令(ls -l命令)

[root@localhost ~]#ll

结果:总用量 ...

-rwxr-xr-x. 1 root root .... .... ....

-rwxr--r--. 1 root root .... .... ....

-rw-r--r--. 1 root root ..... .... .....

drwxr-xr-x. 2 root root .... ..... .....

(1) 第一个字符(红色)表示文件的类型,具体取值如下:

d: 表示该文件是一个目录。

-: 表示该文件是一个普通文件。

l: 表示该文件是一个符号链接文件。

b: 表示该文件是一个区块设备,是一种特殊类型的文件。

(2) 其余9个字符表示文件的基本访问权限,每3个字符为一组,分别是文件所有者权限,同组用户权限和其他用户权限。一般为r,w,x的组合。但是如果没有相应的权限,则用“-”代替。

1|02. 管理文件和目录的基本权限

2.1字符设定法:chmod命令:修改文件/目录的用户访问权限

[root@localhost ~]#chmod [选项] [符号] [权限] [文件名]

(1)常用选项

u:表示用户(user),即文件或目录的所有者

g:表示同组(group)用户,即与文件所有者有相同组ID的所有用户

o:表示其他(others)用户

a:表示所有(all)用户

(2)常用符号

+:添加某个权限

-:取消某个权限

=:赋予给定权限并取消其他所有权限(如果有的话)

(3)常用权限

r:表示有读权限

w:表示有写权限

x:表示有执行的权限

2.2数字设定法

[root@localhost ~]#chmod [选项] [文件]

常用选项:

0:表示没有权限 对应:-

1:表示执行权限 对应:x

2:表示写权限 对应:w

4:表示读权限 对应:r

例如:-rw-r--r--:644 drwxr-xr-x:755

注意:先有读的权限才能有写或者执行的权限,就算给文件赋予了x的权限,但在没有r权限情况下,其他用户对这个文件也没有执行的权限。

1|03,设置文件和目录的特殊权限,chmod命令

(1)SUID

SUID(setuid)可以让一般使用者临时具有可执行权限

为文件设置SUID权限,可以使用chmod命令的字符设定法实现

[root@localhost ~]#chmod u+s [文件名称] #为所属用户设置SUID权限

使用chmod命令的数字设定法实现,由于基本权限需要使用3个八进制数,因此SUID权限也是用八进制数字4表示,且放在基本权限的前面

[root@localhost ~]#chmod 4[基本权限] [文件名称]

注意: 如果文件所有者原本的权限时rw-,被赋予SUID特殊权限后“-”将要变成大写的S

S表示这地方是一个空权限,然后可以在这个地方再去加s或x权限的,S(s-x,不是 x-x)

1|04,更改文件和目录的所有者:chown命令

chown命令可以修改文件,目录的用户所有权

[root@localhost ~]#chown [-R] 属组[.属组] [文件名]

注意:

(1)-R:递归设置权限,也就是为子目录中的所有文件设置权限,把文件夹与它里面所有文件权限改为与文件夹的权限一样

(2)所有者和所属组中间可以使用点(.)

例子:

chown tom:luna test.file

(将test.file文件里的root所属用户和root所属组改为tom所属用户,luna所属组)

chown root test.file

(只改所属用户的名称)

chown :root test.file

(只改所属组的名称)

若改完权限后想以其他用户身份删除root用户创建的某个文件,需要在执行删除命令前加上sudo以此提高执行权限,需要输入当前用户的密码。

枫染

更改主机名

[root@localhost ~]#hostnamectl set-hostname [新主机名] [root@localhost ~]#bash [root@[新主机名] ~]#

__EOF__

本文作者SkyRainmom
本文链接https://www.cnblogs.com/skyrainmom/p/17357090.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   SkyRainmom  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示