02Linux常用命令(vim编辑器用户及用户组、权限)

Linux常用命令(vim编辑器及用户及用户组及权限基础知识)

快捷键操作

vim +10  /etc/vimrc 直接进入第10行

vim /etc/vimrc配置文件
set nu
set ts =4 tab键设置为4个空格
set mouse=a #可以使用鼠标操作
#将上面的设置在配置文件,可以使用以后文件默认


编辑命令:
#Ctrl + a  :移到命令行首
#Ctrl + e  :移到命令行尾
Ctrl + xx:在命令行首和光标之间移动
#Ctrl + u  :从光标处删除至命令行首
#Ctrl + k  :从光标处删除至命令行尾
Ctrl + w :从光标处删除至字首(空格的字首)
#Ctrl + d :删除光标处的字符
#Ctrl + h :删除光标前的字符

重新执行命令:
Ctrl + r:逆向搜索命令历史
Ctrl + p:历史中的上一条命令
ESC + .:打印之前执行过的命令的最后一部分  以空格为分隔符

控制命令:
Ctrl + l:清屏
Ctrl + c:终止命令

Tab键: 自动补全
yum install -y bash-completion


Vim进入paste模式,命令如下:
:set paste
进入paste模式之后,再按i进入插入模式,进行复制、粘贴就很正常了
命令模式下,输入如下命令,解除paste模式
:set nopaste

编辑模式:

I    #直接在光标行首进入编辑模式
A    #直接在光标行尾进入编辑模式
i     #在光标所在处进入编辑模式
a    #在当前光标后面进入编辑模式
o    #在光标的下一行进入编辑模式(另起一行插入)
大O  #在光标的上一行进入编辑模式(另起一行在光标在行的上一行进行插入)

尾行模式:

命令行模式到尾行模式按两次esc
刚进入文件就是尾行模式
编辑模式按一次esc进入尾行模式
hjkl         #左下上右
gg=) (shift+0)=[  #到页首头部。
G =(shift+g)=]  #到页尾头部
( (shift+9)  #到页尾尾部

$         #跳到行尾
0或home键         #跳到行首
enter键  #跳到下一行行首
dG      #从光标开始删除到页尾
dgg     #从光标开始删除到页首 
dd      #删除一行/剪切
d0        #删除到行首
d$        #删除到行尾
3dd     #从光标开始删除3行
d3G     #删除第三行
d^=d0      #删除当前光标之前的内容		
D       #从光标处删除到行尾
x       #删除光标所在的字符

yy      #复制 
3yy     #复制第3行,在光标下一行粘贴1行
yy3     #复制第三行,在光标下一行粘贴3行
ygg     #从当前光标复制到页首
yG      #从光标开始复制到页尾

p       #粘贴到本行的下一行
大P      #粘贴到本行的上一行 

n(n为数字 )  #光标向下移动n行
3G=3gg      #进入第三行
r       #可以用来修改一个字符
u       #undo撤销
[Ctrl]+r #重做上一个动作
n<space>	那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20<space> 则光标会向后面移动 20 个字符距离。

命令行模式:

 shift+:    #进入尾行模式(扩展命令模式)
 :10    #进入第10行 
 :w     #保存 
 :q     #退出 
 :wq    #保存并退出 
 :q!    #不保存并退出 
 :wq! 强制保存退出
 :ZZ 保存并退出
 :x 保存并退出
 :e! 复原,恢复到文件打开后,没有迚行修改时的状态。 修改了很多,丌想保存,想复原,按:e!
在正常模式下,按下大写的 ZZ,也可以保存并退出
设置环境:
:set nu 
:set list  #显示控制字符
:set nonu  #取消设置行号

查找替换:

语法----> :范围 s/old/new/选项 /// 可换成别的分隔符例如:@/bash/bin@@,###,$$$可查多个单词

 /代码 向光标之下寻找一个名称为 word 的字符串   (n N 可以循环的)
 ?word	向光标之上寻找一个字符串名称为 word 的字符串。
 /^d ----^意思表示以什么开头 ,查找以字母 d 开头的内容
/bash$ -----$意思表示以什么结尾,查找以字母 bash 结尾的内容

:s/world/nice/         #替换当前光标所在行的第一个world
:s/bin/soso/g        #替换光标所在行中所有bin关键字
:%s/bin/soso/          #替换所有行的第一个
:3s/sbin/nice/         #替换指定3行
:1,5 s/nologin/soso/   #从1-5行的nologin 替换为soso


:%s/sbin/nice/g        #替换行内所有关键字
:% s/do/xuegod/gi       #将文本中所有的 do 替换成 xuegod, 并丏忽略 do 的大小写

注释:%表示替换所有行  g表示行内所有关键字

将文件另存(另存为):语法----> :w 存储到当前文件

:w /tmp/aaa.txt    #另存为/tmp/aaa.txt 
:1,3 w /tmp/2.txt  #从1-3行的内容另存为/tmp/2.txt
#文件有了就在w后加!


:调用外部文件戒命令
语法:在命令行模式下输入: !+命令
例:在 vim 编辑文档写要写入 MAC 地址。
[root@xuegod63 ~]# cp /etc/passwd a.txt
[root@xuegod63 ~]# vim a.txt
:!ifconfig
#在 vim 中调用 ifconfig 命令
读取其他文件。(把其他文件中的内容追加到当前文档中)
:r /etc/hosts

进入其他模式

ctrl+v     #进入可视块模式 选中后大I插入,再按要替换的字符,再按两次esc
shift+v    #进入可视行模式

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. 

访问文件和目录受到用户的限制 

用户和组管理的配置文件

/etc/passwd文件详解

此文件里面除了密码字段能删除不能直接修改之外,其他字段全部都能直接修改

[root@xiaoqiang ~]# 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【/bin/bash、/sbin/nologin、/sbin/shutdown】

/etc/shadow账户密码文件结构:

root 账户名称
$6$yMuqjFCP$p6z3v3bTa842XU/HRjmWALrXv723ZTepEgwT1G2M3kSI2M7hyGak6api1LhJu8smwz5K8r8MER1O..5hjWM7R1 密码(加密后)
18340 最近修改密码的日期
0  密码不可修改的日期
99999 密码需要重新修改的日期
7 密码需要修改前的警告天数
空  密码过期后的宽限时间
空  账号失效日期
空  保留

/etc/group和/etc/gshadow组账户密码文件结构

adm:x:4:syslog,kehan
用户组名称:用户组密码:GID:用户组支持的账号名称

判断用户是否存在:

id 用户名称 #查看用户uid,gid和所在组
uid=1001(user01) gid=1003(user01) groups=1003(user01)
                    主属组                    附属组
uid 系统用来识别账户的user identify
gid 系统用来识别组的group identify

查看现在所使用的的账户:

# whoami 查看我现在所使用的账户
#who 查看我的机器谁在登录
#id 详细查看
#w 查看终端
#tty 当前终端

用户管理:

创建用户:(不带参数)

useradd 用户名称
/etc/passwd  ---->查看账户是否存在的文件
/home/  ---->用户的家目录,每创建一个用户会在/home目录下面创建对应的家目录
/etc/shadow   --->用户的密码文件

创建用户:(带参数)

useradd -d -u “UID” -g "初始组" -G "附加组" -s "登陆的 shell” 用户
-c:设置账号的描述信息,一般为账号全称
-d:指定用户家目录,不写时默认为/home/user_name
-M:不要创建用户家目录,一般与s结合使。
-m:创建用户主文件夹(一般账号默认值)。
-g:指定用户主组,要求组己存在
-G:指定用户的附加组,多个组以逗号分隔
-r:创建一个系统的账号,这个账号的UID会有限制(参考/etc/login.defs)。
-e:后面接一个日期,格式为“YYYY-MM-DD”,此选项可写入shadow第八字段,即账号失效日的设置选项。
-D:修改useradd创建用户时的默认选项,就修改/etc/default/useradd文件
-s:指定用户登录的shell,默认留空。此时将选择/etc/default/useradd中的SHELL变量设置
-u:指定用户uid,默认uid必须唯一,除非使用了-。选项
-f:后面接shadow的第七字段选项,指定密码是否会失效。0为立刻失效,-1为永不失效(密码只会过期而强制于登录时重新设置而已)。

 useradd xiexie -u 503   //指定uid为503
 useradd -g 1003 user8 #指定用户的主属组为1003组。  
 useradd xiexie -G it,fd(附加组)   //创建用户xiexie,指定附加组
 useradd xiexie -s /sbin/nologin -M # bin/bash //创建用户并指定shell,创建无法登陆系统且没有家目录的用户xieixe
 useradd user10 -u 4000 -s /sbin/nologin
 useradd -D -e f,2016-08-20"	# 设置用户 2016-08-20 过期
 useradd -c adinistartor -d /home/admin -e 2021-12-06 -g root -G xie,hui admin

删除用户:

 userdel -r user02  //删除用户user2,同时删除用户家目录
 -f:强制删除用户,即使这个用户正处于登录状态。同时也会强制删除家目录。

用户密码:

passwd alice  #root用户可以给任何用户设置密码
passwd   #root用户给自己设置密码
passwd -l tom #锁定用户
passwd -u tom #解锁用户
passwd -d tom #清空账户Tom的密码(没密码可登录系统)
#普通用户只能给自己修改密码,而且必须提供原密码
echo "123456" | passwd --stdin xiaoqiang

chpasswd [-e -c] "user:passwd"
-c:指定加密算法,可选的算法有DES,MD5,NONE,SHA256和SHA512
user:passwd为用户密码对,其中默认passwd是明文密码,可以指定多对,每行一个用户密码对。前提是用户是已存在的。
-e:passwd默认使用的是明文密码,如果要使用密文,则使用-e选项。参见man chpasswd

修改单个用户密码。
$ echo "user1:123456" | chpasswd -c SHA512
修改多个用户密码,则提供的每个用户对都要分行。
$ echo  -e 'usertest:123456\nusertest2:123456' | chpasswd


用户操作:

修改用户名:

usermod -l 用户新名 用户旧名

修改用户gid(主属组):

1:查看用户 id 用户 #查看此用户是否有GID
usermod -g 新的gid 用户名

修改uid:

usermod -u 新的用户uid 用户名

修改用户的shell:

usermod -s /sbin/nologin user07   #修改用户的登录shell

追加用户到附加组:

usermod -aG 附属组 用户  #追加,用户到附属组与-a一块使用
-a追加 -G附属组
usermod -d /home/tocat tom #修改tom的家目录(/home/tocat目录必须先存在)

usermod -e 2021-12-6 tom #修改账户的失效日期

组管理:

创建组:

groupadd 组名称
-f:如果要创建的组己经存在,默认会错误退出,使用该选项则强制创建且以正确状态退出,只不过gid可能会不受控制。
-g:指定gid,默认gid必须唯一,除非使用了-0选项。
-K:修改/etc/login. defs中关于组相关的配置项。配置方式为KEY=VALUE,例如-K GID_MIN=100 -K GID_MAX=499
-o:允许创建一个非唯一 gid的组
-r:创建系统组

创建组并创建组gid

groupadd 组名称 -g 组id

#-r:新建系统用户组。

查看有效组、切换有效组

groups
groups命令显示的第一个用户组就是root的有效用户组,这时候root用户创建的文件或目录,所属的用户组就是root的有效用户组,也就是root。

newgrp命令切换有效用户组:

组操作:

修改组:

参数:-g:修改组的gid
-n:修改组名

groupmod -g 2000 grp1 #修改组id
groupmod -n 新组名 grp1 #修改组名
groupmod -g 2000 -n xyq xyqq

删除组:

groupdel net01  #删除组net01
注意:用户的主属组不能删除

组成管理:

gpasswd -a user10 grp2  #给组添加账户
gpasswd -M tom,alice it #改[指定此账户成员是哪几个]
gpasswd -d user07 hr    #从组删除用户

使用用户管理器管理用户和组群

rpm -qa | grep system-config-users #查找是否安装用户管理器
yum install -y system-config-users #安装图形化用户管理器
system-config-users #打开管理器

UGO权限及高级权限

linux用户权限解析:

我们linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险。所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要

基本权限UGO(user group other)

这个文件归属哪个用户,这个文件属于哪个组,这个文件其他人有什么权限

权限有优先级,从左往右执行

文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件

在这里插入图片描述

权限对象:
属主------->u
属组------->g
其他人------>o
基本权限类型:
读(read):r   ---->4(write):w  ---->2
执行: x(exec) ----->1

r、w、x权限对文件和目录的意义

在这里插入图片描述

对文件:
r----cat,less,more,vim
w ---vi、vim,echo
x ---- ./ dir/file
对目录:
r  ---ls
w -----touch、rm ,mkdir
x  ---- cd 

设置权限:chown、chmod

chown:改变文件\目录的所属主以及所属组
chmod:为文件或目录设置访问权限
chgrp:更改文件和目录所属组,要求组已经存在。【注意,对于链接文件而言,修改组的作用对象是链接的源文件,而非链接文件本身】
chown:属主、属组
 chown alice.hr file1.txt  //修改属主、属组
 chown tom  file1.txt  //修改属主
 chown .it file1.txt   //只改属组
 chown -R alice.hr dir1 //递归修改---针对目录
chmod:读、写、执行

在这里插入图片描述

对谁操作:
u----> 用户 user,表示文件戒目彔的所有者
g---->用户组 group,表示文件戒目彔所属的用户组
o---->其它用户 others
a---->所有用户 all
操作符:
+ #添加权限;- #减少权限; = #直接给定一个权限
权限:r w x
例如下在的组合:
u-w user拥有者
g+x group 组
o=r other其他人
a+x all所有人
chmod u+x file1.txt     //属主增加执行
chmod a=rwx file1.txt  //所有人all等于读写执行
chmod a=- file1.txt   //所有人都没有权限
chmod ug=rw,o=r file1.txt  //属主属组等于读写,其他人只读
chgrp:
chgrp -v huihui passwd #改变文件的属组
chgrp --reference=passwd huihui#指定文件改变文件的属组[将huihui文件属组也改成passwd一样的]
chgrp -R huihui xiexie/ #指定xiexie文件/目录递归修改属组为huihui
chgrp -R 100 test6  /通过属组gid进行修改
使用数字:
文件权限默认644
目录权限默认755

权限掩码:umask

umask 用户掩码:用于控制用户创建文件和目录的默认权限

umask值用于设置用户在创建文件时的默认权限。对于root用户(实际上是UID小于200的user),系统默认的umask值是022;对于普通用户和系统用户,系统默认的umask值是002。

root用户默认权限

查看umask
#umask -S 查看对应权限
#umask
0022 root账户默认---->第一个对应是特殊权限用的,后面三个数字代表权限对于UGO:u=0,g=2,o=2 所以:755
文件:644  目录:731
0002 普通用户默认---->u:0,g=0,o=2,所以:775
文件:664 目录:775  
022反过来755-->所以对应u=7,g=5,o=5
修改umask
#umask 0111

高级权限:

高级权限 suid,sgid,sticky

1.1.高级权限的类型

#suid ==== 4 提权 (只对二进制命令文件生效,其他不管用)
那么这个特殊权限的特殊性的作用是什么呢?
1、SUID权限仅对命令文件(二进制文件)有效;
2、执行者将具有该程序拥有者(owner)的权限。

#sgid ==== 2 组权限继承    (只能对目录设置)
把s放到文件的所属用户组的x位置上的话,就是SGID。那么SGID的功能是什么呢?和SUID一样,只是SGID是获得该程序所属用户组的权限。
SGID主要用在目录上-----如果用户在此目录下具有w权限的话,使用者在此目录下建立新文件,则创建的这个文件的群组与此目录的群组相同

#sticky == 1 (t权限)  权限控制
这个就是针对others来设置的了,和上面两个一样,只是功能不同而已。
SBIT(Sticky Bit)目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除

设置特殊权限

a、字符---语法:
chmod u+s file 
suid   普通用户通过suid提权     <针对文件>二进制的命令
在进程文件(二进制,可执行的命令文件)上增加suid权限
# chmod u+s /usr/bin/cat
# chmod u+s /usr/bin/rm
[root@xiaoqiang ~]# su - alice
Last login: Wed Nov  6 17:40:40 CST 2019 on pts/0
[alice@xiaoqiang ~]$ cat /root/file1.txt
123
[alice@xiaoqiang ~]$ rm -rf /root/file1.txt


chmod u+s dir
chmod g+s dir 
chmod o+t dir

b、数字
chmod 4777 file 
chmod 2770 dir 
chmod 1770 dir

取消提权:
chmod u-s  /usr/bin/rm 
chmod g-s die
chmod o-t die

目前两种给普通用户提权手段:

sudo: 有针对性,例如针对某个用户以能够以root的身份执行某些命令。
suid: 基本针对所有用户,任何用户在执行有suid权限的程序时(例如/usr/bin/rm),都是以root身份在执行。

开放所有命令使用权

配置解释:
root表示用户名
第一个 ALL 指示允许从任何终端、机器访问 sudo
第二个 (ALL) 指示 sudo 命令被允许以任何用户身份执行
第三个 ALL 表示所有命令都可以作为 root 执行
[root@xiaoqiang ~]# visudo    #打开配置文件vim /etc/sudoers
90 ##
91 ## Allow root to run any commands anywhere
92 root    ALL=(ALL)       ALL  #系统自带
93 jack    ALL=(ALL)       NOPASSWD: ALL   #添加内容NOPASSWD 不用执行密码使用sudo
94 ## Allows members of the 'sys' group to run networking, software,
测试
[root@xiaoqiang ~]# su - jack
Last login: Wed Nov  6 22:04:46 CST 2019 on pts/2
[root@xiaoqiang ~]$ sudo mkdir /test1

开放个别命令使用权ACL

[root@xiaoqiang ~]# visudo
     91 ## Allow root to run any commands anywhere
     92 root    ALL=(ALL)       ALL
     93 huihui    ALL=(ALL)       NOPASSWD:ALL
     94 xiexie   ALL=(ALL)       NOPASSWD:/usr/bin/mkdir, /usr/bin/rm, /usr/bin/touch
     95 
     96 ## Allows members of the 'sys' group to run networking, software,
测试:
[root@xiaoqiang ~]# su - alice
Last login: Fri Jul 24 00:52:13 CST 2020 on pts/1
[huihui@xiaoqiang ~]$ touch /file
touch: cannot touch ‘/file’: Permission denied
[huihui@xiaoqiang ~]$ sudo touch /file
[huihui@xiaoqiang ~]# usermod -aG wheel xiaxia    
gpasswd -a xiaoqiang wheel
#第二种配置权限的方法,给用户追加wheel,轮子组

设置和查看ACL

设置使用setfacl命令:

设置使用setfacl命令。
setfacl [options] u:[用户列表]:[rwx]目录/文件名	#对用户设置使用u
setfacl [options] g:[组列表]:[rwx]	目录/文件名	#对组设置使用g
选项说明:
-m:设定 ACL 权限(modify)
-x:删除指定的ACL权限,可以指定用户、组和文件来删除(remove)
-M:写了 ACL条目的文件,将从此文件中读取ACL条目,需要配合-m,所以-M指定的是modify file
-X:写了 ACL条目的文件,将从此文件中读取ACL条目,需要配合-X,所以-X指定的是remove file
-n:不重置mask
-b:删除所有的ACL权限
-d:设定默认ACL权限,只对目录有效,设置后子目录(文件)继承默认ACL,只对未来文件有效
-k:删除默认ACL权限
-R:递归设定ACL权限,只对目录有效,只对已有文件有效
• setfacl –m u:用户名:权限 <文件名> 设置某用户名的访问权限
setfacl -m u:user1:rwx xx
• setfacl –m g:组名:权限 <文件名> 设置某个组的访问权限
setfacl -m g:group1:rwx xx

• setfacl –x u:用户名 <文件名> //取消某用户的访问权限
• setfacl –x g:组名 <文件名> //取消某个组的访问权限
❉↑这时是将这个user或group的ACL整个删除,如果只是想删除某一个权限,还是需要setfacl -m来进行重新设置

setfacl -b xie.log  删除所有acl附加条目
查看使用:getfacl <文件名>    #获取文件的访问控制信息

隐藏权限

[root@xiaoqiang~]# touch file1 file2 file3
1.查看文件属性
[root@xiaoqiang ~]# lsattr file1 file2 file3 
---------------- file1
---------------- file2
---------------- file3
2.设置权限
[root@xiaoqiang ~]# chattr +a file1  #不允许修改,只允许追加
[root@xiaoqiang ~]# chattr +i file2  #不允许做任何操作
[root@xiaoqiang ~]# chattr +A file3 
[root@xiaoqiang ~]# lsattr file1 file2 file3
-----a---------- file1
----i----------- file2
-------A-------- file3
i:即Immutable,系统不允许对这个文件进行任何的修改
a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何覆盖或截断这个文件
A:即Atime,告诉系统不要修改对这个文件的最后访问时间


取消权限
[root@xiaoqiang ~]# chattr -a file1 
[root@xiaoqiang ~]# chattr -i file2 
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BLXXQQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值