首页 > 代码库 > Linux课程第三天学习笔记
Linux课程第三天学习笔记
####################2.vim####################
1)vim命令模式
在vim的命令模式下可以配置vim的工作方式
:set nu ##添加行号
:set nonu ##取消行号
:set mouse=a ##添加鼠标选择
:set cursorline ##显示行线
以上设定都是临时的,永久的设定方式如下:
vim /etc/vimrc ##此文件为vim的配置文件,在此文件最后加入以上参数。加入参数将默认生效,不需要使用“:”
注意:编辑"/etc/vimrc"这个文件时,不要随意改动里面的内容,否则可能导致vim出问题
####################
vim是全球两大文本编辑器之一
vim有很多参数,自行百度搜索vim用法
####################
2)vim命令模式下关键字搜索
/关键字 ##查找关键字
n向下匹配
N向上匹配
3)vim命令模式下字符的管理
1>字符的复制
yl ##复制一个字符
y3l ##复制3个字符
yw ##复制一个单词
y3w ##复制3个单词
yy ##复制一行
y3y ##复制3行
y3[上键|下键] ##向上|向下复制4(n+1)行
p ##粘贴,在当前光标所在位置之后插入复制的内容
P ##粘贴,在当前光标所在位置之前插入复制的内容
u ##恢复到未操作之前
ctrl + r ##恢复到操作之后
2>字符的删除
dl ##删除一个字母
d3l ##删除3个字母
dw ##删除一个单词
d3w ##删除3个单词
dd ##删除一行
d3d ##删除3行
d3[上键|下键] ##向上|向下删除4(n+1)行
注意:实验发现删除也是剪切,只是不进入插入模式。删除后可以按"p"或"P"进行粘贴
3>字符的剪切
cl ##剪切一个字母
c3l ##剪切3个字母
cw ##剪切一个单词
c3w ##剪切3个单词
cc ##剪切一行
c3c ##剪切3行
d3[上键|下键] ##向上|向下剪切4(n+1)行
esc --> p ##剪切过后会进入到插入模式,在执行粘贴动作时,要先按"esc"退出插入模式
4)vim的可视化模式
在命令模式下按“ctrl+v”进入到可视模式
在可视模式下可以使用“上下左右”键,区域选择字符
可视模式下批量添加字符
*>> ctrl+v 选中要加入字符所在列
*>> 按“I”进入插入模式,写入要加入的字符
*>> 按esc
可视模式下批量删除字符
*>> ctrl+v 选中要删除字符所在区域
*>> 按“delete”删除选中区域
5)vim批量修改字符
:%s/原有字符/替换后字符 ##只替换每一行中出现的第一个原有字符
:%s/原有字符/替换后字符/g ##替换所有
:%s/\t//g ##把全文的tab键替去掉,"\t"表示tab键
:%s/^\ *//g ##把全文行首的空格去掉,"^ *"表示行首的若干空格
:%s/^ *//g效果一样
:%s/^\#\ */#/g ##把全文以#开头后的空格去掉
:%s/^# */#/g效果一样
:%s/\#//g ##删除全文的"#"
:%s/#//g效果一样
:%s/\ //g ##删除全文所有的空格
:%s/ //g效果一样
:%s/^\ \#\ */#/g ##将“[空格]#[若干空格]”替换为"#"
:%s/^ # */#/g效果一样
注意:实验发现" "和"#"不需要加"\"
"%" ##表示全文,不加%指当前行
"^" ##以什么为开头
"\" ##转译字符,比如"t",不加"\"系统会识别为字符"t"
"*" ##表示若干个,包括没有
"/g" ##不加"/g"表示只操作每行第一个,加"/g"表示全部操作
####################
man sed ##sed是一种流编辑器
####################
6)vim的分屏功能
ctrl+w s ##上下分屏
ctrl+w v ##左右分屏
ctrl+w c ##关闭光标所在屏幕
ctrl+w 上|下|左|右 ##光标移动到指定屏幕
####################
分屏后每屏都可以分别保存
vimdiff file1 file2 ##使用vim编辑器比较两个文件的差异
####################
7)vim光标移动
在命令模式下
:help ##查看vim的用法,":q"退出帮助
:数字 ##移动到指定的行
G ##文件最后一行
gg ##文件第一行
在插入模式下
i ##光标所在位置插入
I ##光标所在行行首插入
a ##光标所在字符的下一位插入
A ##光标所在行行尾插入
o ##光标所在行下一行插入
O ##光标所在行上一行插入
s ##删除光标所在字符插入
S ##删除光标所在行插入
####################
以下为自己实验:
"Y"表示复制整行
"D"表示从光标处剪切到行尾
"C"表示从光标处剪切到行尾,并且进入插入模式
"x"表示删除当前字符
"X"表示向左删除一个字符
"r"表示替换这个字符
"R"表示进入替换模式
"J"把行末回车变成空格
"h"表示以字符为单位向左移动
"l"表示以字符为单位向右移动
"b"和"B"表示以单词为单位向左移动,光标停留在下一个单词的第一个字符上
"e"表示以单词为单位向右移动,光标停留在下一个单词的最后一个字符上
"w"表示以单词为单位向右移动,光标停留在下一个单词的第一个字符上
"k"表示跳转到上一行相同的位置
"j"表示跳转到下一行相同的位置
"H"表示跳转到当前页面的第一行的第一个有效字符上
"L"表示跳转到当前页面的最后一行的第一个有效字符上
"zz"表示把所在行放置在屏幕中间
"K"表示man [当前字符]
"ZZ"强制保存退出
####################
8)vim的退出模式
:q ##当用vim打开文件但没有对字符作任何操作时可直接退出
:q! ##当用vim打开文件并对字符作操作,放弃所有操作退出
:wq ##保存退出
:wq! ##强行保存退出,对超级用户及文件所有人生效
使用"wq!"的前提条件是:这个文件必须是你自己的,或者你是超级用户
9)vim手册
vimtutor ##vim的帮助手册
:q ##退出vimtutor
####################3.gedit####################
ctrl+n ##在gedit中打开一个新的tab
ctrl+s ##保存文件
ctrl+o ##打开文件
ctrl+x ##剪切字符
ctrl+v ##粘贴字符
ctrl+c ##复制字符
yelp help:gedit ##gedit的图形帮助手册
######################
###### 第五单元 ######
######################
####################1.用户理解####################
用户就是系统使用者的身份
在系统中用户存储为若干窜字符+若干个系统配置文件
用户信息涉及到的系统配置文件:
/etc/passwd ##用户信息
用户:密码:uid:gid:说明:家目录:用户使用的shell
/etc/shadow ##用户认证信息
用户:密码:最后一次密码修改该时间:最短有效期:最长有效期:警告期:非活跃期:帐号到期日
/etc/group ##组信息
组名称:组密码:组id:附加组成员
/etc/gshadow ##组认证信息
/home/username ##用户家目录
/etc/skel/.* ##用户骨架文件
####################
[root@localhost Desktop]# vim /etc/passwd
------------------------------------------------------------
在最下面添加:
westos:x:8888:8888:Westos User:/home/westos:/bin/bash
:wq
------------------------------------------------------------
[root@localhost Desktop]# id westos
uid=8888(westos) gid=8888 groups=8888
[root@localhost Desktop]# su - westos
su: warning: cannot change directory to /home/westos: No such file or directory
id: cannot find name for group ID 8888
mkdir: cannot create directory ‘/home/westos‘: Permission denied
-bash-4.2$ whoami
westos
-bash-4.2$ pwd
/root/Desktop
-bash-4.2$ exit
logout
[root@localhost Desktop]# mkdir /home/westos
[root@localhost Desktop]# su - westos
Last login: Mon Oct 10 22:02:48 EDT 2016 on pts/0
id: cannot find name for group ID 8888
mkdir: cannot create directory ‘/home/westos/.cache‘: Permission denied
-bash-4.2$ logout
[root@localhost Desktop]# ll -d /home/westos
drwxr-xr-x. 2 root root 6 Oct 10 22:42 /home/westos
[root@localhost Desktop]# chown westos.westos /home/westos/
chown: invalid user: ‘westos.westos’
[root@localhost Desktop]# vim /etc/group
------------------------------------------------------------
在最下面添加:
westos:x:8888:
:wq
------------------------------------------------------------
[root@localhost Desktop]# chown westos.westos /home/westos/
[root@localhost Desktop]# ll -d /home/westos
drwxr-xr-x. 2 westos westos 6 Oct 10 23:18 /home/westos
[root@localhost Desktop]# ls -a /home/westos
. ..
[root@localhost Desktop]# su - westos
Last login: Mon Oct 10 22:05:39 EDT 2016 on pts/0
-bash-4.2$ pwd
/home/westos
-bash-4.2$ ls -a
. .. .cache .config
-bash-4.2$ logout
[root@localhost Desktop]# ls -a /home/westos
. .. .bash_history .cache .config
[root@localhost Desktop]# ls -a /etc/skel/
. .. .bash_logout .bash_profile .bashrc .config .mozilla
[root@localhost Desktop]# cp /etc/skel/.* /home/westos
cp: omitting directory ‘/etc/skel/.’
cp: omitting directory ‘/etc/skel/..’
cp: omitting directory ‘/etc/skel/.config’
cp: omitting directory ‘/etc/skel/.mozilla’
[root@localhost Desktop]# ls -a /home/westos/
. .. .bash_history .bash_logout .bash_profile .bashrc .cache .config
[root@localhost Desktop]# su - westos
Last login: Mon Oct 10 22:10:53 EDT 2016 on pts/0
[westos@localhost ~]$ logout
[root@localhost Desktop]# passwd westos
Changing password for user westos.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost Desktop]#
####################
####################
/etc/login.defs是设置用户帐号限制的文件,该文件里的配置对root用户无效
如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准
也就是说/etc/shadow的配置优先级高于/etc/login.defs
####################
####################2.用户管理####################
1)用户建立
useradd 参数 用户名字
-u ##指定用户uid
-g ##指定用户初始组信息,这个组必须已经存在
-G ##指定附加组,这个组必须存在
-c ##用户说明
-d ##用户家目录
-s ##用户所使用的shell,/etc/shells记录了用户能使用shell的名字
一般情况下uid和gid是一样的
新建的用户不能登陆系统,因为它只有用户的身份,没有认证。需要添加用户认证信息,即设置密码
####################
[root@localhost Desktop]# useradd -d /mnt/test test
[root@localhost Desktop]# ll /mnt
total 0
drwx------. 2 test test 6 Oct 11 03:23 test
####################
####################
[root@localhost Desktop]# useradd -s /bin/sh test
[root@localhost Desktop]# su - test
Last failed login: Tue Oct 11 02:19:58 EDT 2016 on pts/0
There were 6 failed login attempts since the last successful login.
-sh-4.2$ ps
PID TTY TIME CMD
31220 pts/0 00:00:00 sh ##使用的shell是sh
31263 pts/0 00:00:00 ps
####################
####################
[root@localhost Desktop]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
注意:其中"/sbin/nologin"和"/usr/sbin/nologin"是不可交互,系统自己使用
####################
2)用户删除
userdel -r 用户名字
-r表示删除用户信息及用户的系统配置
####################
[root@localhost Desktop]# useradd test
[root@localhost Desktop]# userdel test
[root@localhost Desktop]# useradd test
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
[root@localhost Desktop]# userdel -r test
[root@localhost Desktop]# useradd test
[root@localhost Desktop]#
不加"-r",会有残留文件
####################
3)组的建立
groupadd -g ##建立组
groupdel 组名字 ##删除组,前提是这个组下面没有用户
####################
[root@localhost Desktop]# groupadd -g 1001 test
[root@localhost Desktop]# useradd -G 1001 test
useradd: group test exists - if you want to add this user to that group, use -g.
##新建组名是"test",新建用户名也是"test"。"test"被认为是初始组,不能指定为附加组
[root@localhost Desktop]# useradd -g 1001 test
##test指定1001为初始组成功
[root@localhost Desktop]# useradd -G 1001 test1成功
##test1指定1001为附加组成功
####################
4)用户id信息查看
id 参数 用户
-u ##用户uid
-g ##用户初始组id
-G ##用户所有所在组id
-n ##显示名称而不是id数字
-a ##显示所有信息
####################
[root@localhost Desktop]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
##"context"表示安全上下文
[root@localhost Desktop]# id -u
0
[root@localhost Desktop]# id -g
0
[root@localhost Desktop]# id -G
0
[root@localhost Desktop]# id -n ##无法显示
id: cannot print only names or real IDs in default format
[root@localhost Desktop]# id -un
root
[root@localhost Desktop]# id -gn
root
[root@localhost Desktop]# id -Gn ##必须跟"-un"或"-gn"或"-Gn"
root
[root@localhost Desktop]# id -a
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
####################
5)用户信息更改
usermod 参数 用户
-l ##更改用户名称
-u ##更改uid
-g ##更改gid
-G ##更改附加组
-aG ##添加附加组
-c ##更改说明
-d ##更改家目录指定
-md ##更改家目录指定及家目录名称
-s ##更改shell
-L ##冻结帐号
-U ##解锁
passwd -l和usermod -L的区别:锁定的强度不一样(没密码要先设定密码)
输入一次"passwd -l",加两个!
输入一次"usermod -L",加一个!
再输入一次"usermod -L",再加一个!
也就是说输入两次"usermod -L"的效果,等于输入一次"passwd -l"
查看方法:vim /etc/shadow
做以上实验的监控命令:
watch -n 1 ‘tail -n 3 /etc/passwd /etc/group /etc/shadow ; echo ===== ; ls -l /home ;echo ===== ; ls -l /mnt‘
####################
[root@localhost Desktop]# usermod -c " " test
[root@localhost Desktop]# tail -n 1 /etc/passwd
test:x:1001:1001: :/home/test:/bin/bash
[root@localhost Desktop]# usermod -d /home/westos test
[root@localhost Desktop]# tail -n 1 /etc/passwd
test:x:1001:1001: :/home/westos:/bin/bash ##已改变
[root@localhost Desktop]# ls /home/
student test ##未改变
[root@localhost Desktop]# usermod -d /home/test test
[root@localhost Desktop]# usermod -md /home/westos test
[root@localhost Desktop]# tail -n 1 /etc/passwd
test:x:1001:1001: :/home/westos:/bin/bash ##已改变
[root@localhost Desktop]# ls /home/
student westos ##已改变
[root@localhost Desktop]# usermod -md /mnt/westos test
[root@localhost Desktop]# tail -n 1 /etc/passwd
test:x:1001:1001: :/mnt/westos:/bin/bash ##已改变
[root@localhost Desktop]# ls /home/
student
[root@localhost Desktop]# ls /mnt/
westos ##已改变
[root@localhost Desktop]# userdel -r test
[root@localhost Desktop]# useradd test
[root@localhost Desktop]# passwd -S test
test LK 2016-10-10 0 99999 7 -1 (Password locked.)
[root@localhost Desktop]# passwd -u test
Unlocking password for user test.
passwd: Warning: unlocked password would be empty.
passwd: Unsafe operation (use -f to force)
[root@localhost Desktop]# passwd -uf test ##"passwd -uf"可以强制解锁
Unlocking password for user test.
passwd: Success
[root@localhost Desktop]# passwd -S test
test NP 2016-10-10 0 99999 7 -1 (Empty password.) ##强制解锁后,密码为空。可直接登陆
[root@localhost Desktop]# useradd westos
[root@localhost Desktop]# passwd -S westos
westos LK 2016-10-10 0 99999 7 -1 (Password locked.)
[root@localhost Desktop]# tail -n 1 /etc/shadow
westos:!!:17085:0:99999:7:::
[root@localhost Desktop]# usermod -U westos
[root@localhost Desktop]# passwd -S westos
westos LK 2016-10-10 0 99999 7 -1 (Password locked.)
[root@localhost Desktop]# tail -n 1 /etc/shadow
westos:!:17085:0:99999:7::: ##"!!"变成"!"
[root@localhost Desktop]# usermod -U westos
usermod: unlocking the user‘s password would result in a passwordless account.
You should set a password with usermod -p to unlock this user‘s password.
####################
####################
ctrl+a ##光标移动到行首
ctrl+e ##光标移动到行尾
####################
####################
[root@foundation50 Desktop]# pwd
/root/Desktop
[root@foundation50 Desktop]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
[root@foundation50 Desktop]# su - kiosk
Last login: Tue Oct 11 09:00:28 CST 2016 on :0
[kiosk@foundation50 ~]$ pwd ##位置变化
/home/kiosk
[kiosk@foundation50 ~]$ echo $PATH ##环境变量变化
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/kiosk/.local/bin:/home/kiosk/bin
[kiosk@foundation50 ~]$ exit
logout
[root@foundation50 Desktop]# su kiosk
[kiosk@foundation50 Desktop]$ pwd ##位置没变化
/root/Desktop
[kiosk@foundation50 Desktop]$ echo $PATH ##环境变量没变化
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
echo $PATH查看用户可执行的命令
su - kiosk ##切换用户及用户环境变量
su kiosk ##用户环境变量没有变化
####################
####################3.用户权力下放####################
1.在系统中超级用户可以下放普通用户不能执行的操作给普通用户
下放权力配置文件:/etc/sudoers
2.下放权力的方法
*)超级用户执行visudo进入编辑/etc/sudoers模式
*)格式:
获得权限用户 主机名称=(获得到的用户身份) 命令
test desktop0.example.com=(root) /usr/sbin/useradd
test用户能在desktop0.example.com以超级用户身份执行/usr/sbin/useradd
注意:建议写在99行的位置
3.执行下放权限命令
sudo 命令 ##如果第一次执行sudo需要输入当前用户密码
在/etc/sudoers中如果设置如下:
test desktop0.example.com=(root) NOPASSWD: /usr/sbin/useradd
表示用户调用sudo命令的时候不需要自己密码
####################
[root@localhost Desktop]# visudo
------------------------------------------------------------
99 test localhost=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel
:wq
------------------------------------------------------------
[root@localhost Desktop]# su - test
Last login: Tue Oct 11 04:59:42 EDT 2016 on pts/0
[test@localhost ~]$ sudo useradd linux
[test@localhost ~]$ sudo userdel -r linux
####################
############################
####4.用户认证信息的控制####
############################
chage 参数 用户
-d ##用户密码组后一次修改的时间,如果设定成0,用户登陆系统后必须修改自己的密码
-m ##最短有效期
-M ##最长有效期
-W ##警告期
-I ##用户非活跃天数
-E ##帐号到期日格式 -E "YYYY-MM-DD"
####################
[root@localhost Desktop]# useradd hello
[root@localhost Desktop]# echo 123 | passwd --stdin hello ##设定hello用户的密码为123
Changing password for user hello.
passwd: all authentication tokens updated successfully.
[root@localhost Desktop]# su - student
Last login: Tue Oct 11 04:14:16 EDT 2016 on pts/1
[student@localhost ~]$ su - hello
Password:
Last login: Tue Oct 11 05:08:23 EDT 2016 on pts/0
####################
####################
[root@localhost Desktop]# chage -E 20170101 hello
[root@localhost Desktop]# tail -n 1 /etc/shadow
hello:$6$rVfvEiRc$tnQEF.cgq81jH6XwwhbRq/CnAd7Vl1LNHmPwi/Qa4tsrW/bSrt0NjGsZ4G20stroR7hce.hmum/Z.qUftx9RV.:17085:0:99999:7::20170101:
####################
本文出自 “施超Linux学习笔记” 博客,谢绝转载!
Linux课程第三天学习笔记