vi/vim文本编辑器和用户管理(2016.1.9第三周linux课程笔记)

1.文本编辑器
vi和vim:
1、vim是vi升级版,现在基本上linux操作系统都自带vim编辑器
2、vim类似于windows下的txt,是linux下不可缺少的工具

3、vim具有程序编辑能力,识别语法的功能,用不同颜色标记

vi/vim文本编辑器和用户管理(2016.1.9第三周linux课程笔记)

vim编辑器的三种模式:命令行模式、底行模式(末行模式)、插入模式(编辑模式)
a.命令行模式:
yy:复制光标所在那一行
nyy:复制n行(包括光标所在行)
p:粘贴在光标所在行的下一行
P:粘贴在光标所在行的上一行
G:光标快速移动到文件的最后一行
gg:光标快速移动到文件的首行
ngg:快速跳到文件的第n行
dd:删除光标所在行
ndd:删除n行(包含光标所在行)
u:撤销
ctrl+r:恢复上一次撤销
home键 或 ^ 或者 shift+6:    快速跳到光标所在行的行首
end键 或$ 或 shift+4:        快速跳到光标所在行的行尾

b.编辑模式:
命令行模式——>编辑模式:
i:在光标所在字符的前面插入内容
I:在光标所在行的行首插入
o:在光标所在行的下一行插入内容
O:在光标所在行的上一行插入内容
a:在光标所在字符的后面插入
A:在光标所在行的行尾插入内容
r:替换光标所在的字符
R:从光标所在字符一直往后替换

c.底行模式(末行模式):
编辑模式——>底行模式:按“Esc”(退出到命令行模式)——>按“:(冒号)”(进入到底行模式)

:set nu 临时显示行号
vim /etc/vimrc  永久生效(只要用vim工具打开文件都会显示行号)
...
插入”set number“

:w 保存不退出
:q 退出不保存
:wq 保存退出
:q!|wq!  强制退出|强制保存退出

:%s/root/hello  替换每一行第一次出现的关键字(root)
:%s/root/hello/g  全文搜索替换(替换所有出现的关键字)
:%s/root/hello/gc  全文搜索询问式替换
:8s/halt/888/g  在第8行搜索halt,替换成888
当所匹配的关键字里有特殊符时:
:%s#/sbin/nologin#/bin/bash#g  自定义分割符
:%s/\/bin\/bash/\/sbin\/nologin/g  进行转义

:w /tmp/abc  另存为其他地方
:1,5w /tmp/111 保存文件的1到5行到另外的地方
:10,15d 删除10到15行
:r /etc/fstab  读取另外的文件内容
:e! 回退到文件最后一次保存的状态

总结:
vim filename(命令行模式)[yy/p/P/dd/u]——>编辑模式(i/I/o/O/a/A)——>按“Esc”(退出到命令行模式)——>按“:”进入底行模式(w/q/wq/搜索替换/e!)

练习一:
1、将/etc/passwd文件拷贝到/tmp下面。修改/tmp/passwd文件,在第15行下添加“hello uplooking”,并且复制其下面5行,粘贴在文件的最下面,保存;然后全文搜索将"/sbin/nologin"替换橙uplooking,保存后面20行到/tmp/passwd.bak,退出编辑。

答案:

cp /etc/passwd /tmp

vim /tmp/passwd
15gg    输入hello uplooking
5yy  o   复制光标下5行
G       光标到最后一行
:w       保存
 p      粘贴复制内容
%s#/sbin/nologin#uplooking#g    全文搜索将"/sbin/nologin"替换橙uplooking
:20,39w /tmp/passd.bak         保存后面20行到/tmp/passwd.bak

:wq        保存退出

2、查找/etc下面所有的目录,并将其重定向到/tmp/etcdir文件中。

答案:
find /etc -type d > /tmp/etcdir

3、在/tmp/etcdir文件中追加“好好学习,天天向上”,然后把/etc/passwd文件的内容添加到/tmp/etcdir文件中,并重命名为newetcdir。

答案:

echo "好好学习,天天向上" >> /tmp/etcdir

vim /tmp/etcdir    进入vim命令行模式
G      光标到最后一行
:r /etc/passwd     进入底行模式,读取/etc/passwd内容添加到/tmp/etcdir文件中

:w  /tmp/newetcdir     保存文件,并重命名为newetcdir

用户及组管理:

系统按照用户分类:
 单用户单任务系统:系统只有一个用户,并且该用户只能运行一个任务。MS-dos
 单用户多任务系统:可以同时运行多个任务,安卓小型智能设备
 多用户多任务:类unix操作系统。可能有一个管理员用户(root),管理其他人并且拥有最大权限。

redhat 6.5:
系统按照用户分类:
 管理员:root 拥有最高权限 uid=0 上帝
 程序用户(服务用户):1<=uid<=499 一般是有程序建立,用于程序所运行时的身份。一般不允许登录操作系统。(/sbin/nologin)
 普通用户:500<=uid<60000 一般是由管理员用命令创建的,做一些简单的维护操作。oracle。一般是可以登录操作系统。(/bin/bash)
 
用户管理:
1、图形化去创建用户
# system-config-users
2、用命令创建用户
useradd username
id username 查看用户的简单信息

[[email protected] ~]# passwd user02
Changing password for user user02.
New password:
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

注意:root可以给任何用户修改密码,并且不管密码是否否和安全规范;普通用户只能自己更改自己的密码,并且密码要符合安全规范。

[[email protected] ~]# echo 123 |passwd --stdin user02
Changing password for user user02.
passwd: all authentication tokens updated successfully.
[[email protected] ~]# tail -2 /etc/passwd
user01:x:500:500::/home/user01:/bin/bash
user02:x:501:501::/home/user02:/bin/bash

useradd:
参数:
-d:指定用户的家目录
-s:指定用户的默认shell
-u:指定用户的uid
-g:指定用户的gid
-G:指定用户的附加组

-c:对用户的描述说明

创建一个自定义的用户:

useradd -d /rhome/test -s /sbin/nologin -c "自定义用户解释性的" -u 1001 -g 1001 user03

前提:
 /rhome/test 必须存在
 -g 1001 组也必须存在
注意:
自定义的家目录不完整时需要拷贝相应的文件到新的家里

# cp -a /etc/skel/. /rhome/test/

usermod命令:修改用户的信息
参数:
-d:指定用户的家目录
-s:指定用户的默认shell
-u:指定用户的uid
-g:指定用户的gid
-G:指定用户的附加组

-c:对用户的描述说明

usermod -s /bin/bash user03
usermod -m -d /rhome/uplook/aaa user05   

-m:移动用户的家目录及家具,需要和-d参数一起使用

useradd -d /rhome/uplook/bb user01
/rhome/uplook/bb目录可以不存在,但是上一级目录必须存在
usermod -d /rhome/uplook/cc user01
/rhome/uplook/cc目录必须存在
usermod -m -d /rhome/uplook/dd user02
/rhome/uplook/dd可以不存在

删除用户:
userdel username  删除用户
userdel -r username  删除用户的同时回收系统给的家

根用户组信息相关的配置文件
1、/etc/passwd  存放用户的信息
2、/etc/shadow  存放用户的密码信息
3、/etc/group   存放组信息

/etc/passwd
man 5 passwd
account:password:UID:GID:GECOS:directory:shell
用户名:密码:uid:组id:描述说明:家目录:默认shell

/bin/bash:可以登录操作系统(交互式shell)
/sbin/nologin:不可以登录操作系统(非交互式shell)

/etc/shadow
man 5 shadow

login name: 用户名
encrypted password:加密过后的密码 !!代表空密码
date of last password change:最后一次更改密码的时间,单位是天
# date --date='1970-01-01 +16808day'
如果是0:代表该用户下一次登录操作系统必须强制更改密码
minimum password age:密码的最小生存周期 0代表立刻马上更改密码;3代表3天以后才能够更改密码
maximum password age:30代表每隔30天更改密码;99999代表永久不需要更改
password warning period:密码过期多少天提前发出警告,默认是7天
password inactivity period:密码的宽限期 3代表密码过期后3天以内还可以登录操作系统
account expiration date:帐号的过期时间  
reserved field:保留,未被使用

chage --help:

Options:
  -d, --lastday LAST_DAY        set date of last password change to LAST_DAY(设置日期LAST_DAY最后密码更改)
  -E, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE(设置账户有效期EXPIRE_DATE)
  -h, --help                    display this help message and exit
  -I, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -l, --list                    show account aging information
  -m, --mindays MIN_DAYS        set minimum number of days before password(设置密码之前最大的天数)
                                change to MIN_DAYS
  -M, --maxdays MAX_DAYS        set maximim number of days before password(设置密码之前最大的天数)
                                change to MAX_DAYS
  -W, --warndays WARN_DAYS      set expiration warning days to WARN_DAYS

# chage -l user05  查看用户的帐号信息
Last password change                    : Jan 09, 2016
Password expires                    : never
Password inactive                    : never
Account expires                        : never
Minimum number of days between password change        : 0
Maximum number of days between password change        : 99999
Number of days of warning before password expires    : 7

# chage -d 0 user05  让user05用户登录操作系统强制修改密码

/etc/group
man 5 group

group_name:passwd:GID:user_list
组名:密码:组id:用户列表

groupadd groupname
groupadd -g 3334 groupname

groupdel groupname
# groupdel admin
groupdel: cannot remove the primary group of user 'user06'
注意:不能删除属于系统任一用户的主组

gpasswd:
Options:
  -a, --add USER                add USER to GROUP
  -d, --delete USER             remove USER from GROUP
  -r, --remove-password         remove the GROUP's password
  -R, --restrict                restrict access to GROUP to its members
  -M, --members USER,...        set the list of members of GROUP
  -A, --administrators ADMIN,...

# gpasswd -a user01 admin  往admin组里添加一个用户
# gpasswd -M user02,user03 admin  批量添加用户到admin组
# gpasswd -A user03 admin  设置user03为admin组的管理员
# gpasswd admin   给admin组设置密码
$ newgrp admin    临时切换到admin组

exit 退出当前目录

练习二:
1、建立组admin,组id为900
groupadd admin -g 900
2、建立一个用户tom,并且admin组作为tom用户的附加组(要求在建立用户时完成),密码为123
useradd -G admin tom
passwd tom
或者
echo 123 |passwd --stdin tom
3、建立一个用户jack,要求在建立用户之后使用gpasswd把jack用户加入到admin,密码为123
[[email protected] ~]# useradd jack
[[email protected] ~]# gpasswd -a jack admin
Adding user jack to group admin
echo 123 |passwd --stdin jack

4、给admin组设定一个密码为redhat
gpasswd admin
su - user01
newgrp admin  
输入密码

5、把tom用户设定为admin组的管理员
[[email protected] ~]# gpasswd -A tom admin
[[email protected] ~]# su - tom
[[email protected] ~]$ gpasswd -a user01 admin
Adding user user01 to group admin

练习三:

1、添加3个用户harry、natasha、sarsha,要求harry、natasha用户的附加组为admin,sarsha用户的登录shell为非交互式shell,三个用户的密码均为123.

答案:

useradd -G admin harry
useradd -G admin natasha
useradd -s /sbin/nologin sarsha
echo 123 |passwd --stdin harry
echo 123 |passwd --stdin natasha
echo 123 |passwd --stdin sarsha

2、修改harry用户的家目录为/home/uplook/redhat/harry

答案:

mkdir /home/uplook/redhat
usermod -m -d /home/uplook/redhat/harry harry
或者
mkdir /home/uplook/redhat/harry
usermod -d /home/uplook/redhat/harry harry
cp -a /etc/skel/. /home/uplook/redhat/harry

3、修改natasha、sarsha用户的主组为admin,并且可以登录操作系统

usermod -g admin natasha
usermod -g admin -s /bin/bash sarsha

练习四:
1、新建一个公司为uplooking,3个部门为cw、rs、sc;每个部门建立2个用户,如cw01,cw02以此类推。boss管理公司所有部门,所有用户的密码均为123.
创建4个组:uplooking、cw、rs、sc
创建7个用户:cw01、cw02、rs01、rs02、sc01、sc02、boss

[[email protected] home]# groupadd uplooking
[[email protected] home]# groupadd cw
[[email protected] home]# groupadd rs
[[email protected] home]# groupadd sc
[[email protected] home]# useradd cw01 -G cw -g uplooking
[[email protected] home]# id cw01
uid=506(cw01) gid=901(uplooking) groups=901(uplooking),902(cw)
[[email protected] home]# useradd boss -g uplooking -G cw,rs,sc
[[email protected] home]# id boss
uid=507(boss) gid=901(uplooking) groups=901(uplooking),902(cw),903(rs),904(sc)
echo 123 |passwd --stdin cw01
...

2、所有用户的帐号有效期为3个月(90天),第一次登录操作系统强制修改密码,每隔15天更新一次密码

# date +%F --date='90 day'
2016-04-08

chage -E '2016-04-08' -d 0 -M 15 cw01
其他用户以此类推。。
[[email protected] home]# chage -l cw01
Last password change                    : password must be changed
Password expires                    : password must be changed
Password inactive                    : password must be changed
Account expires                        : Apr 08, 2016
Minimum number of days between password change        : 0
Maximum number of days between password change        : 15
Number of days of warning before password expires    : 7

未经允许不得转载:好玩吧 » vi/vim文本编辑器和用户管理(2016.1.9第三周linux课程笔记)