文本编辑命令
重定向:
改变文件描述符输出结构的位置
> 覆盖输出重定向
>> 覆盖输出重定向
2> 错误输出重定向
2>> 错误输出追加重定向
&> 无论对错都重定向
< 输入重定向
<< 输入追加重定向
<< eof eof为输入休止符
练习1:[root@bojie yang]# cat << eof >>a.txt --将输入的信息定向给a.txt文档
>yangbaojie
>eof
[root@bojie yang]# cat a.txt --查看文档的时候需要显示文档格式
vi/vim文本编辑器
vi/vim 有三种模式:
1.编辑模式
2.末行模式 保存退出 wq
3.命令模式
vi编辑模式:
进入文件方式:vi 文件名 ---没有文件的话自动创建
[root@bojie /]vi test
i 在光标前插入
I 在行首插入
a 在光标后插入
A 在行尾插入
o 在光标所在的下一行插入
O 在光标所在的上一行插入
u 撤销
【ESC】 退出编辑模式
vi命令模式
-- 光标的移动
可以使用上下左右箭头
h 向左移动
j 向下移动
k 向上移动
l 向右移动
【shift】+6 快速移动到行首 即(^)
【shift】+4 快速移动到行尾 即($)
-- 删除 d
x 删除光标所在位置的符号
X 删除光标前面的一个字符
d 删除
dw 在单词中删除光标到单词末尾的内容
d$ 删除从当前字符直到行尾
d 删除从当前字符直到行尾
dd 删除一整行
3dd 删除三行,删除从当前开始的三行
-- 复制 y
y ? ?
yw 复制一个单词
yy 复制一整行
4yy 复制从当前行开始的四行
--粘贴 p
p:
y与p在一起使用的时候相当于实现复制粘贴的功能;
d与p在一起使用的时候相当于实现剪切粘贴的功能;
--撤销 u
u 撤销
vi末行模式
【shift】+【:】 进入到末行模式
【shift】+【:】+set nu 显示行号
【shift】+【:】+set nonu 取消显示行号
【shift】+【:】+q! 不保存修改内容,强制退出
【shift】+【:】+q 不保存退出
shift】+【:】+wq 保存退出
用户管理
(1) 用户是什么
用户是用来操作系统中不同功能的身份;
windows里的管理员是administrator
(2) linux中的用户分类
1. root: 超级用户 uid:0
2. 系统用户 uid:1-500
bin --系统命令的属主
daemon --进程,无特权系统软件的属主
nobody --普通的nfs用户
3. 普通用户
超级用户能创建的用户
用户管理命令:
useradd/adduser 添加用户
usermod 修改用户属性
userdel 删除用户
id 查看用户信息
mod 修改 ---modify
del 删除 ---delete
passwd 设置用户密码 --PASSWORD
注意:1. 当我们创建一个用户时,系统自身会创建一系列的命令和文档。
我们删除用户的时候,这些命令和文档不一定删除干净!
所以不能创建以往存在过的用户,即使已经删除了
2. 添加用户的操作需要用ROOT用户来添加 --ROOT超级用户
例句:[root@bojie ~]# useradd bojie --创建用户BOJIE
[root@bojie ~]# id bojie --查看用户bojie信息
UID=502(BOJIE) GID=502(BOJIE) GROUPS=502(BOJIE) 说明:UID 用户标识,当UID=0时 表示的是超级用户
GID 表示当前用户所属组的ID --GROUP ID
GROUPS 表示当前用户所属组的信息
*** 如果添加用户时不指定用户的所有者和所属组,那么系统会创建一个和用户
同名的所有者和所有组。
1) 添加用户
语法格式: [root@bojie /]# useradd 选项 参数... 用户名
选项:
-u 定义用户的uid --如果没有指定gid,那么默认gid会是你创建的
上一个组的gid顺延值
-C (注释) 描述信息 --COMMENT
-d 用户的主目录
/ROOT: 是用户ROOT的主目录
/HOME: 默认情况下是普通用户主目录所在处
如果创建用户时没有加-D选项指定家目录,那么它的家目录就是/HOME
下和用户名同名的一个目录。例如:/HOME/BoJie
-g 指定用户的所属组,表示用户属于的用户组
在指定的时候可以用ID或者组的名字。有一个前提,就是这个组必须存在
-G 指定用户的附属组,表示用户除了属于所属组外,还属于的其他组
在指定的时候可以用ID或者组的名字。有一个前提,就是这个组必须存在
-S 指定用户的登录SHELL
注意:组是必须存在的
创建用户的时候,系统就已经隐形创建名为用户名的组了,
如果用户没有所属组和附加组的话,其自身就是所属组和附加组;
例如 [root@BoJie ~]# id baojieyang
uid=515(baojieyang) gid=515(baojieyang) groups=515(baojieyang)
用户 所属组 附加组
例句1:[root@BoJie ~]# useradd -G 500 mengqiu
[root@BoJie ~]# id mengqiu
uid=504(mengqiu) gid=504(mengqiu)groups=504(mengqiu),500(niulang)
例句2:[root@BoJie ~]# useradd -G 500 lulu
[root@BoJie ~]# id lulu
uid=505(lulu) gid=505(lulu) groups=505(lulu),500(niulang)
查看:在/etc 目录下的passwd 文档中可以查看到用户信息
[root@bojie etc]# tail -3 passwd
yangbaojie : x : 503 : 503 : :/home/yangbaojie :/bin/bash
mengqiu : x : 504 : 504 : :/home/mengqiu :/bin/bash
lulu : x : 505 : 505 : :/home/lulu :/bin/bash
用户 :密码 :uid : gid : 描述信息 :家目录 :登录的shell
一个用户有且只有一个主组,但是可以属于多个组,其他为附属主
2) 删除用户
语法格式: [root@bojie /]# userdel 用户名
例句: [root@BoJie ~]# userdel yangbaojie
查看: [root@BoJie ~]# id yangbaojie ---此时用户属性看不到了
id: yangbaojie: No such user
[[root@BoJie etc]# tail passwd
---此时在password文件中也看不到用户属性信息了
niulang:x:500:500::/home/niulang:/bin/bash
liudan:x:501:501::/home/liudan:/bin/bash
BoJie:x:502:502::/home/BoJie:/bin/bash
mengqiu:x:504:504::/home/mengqiu:/bin/bash
lulu:x:505:505::/home/lulu:/bin/bash
[root@BoJie ~]# useradd yangbaojie
--当重新创建用户的时,报错原因是:之前有创建过用户信息,
Creating mailbox file: File exists
--系统在其他文件中已经有了当时的信息所以在此创建的时候创建不上
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
-r:递归删除,会同时删除用户的所属组
**例句:创建用户gaozhuang,所属组为lulu,递归删除gaozhuang
[root@BoJie ~]# useradd -g lulu gaozhuang
-创建用户gaozhuang,所属组为lulu
[root@BoJie ~]# id lulu
uid=505(lulu) gid=505(lulu) groups=505(lulu),500(niulang) -查看lulu ID
[root@BoJie ~]# id gaozhuang
uid=507(gaozhuang) gid=505(lulu) groups=505(lulu)
3) 修改用户
语法格式: [root@bojie /]# usermod 选项 参数 用户名
选项:
-d 修改用户家目录
-g 修改用户的所属组
-G 修改用户的附属组,不管你原来的附属组是什么
-a -G 为用户追加附属组 ---aG
例句1:
在家目录下创建用户class2,class3,
[root@BoJie ~]# useradd class3
[root@BoJie ~]# id class2
uid=509(class2) gid=509(class2) groups=509(class2)
[root@BoJie ~]# useradd class3
[root@BoJie ~]# id class3
uid=510(class3) gid=510(class3) groups=510(class3)
在根目录下创建用户class4,stu4,
[root@BoJie ~]# useradd -d /root stu4
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
[root@BoJie ~]# id stu4
uid=512(stu4) gid=512(stu4) groups=512(stu4)
在class3下创建stu3,附属组为class2,
[root@BoJie ~]# useradd -g class3 -G class2 stu3
[root@BoJie ~]# id stu3
uid=511(stu3) gid=510(class3) groups=510(class3),509(class2)
用户 所属组 附属组:第一个为所属组,后面的是附属组
/*[root@BoJie ~]# tail -5 /etc/passwd
stu:x:508:508::/root:/bin/bash
class2:x:509:509::/home/class2:/bin/bash
class3:x:510:510::/home/class3:/bin/bash
stu3:x:511:510::/home/stu3:/bin/bash
stu4:x:512:512::/root:/bin/bash*/
第一个:将用户stu4的基目录改为home
[root@BoJie ~]# usermod -d /home/class2 stu4
[root@BoJie ~]# tail -1 /etc/passwd
stu4:x:512:512::/home/class2:/bin/bash
第二个:将用户stu4的所属组改为class3
[root@BoJie ~]# usermod -g class3 stu4
[root@BoJie ~]# id stu4
uid=512(stu4) gid=510(class3) groups=510(class3)
第三个:将用户stu4的附属组设定为class2
[root@BoJie ~]# usermod -G class2 stu4
[root@BoJie ~]# id stu4
uid=512(stu4) gid=510(class3) groups=510(class3),509(class2)
注意:如果你原来没有设置附属组,直接将-G后面的组加到附属组里
如果你原来设置附属组,则修改附属组,主组不受影响
例句2:为stu4追加附属组class5
[root@BoJie ~]# usermod -a -G class5 stu4
[root@BoJie ~]# id stu4
uid=512(stu4) gid=510(class3) groups=510(class3),509(class2),513(class5)
(4) 设置用户密码
语法格式:[root@BoJie ~]# passwd 用户名
[root@BoJie ~]# passwd class3
Changing password for user class3.
New UNIX password: ---输入密码的时候是隐形的
BAD PASSWORD: it is WAY too short
Retype new UNIX password: ---重复输入密码,隐形的
passwd: all authentication tokens updated successfully. 密码设置成功
组管理
理解:组在系统里的位置:/etc/group 其格式是一个普通文档
-rw-r--r-- 1 root root 951 Sep 4 21:34 group
基本命令:
groupadd 添加组
groupmod 修改组
groupdel 删除组
gpasswd 设置密码
(1)添加组
语法格式:[root@BoJie /]# group 选项 参数 组名
选项:
-g 指定组的gid
---如果没有指定gid,那么默认gid会是你创建的上一个组的gid顺延值
例句1:[root@BoJie /]# groupadd baojie ---查看group文档
[root@BoJie /]# tail -2 /etc/group
jklio:x:517:
baojie:x:518:
例句2:[root@BoJie /]# groupadd -g 2333 bo
--自定义gid的组 gid=2333 gid建议指定500以上的,500以下的可能系统已经用了
[root@BoJie /]# tail -2 /etc/group
baojie:x:518:
--由此可知baojie组的gid为518,如果组bo没有自定义的话,系统应该延续顺延519
bo:x:2333:
(2)删除组
语法格式:[root@BoJie /]# groupdel 组名
注意:可以删除用户的附属组,不能删除用户的主组
例句: [root@BoJie /]# useradd gr1
---创建用户gr1和用户gr2,由于没哟制定所属表,
[root@BoJie /]# useradd gr2
[root@BoJie /]# id gr1
uid=516(gr1) gid=2336(gr1) groups=2336(gr1)
---系统自动建立一个与用户名相同的表作为其主表
[root@BoJie /]# id gr2
uid=517(gr2) gid=2337(gr2) groups=2337(gr2)
[root@BoJie /]# tail -2 /etc/group
---我们可以在group文档中看到系统自动为用户创建的所属组
gr1:x:2336:
gr2:x:2337:
[root@BoJie /]# groupdel gr2
groupdel: cannot remove user‘s primary group.
---由于组gr2是用户gr2的所属组,所以不能删除
[root@BoJie /]# usermod -g gr1 gr2
---此时将组gr1定义为用户gr2的所属组
[root@BoJie /]# id gr2
uid=517(gr2) gid=2336(gr1) groups=2336(gr1)
[root@BoJie /]# groupdel gr2
---删除用户gr2的附属组gr2
[root@BoJie /]# id gr2
uid=517(gr2) gid=2336(gr1) groups=2336(gr1)
1.切换用户
su 用户名 这种是不完全切换
su -用户名 这种是完全切换
2.显示哪些用户正在在登录系统 在做什么 w
[root@BoJie /]# w
22:38:26 up 8:04, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 - 14:34 ?xdm? 13.40s 0.03s /usr/bin/gnome-session
root pts/1 10.10.10.1 14:35 0.00s 0.09s 0.00s w
3.显示当前用户的首要组
[root@BoJie /]# groups
root bin daemon sys adm disk wheel
4.显示用户的登录情况
[root@BoJie /]# last
5.所有用户最后一次登录系统的时间
[root@BoJie /]# lastlog
6.读取环境变量的文件
~/.bash_profile
每个用户都可以使用该文件输入自己使用的shell信息,
当用户登录时,只读取一次
7.查看文件类型 FILE 文件名
[root@BoJie BoJie]# file test
test: ASCII text
权限管理
LINUX里的文件和目录都是有一定的访问许可权限的
查询etc目录中内容的详细属性
[root@BoJie /]# ll etc --查看etc目录中内容的属性
- rw- r-- r-- 1 root root 2441 Sep 4 22:24 passwd
(1)解 析:
1 链接数
第一个root 是文件的所有者
第二个root 是文件的所属组
2441 是件的大小
Sep 4 22:24 文件的最后修改时间
passwd 文件名
LINUX下文件的类型
-: 普通文件
d: 目录文件
c: 字符设备
[root@huaxiajinling dev]# ll /dev/vcsa8
crw------- 1 vcsa tty 7, 136 sep 4 15:06 /dev/vcsa8
b: 块设备 一般是硬盘设备
[root@huaxiajinling dev]# ll /dev/sda
brw-r----- 1 root disk 8, 0 sep 4 2018 /dev/sda
l: 连接文件
对于文件来说:
1. 用户分类如下
u 文件的所有者
g 文件所属组
o 其他人
a 所有人(u,g,o)
- rw- r-- r--
u g o
2. 权限的基本类型
r 读权限 read
w 写权限 write
x 执行权限 execute
(2)权限的设置
chown 修改文件的所有者或所属组 ---chang ower
1.只修改文件的所有者
[root@BoJie yang]# chown BoJie mima
[root@BoJie yang]# ll
total 4
-rw-r--r-- 1 BoJie root 2441 Sep 4 23:28 mima
2.只改变文件的所属组
[root@BoJie yang]# chown .BoJie mima
[root@BoJie yang]# ll
total 8
-rw-r--r-- 1 BoJie BoJie 2441 Sep 4 23:28 mima
3.同时修改文件的所有者和所属组
[root@BoJie yang]# chown BoJie.BoJie mima
[root@BoJie yang]# ls
mima tst
[root@BoJie yang]# ll
total 8
-rw-r--r-- 1 BoJie BoJie 2441 Sep 4 23:28 mima
4.递归修改文件和目录的所有人和所属组 -R
文件和空目录修改一致的,当目录里有文件的时候用—R全部修改,
当没有-r 的时候里面的不变
[root@BoJie yang]# chown -R BoJie.BoJie bo
[root@BoJie yang]# ll
total 12
drwxr-xr-x 2 BoJie BoJie 4096 Sep 4 23:37 bo
-rw-r--r-- 1 BoJie BoJie 2441 Sep 4 23:28 mima
-rw-r--r-- 1 BoJie BoJie 23 Sep 4 23:31 tst
[root@BoJie yang]# cd bo
[root@BoJie bo]# ll
total 4
-rw-r--r-- 1 BoJie BoJie 14 Sep 4 23:37 women
chmod 修改文件和目录的读写权限 --change mode
语法格式:chmod [u,g,o,a][+-=][rwx] 文件名
等值授权=
[root@huaxiajinling huaxiajinling]# chmod u=r a
[root@huaxiajinling huaxiajinling]# ll
total 12
-r--r--r-- 1 z2 z1 6 Sep 4 17:11 a
增值授权+
[root@huaxiajinling huaxiajinling]# chmod g+w a
[root@huaxiajinling huaxiajinling]# ll
total 12
-r--rw-r-- 1 z2 z1 6 Sep 4 17:11 a
减值授权-
[root@huaxiajinling huaxiajinling]# chmod o-r a
[root@huaxiajinling huaxiajinling]# ll
total 12
-r--rw---- 1 z2 z1 6 Sep 4 17:11 a
同时授权 a
[root@huaxiajinling huaxiajinling]# chmod a+x a
[root@huaxiajinling huaxiajinling]# ll
total 12
-r-xrwx--x 1 z2 z1 6 Sep 4 17:11 a
数字权限
常用的一种方式,权限对应的数字
r -- 4
w -- 2
x -- 1
- 是 0
[root@huaxiajinling huaxiajinling]# chmod 640 a
[root@huaxiajinling huaxiajinling]# ll
total 12
-rw-r----- 1 z2 z1 6 Sep 4 17:11 a