vim
# 首先你先得下载这个插件
yum install -y vim
vim 文件名
进入编辑模式
i #在光标所在处进入编辑模式
a #在当前光标后面进入编辑模式
o #在光标的下一行进入编辑模式
I #在光标所在处行首进入编辑模式
A #在光标所在处行尾进入编辑模式
O #在光标的上一行进入编辑模式
# 从编辑模式进入命令模式:ESC
命令模式
光标定位键盘:
0 $ #行首行尾
gg #页首--文本顶端
G(shift+g) #页尾--文本底部
3G #进入第三行
/string #查找字符,n下一个,N上一个 (n N 可以循环的)
文本编辑模式
yy #复制
3yy #从光标开始复制3行。在最后粘贴
ygg #从当前光标复制到页首
yG #从光标开始复制到页尾
dd #删除一行
3dd #从光标开始删除3行
dgg #从光标开始删除到页首
dG #从光标开始删除到页尾
d^ #删除当前光标之前的内容
p #粘贴到本行的下一行
大P #粘贴到本行的上一行
x #删除光标所在的字符
D #从光标处删除到行尾
u #undo撤销
r #可以用来修改一个字符
扩展命令模式
shift+: #进入尾行模式(扩展命令模式)
:10 #进入第10行
:w #保存
:q #退出
:wq #保存并退出
:q! #不保存并退出
:wq! 强制保存退出
进入其他模式
ctrl+v #进入可视块模式
shift+v #进入可视行模式
查找替换
语法----> :范围 s/old/new/选项
:s/world/nice/ #替换当前光标所在行
:3s/sbin/nice/ #替换指定行
:1,5 s/nologin/soso/ #从1-5行的nologin 替换为soso
:%s/bin/soso/ #替换所有行
:%s/sbin/nice/g #替换行内所有关键字
注释:%表示替换所有行 g表示行内所有关键字
将文件另存(另存为)
语法----> :w 存储到当前文件
:w /tmp/aaa.txt #另存为/tmp/aaa.txt
:1,3 w /tmp/2.txt #从1-3行的内容另存为/tmp/2.txt
设置环境 好吧,我承认这个我也不会用,所以说,要好好学须,这么多东西,还不够让你卷的?
:set nu #设置行号
:set list #显示控制字符
:set nonu #取消设置行号
vi命令相对来说没vim好用了
时间类型
访问时间:atime,查看内容 access
修改时间:mtime,修改内容 modify
改变时间:ctime,文件属性,比如权限,mv改名 change
查询示例
[root@qfedu ~]# ls -l passwd
-rw-r--r--. 1 root root 839 Oct 31 21:29 passwd
[root@qfedu ~]# stat passwd
File: ‘passwd’ # 文件名
Size: 839 #文件大小,单位是字节 Blocks: 8 # 表示文件占用的磁盘块数量。IO Block: 4096 表示磁盘读写的最小单位,通常为4KB。 regular file
Device: fd00h/64768d Inode: 33583688 Links: 1 # 表示文件所在的设备号。
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) # 表示文件的访问权限和时间戳。
Context: unconfined_u:object_r:admin_home_t:s0 # 表示文件的安全上下文。
Access: 2019-10-31 21:29:40.750993492 +0800 # 访问时间
Modify: 2019-10-31 21:29:36.449993550 +0800 # 修改时间
Change: 2019-10-31 21:29:36.452993550 +0800 # 创建时间
Birth: -
ls -l 文件名 仅看的是文件的修改时间
用户/组的基本概念
Users and groups:
系统上的每个进程(运行的程序)都是作为特定用户运行的
. Every file is owned by a particular user.
每个文件是由一个特定的用户拥有 .
. Access to files and directories are restricted by user.
访问文件和目录受到用户的限制
用户组
groupadd 组名 # 创建一个组
-g:指定新建工作组的id;
-r:创建系统工作组,系统工作组的组ID小于500;
-K:覆盖配置文件“/etc/login.defs”;
-o:允许添加组ID号不唯一的工作组
groupdel 组名 # 删除一个组
groupmod # 这个暂时还不会用呢
-g<群组识别码>:设置欲使用的群组识别码;
-o:重复使用群组识别码;
-n<新群组名称>:设置欲使用的群组名称。
用户
useradd user01 //创建用户
/etc/passwd ---->查看账户是否存在的文件
/home/ ---->用户的家目录,每创建一个用户会在/ho\me目录下面创建对应的家目录
/etc/shadow --->用户的密码文件
/var/mail/ ---->系统邮箱
/etc/group ---->同名组
useradd 的一些选项
-b, --base-dir BASE_DIR # 如果未指定 -d HOME_DIR,则系统的默认基本目录。如果未指定此选项,useradd 将使用 /etc/default/useradd 中的 HOME 变量指定的基本目录,或默认使用 /home。
-c, --comment COMMENT # 加上备注文字。任何文本字符串。它通常是对登录名的简短描述,目前用作用户全名的字段。
-d, --home HOME_DIR # 将使用 HOME_DIR 作为用户登录目录的值来创建新用户。
-D, --defaults # 变更预设值。
-e, --expiredate EXPIRE_DATE # 用户帐户将被禁用的日期。 日期以 YYYY-MM-DD 格式指定。
-f, --inactive INACTIVE # 密码过期后到帐户被永久禁用的天数。
-g, --gid GROUP # 用户初始登录组的组名或编号。组名必须存在。组号必须引用已经存在的组。
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]] # 用户也是其成员的补充组列表。每个组用逗号隔开,中间没有空格。
-h, --help # 显示帮助信息并退出。
-k, --skel SKEL_DIR # 骨架目录,其中包含要在用户的主目录中复制的文件和目录,当主目录由 useradd 创建时。
-K, --key KEY=VALUE # 覆盖 /etc/login.defs 默认值(UID_MIN、UID_MAX、UMASK、PASS_MAX_DAYS 等)。
-l, --no-log-init # 不要将用户添加到 lastlog 和 faillog 数据库。
-m, --create-home # 如果用户的主目录不存在,则创建它。
-M # 不要创建用户的主目录,即使 /etc/login.defs (CREATE_HOME) 中的系统范围设置设置为 yes。
-N, --no-user-group # 不要创建与用户同名的组,而是将用户添加到由 -g 选项或 /etc/default/useradd 中的 GROUP 变量指定的组中。
-o, --non-unique # 允许创建具有重复(非唯一)UID 的用户帐户。 此选项仅在与 -o 选项结合使用时有效。
-p, --password PASSWORD # crypt(3) 返回的加密密码。 默认是禁用密码。
-r, --system # 创建一个系统帐户。
-s, --shell SHELL # 用户登录 shell 的名称。
-u, --uid UID # 用户 ID 的数值。
-U, --user-group # 创建一个与用户同名的组,并将用户添加到该组。
-Z, --selinux-user SEUSER # 用户登录的 SELinux 用户。 默认情况下将此字段留空,这会导致系统选择默认的 SELinux 用户。
# 更改默认值
# 当仅使用 -D 选项调用时,useradd 将显示当前默认值。 当使用 -D 和其他选项调用时,useradd 将更新指定选项的默认值。 有效的默认更改选项是:
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
分隔符::
第一列:用户名
第二列:密码
第三列:用户标识号--->(uid)是一个整数,系统内部用它来标识用户。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号
第四列:gid
第五列:描述信息。
第六列:家目录
第七列:是用户登陆到界面的第一个命令,开启一个shell。登陆shell
查看用户是否存在
1.判断用户是否存在:
id user01 //查看用户的uid、gid、和所在组
uid=1001(user01) gid=1003(user01) groups=1003(user01)
主组 附属组
uid 系统用来识别账户的user identify
gid 系统用来识别组的group identify
2.查看现在所使用的的账户:
whoami 查看我现在所使用的账户
who
w
创建用户
useradd user02 -u 503 #指定uid为503
useradd user05 -s /sbin/nologin #创建用户并指定shell
useradd user07 -G it,fd #创建用户,指定附加组
useradd user10 -u 4000 -s /sbin/nologin
删除用户
userdel -r user02 //删除用户user2,同时删除用户家目录
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
用户密码
passwd
-d:删除密码,仅有系统管理者才能使用;
-f:强制执行;
-k:设置只有在密码过期失效后,方能更新;
-l:锁住密码;
-s:列出密码的相关信息,仅有系统管理者才能使用;
-u:解开已上锁的帐号。
如果是普通用户执行passwd只能修改自己的密码。如果新建用户后,要为新用户创建密码,则用passwd用户名,注意要以root用户的权限来创建。
[root@localhost ~]# passwd linuxde # 更改或创建linuxde用户的密码;
Changing password for user linuxde.
New UNIX password: # 请输入新密码;
Retype new UNIX password: # 再输入一次;
passwd: all authentication tokens updated successfully. # 成功;
普通用户如果想更改自己的密码,直接运行passwd即可,比如当前操作的用户是linuxde。
[linuxde@localhost ~]$ passwd
Changing password for user linuxde. # 更改linuxde用户的密码;
(current) UNIX password: # 请输入当前密码;
New UNIX password: # 请输入新密码;
Retype new UNIX password: # 确认新密码;
passwd: all authentication tokens updated successfully. # 更改成功;
比如我们让某个用户不能修改密码,可以用-l选项来锁定:
[root@localhost ~]# passwd -l linuxde # 锁定用户linuxde不能更改密码;
Locking password for user linuxde.
passwd: Success # 锁定成功;
[linuxde@localhost ~]# su linuxde # 通过su切换到linuxde用户;
[linuxde@localhost ~]$ passwd # linuxde来更改密码;
Changing password for user linuxde.
Changing password for linuxde
(current) UNIX password: # 输入linuxde的当前密码;
passwd: Authentication token manipulation error # 失败,不能更改密码;
再来一例:
[root@localhost ~]# passwd -d linuxde # 清除linuxde用户密码;
Removing password for user linuxde.
passwd: Success # 清除成功;
[root@localhost ~]# passwd -S linuxde # 查询linuxde用户密码状态;
Empty password. # 空密码,也就是没有密码;
存放用户信息:
/etc/passwd
/etc/shadow
存放组信息:
/etc/group
/etc/gshadow
用户信息文件分析(每项用:隔开)
例如:jack:X:503:504:::/home/jack/:/bin/bash
jack # 用户名
X # 口令、密码
503 # 用户id(0代表root、普通新建用户从500开始)
504 # 所在组
: # 描述
/home/jack/ # 用户主目录
/bin/bash # 用户缺省Shell
组信息文件分析
例如:jack:$!$:???:13801:0:99999:7:*:*:
jack # 组名
$!$ # 被加密的口令
13801 # 创建日期与今天相隔的天数
0 # 口令最短位数
99999 # 用户口令
7 # 到7天时提醒
* # 禁用天数
* # 过期天数
usermod
用于修改用户的基本信息
补充说明
usermod命令 用于修改用户的基本信息。usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变user id,必须确认这名user没在电脑上执行任何程序。
语法
usermod(选项)(参数)
选项
-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录,只是修改/etc/passwd中用户的家目录配置信息,不会自动创建新的家目录,通常和-m一起使用;
-m<移动用户家目录>:移动用户家目录到新的位置,不能单独使用,一般与-d一起使用。
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s:修改用户登入后所使用的shell;
-u:修改用户ID;
-U:解除密码锁定。
参数
登录名:指定要修改信息的用户登录名。
实例
将 newuser2 添加到组 staff 中:
usermod -G staff newuser2
修改newuser的用户名为newuser1:
usermod -l newuser1 newuser
锁定账号newuser1:
usermod -L newuser1
解除对newuser1的锁定:
usermod -U newuser1
增加用户到用户组中:
usermod -aG group user # 添加用户到用户组中
修改用户家目录:
[root@node-1 ~]# useradd lutixiaya
[root@node-1 ~]# ls /home
lutixiaya
[root@node-1 ~]# usermod -md /data/new_home lutixiaya
[root@node-1 ~]# ls /home/
[root@node-1 ~]# ls /data/
new_home
附加
usermod -aG 添加用户到附属组. usermod -aG 组名 用户名
usermod -g 指定主组. usermod -g 组名/gid 用户名
usermod -G 指定附加组,会覆盖其他的附加组 usermod -G 组名/组好 用户名
1.给组添加账户
-a
[root@qfedu ~]# gpasswd -a user10 grp2
Adding user user10 to group grp2
2.同时添加多个用户到组
-M:members成员的缩写
[root@qfedu ~]# gpasswd -M tom,alice it
3.从组删除用户1
-d
[root@qfedu ~]# gpasswd -d user07 hr
Removing user user07 from group hr
好 白嫖的另外的知识点
gpasswd
Linux下工作组文件的管理工具
补充说明
gpasswd命令 是Linux下工作组文件/etc/group和/etc/gshadow管理工具。
语法
gpasswd(选项)(参数)
选项
-a:添加用户到组;
-d:从组删除用户;
-A:指定管理员;
-M:指定组成员和-A的用途差不多;
-r:删除密码;
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
参数
组:指定要管理的工作组。
如系统有个peter账户,该账户本身不是groupname群组的成员,使用newgrp需要输入密码即可。
gpasswd groupname
让使用者暂时加入成为该组成员,之后peter建立的文件group也会是groupname。所以该方式可以暂时让peter建立文件时使用其他的组,而不是peter本身所在的组。
所以使用gpasswd groupname设定密码,就是让知道该群组密码的人可以暂时切换具备groupname群组功能的。
gpasswd -A peter users
这样peter就是users群组的管理员,就可以执行下面的操作:
gpasswd -a mary users
gpasswd -a allen users
注意:添加用户到某一个组 可以使用usermod -G group_name user_name这个命令可以添加一个用户到指定的组,但是以前添加的组就会清空掉。
所以想要添加一个用户到一个组,同时保留以前添加的组时,请使用gpasswd这个命令来添加操作用户:
gpasswd -a user_name group_name
su 用户名 可以切换用户
Linux 中查询某个组中所有用户的三种方法
getent group xiao
xiao:x:2000:lin,yaping,li
千锋教育组织架构
Linux的一大特性:
多用户、多任务。
所谓多用户多任务就是指可以在同一时间,有多个用户登录同一个系统执行不同的任务而互不影响。
假设现在有三个用户:root、lbb、mvv,三个用户同一时间登录了同一个系统,root去修改配置文件了,lbb去创建目录了,mvv去访问数据库了,每个用户互不干扰的独立执行自己的任务,并且每个用户不能够越线去访问其他用户正在操作的目录或执行其他用户下的任务,由此可见,不同的用户是拥有各自不同的权限的,Linux通过权限的划分和管理来实现多用户、多任务的运行机制。
Linux中的用户及其角色划分
账户为分三类:
超级用户(管理员):享有最高权限,具备系统中的所有权限(一般为root),UID为0
系统用户 :别称“伪用户”,无法登录系统,其主要作用是支撑系统运行,方便系统管理。uid号码小于1000.
普通用户:有权限限制,只能对自己目录下的文件进行操作,可以登录系统。uid 大于1000,登陆shell是bin/bash。
任何一个账户在创建的同时都会在系统里面创建一个同名的组。
用户/组基本概念!
Users and groups:
系统上的每个进程(运行的程序)都是作为特定用户运行的
. Every file is owned by a particular user.
每个文件是由一个特定的用户拥有 .
. Access to files and directories are restricted by user.
访问文件和目录受到用户的限制