1.文本编辑器
vi和vim:
1、vim是vi升级版,现在基本上linux操作系统都自带vim编辑器
2、vim类似于windows下的txt,是linux下不可缺少的工具
3、vim具有程序编辑能力,识别语法的功能,用不同颜色标记
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 查看用户的简单信息
[root@node1 ~]# 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可以给任何用户修改密码,并且不管密码是否否和安全规范;普通用户只能自己更改自己的密码,并且密码要符合安全规范。
[root@node1 ~]# echo 123 |passwd --stdin user02 Changing password for user user02. passwd: all authentication tokens updated successfully. [root@node1 ~]# 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
[root@node1 ~]# useradd jack
[root@node1 ~]# 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组的管理员
[root@node1 ~]# gpasswd -A tom admin
[root@node1 ~]# su – tom
[tom@node1 ~]$ 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
[root@node1 home]# groupadd uplooking
[root@node1 home]# groupadd cw
[root@node1 home]# groupadd rs
[root@node1 home]# groupadd sc
[root@node1 home]# useradd cw01 -G cw -g uplooking
[root@node1 home]# id cw01
uid=506(cw01) gid=901(uplooking) groups=901(uplooking),902(cw)
[root@node1 home]# useradd boss -g uplooking -G cw,rs,sc
[root@node1 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-08chage -E ‘2016-04-08’ -d 0 -M 15 cw01
其他用户以此类推。。
[root@node1 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
应该加分呀