首页 > 其他分享 >Linxu 基础 3 (高阶指令)

Linxu 基础 3 (高阶指令)

时间:2025-01-14 19:31:29浏览次数:3  
标签:修改 root 用户组 用户 etc 指令 Linxu 权限 高阶

一、VI/VIM编辑器

1.1简介

vi编辑器就是和windows的记事本,某些本文编辑工具(notepad++,editplus,sublim text)一样。

所有的类Unix系统,都自带vi 文本编辑器
很多应用程序的编辑界面都会主动呼唤 vi编辑器 

Vim是Linux系统中功能强大的文本编辑器,是vi编辑器的增强版。Vim提供了多种模式和丰富的命令,使得文本编辑更加高效和灵活。
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计;
操作简单,编辑速度快。

安装vim:

yum install vim -y

1.2模式介绍

命令模式(一般模式)

用户对一个文件启动 Vim/Vi,便进入了命令模式(也称为一般模式)。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。

在该模式下,可以移动光标、删除行、复制行等操作,但不能输入文字

比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。在此模式下,可以通过命令对文件内容进行删除,复制,粘贴等行为,可以理解为快捷键操作

插入模式(编辑模式)

在命令模式下,输入 i, I, o, O, a, A, r, R 等任意命令,便会立即进入插入模式(也称之编辑模式)

在这个模式下,我们才可以对文件进行详细的编辑,比如使用退格键,删除键,回车键等各式各样的文本编辑了

按【ESC】键回到命令模式

插入模式(编辑模式)

在命令模式下,输入字符【: ? /  】三个中的任意一个,就会来到底线命令模式下

在这个模式下,我们可以完成搜索、读取、存档、离开Vim/Vi等很多行为

按【ESC】键回到命令模式

常用命令(命令模式/一般模式下使用)

H:        移动到当前屏幕的最上一行的行首  
M:        移动到当前屏幕的中间一行的行首  
L:         移动到当前屏幕的最下一行的行首  
gg:       移动到这个文件的第一行,相当于1G (常用)  
G:        移动到这个文件的最后一行(常用)
NG:        移动这个文件的第N行
x,,X:     在一行字符中,x表示向后删除一个字符(相当于del键),X为向前删除一个字符(相当于退格键) (常用)  
nx:        n为数字,连续向后删除n个字符。  
dd:        刪除游标所在的那一行(常用,也是剪切)  
ndd:      n为数字。删除游标所在的向下n行(常用)  
d1G:        刪除游标所在到第一行的所有行数据  
dG:          刪除游标所在到最后一行的所有行数据 
yy,Y:     复制游标所在的那一行数据(常用)  
nyy,nY:    n 为数字。复制游标所在的向下n行(常用)  
p, P:        p表示将复制的数据粘贴到游标所在行的下一行,P表示将复制的数据粘贴到游标所在行的上一行 (常用)  
u:             撤销前一个动作。(常用)

 进入插入模式

i/I
    - i  光标所在处前开始插入
    - I  光标所在行行首开始插入

a/A
    - a  光标所在处后开始插入
    - A  光标所在行行尾开始插入
o/O
    o  光标所在行的下一行开始输入
    O  光标所在行的上一行开始输入

 底层命令模式

退出操作:
    :q    不保存退出(前提是什么都没干 才会成功)
    :q!    强制退出,不保存
    :wq   保存并退出
    :wq!  强制保存并退出   可以使用快捷键: shift + z/z   (两次大Z)


其他的底层命令操作:
    :set nu      显示行号
    :set nonu  取消行号显示

    :/pattern    查找指定字符串

    :s/old/new/g 替换当前行(光标所在行)的所有匹配项

    :%s/old/new/g 替换整个文件的所有匹配项

另外一些功能:

  1. 多行注释: 在命令模式下,按Ctrl+v 进入可视化模式,选择需要注释的行,按Shift+i 进入插入模式,输入#,然后按Esc两次完成注释。

  2. 代码着色: Vim支持代码着色功能,可以通过:syntax on开启,:syntax off关闭。

  3. 异常退出解决方案: 如果Vim异常退出,会生成一个.swp文件。可以通过删除该文件来解决问题: rm .filename.swp

 二、Linux的网络配置

2.1网络相关概念

1. 外网:IP是唯一性,不能重复。范围:0.0.0.0~255.255.255.255        
2. 内网:通过路由器或者交换器设备,来重新设置IP地址。
   不同的内网的ip可以相同。
3. IP:   ip地址是确定一台机器的唯一标识符
4. NETMASK(子网掩码):与ip连用,用于确定网络段位            
   192.168.1.x      范围:1-254    
   255.255.255.0     
   子网掩码有1的位置对应ip的部分就是网络段位。0对应的位置就是内网中主机的位置。      
5. GATEWAY:网关,用于与连接外网的机器设备通信(路由器)换句话说,网关就是路由器的IP
6. DNS:域名解析服务器
   119.75.217.109  www.baidu.com
   110.242.68.3   www.baidu.com

   
 
   IP:  IP是电脑在网络中的唯一标识符,IP的段位和号码。 段位和路由器一致,后面的号码决定该内网中可以有多少台电脑,但是初始的几个值以及最后的几个值是预用的,普通设备不能使用。
   路由器:路由器里的DHCP服务器的作用,是用来给设备分配动态IP。
   DNS:  IP的另外Linux的网络配置几种模式一个好记的名字映射的解析器。

2.2Linux的网络配置几种模式

桥接模式:

该模式下的虚拟机的IP与物理机的IP是同一个段位(换句话说,内网中的机器个数=物理机个数+虚拟机个数)

Vmware需要将想要配置网络的虚拟机调成桥接模式

虚拟机相当于真实的计算机,ip由真实的路由器来分配,因此真实的路由器下的机器的个数是物理机个数+虚拟机个数<256.

物理机和虚拟机可以通信(在同一个路由下,通过路由通信)

NET模式:

使用的虚拟网卡是NetWork Adapter VMnet8,该虚拟网卡的作用是虚拟机与物理机通信。虚拟机的ip是由此虚拟交换机中的虚拟机DHCP服务器分配。能联网,可以与连接此虚拟交换机内的所有虚拟机进行通信。外网不能直接与此虚拟机通信。

Vmware需要将想要配置网络的虚拟机调成net模式

虚拟机的ip是由Vmnet8交换机中的虚拟DHCP服务器来分配的,因此网段和Vmnet8交换机是一致的。

物理机和虚拟机可以进行通信(通过物理机上的Vmnet8适配器进行通信)

仅主机模式:

作用就是虚拟机和物理机之间进行通信

2.2.1桥接模式下的网络配置

动态网络配置

1)修改虚拟机的网络适配器,改成桥接模式

  2)修改网络文件/etc/sysconfig/network-scripts/ifcfg-ens33

 

 3)文件里面要修改   ONBOOT=yes    BOOTPROTO=dhcp

​  4)重启网络服务:  systemctl  restart network

静态网络配置

步骤1)修改该虚拟机的连接方式为桥接模式

步骤2)修改配置文件 (/etc/sysconfig/network-scripts/ifcfg-ens33)

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
BOOTPROTO=static         #三个值dhcp,static,none可选, dhcp表示动态分配,其他两个为静态
NAME=ens33
DEVICE=ens33
ONBOOT=yes                       #开机后是否自动联网,yes为自动,no为手动
IPADDR=192.168.1.154        #自己设置IP 注意网段和物理机一样
NETMASK=255.255.255.0    #自己设置子网掩码 注意网段和物理机一样
GATEWAY=192.168.1.1        #设置网关 路由器默认网关 这个单词特别容易写错
DNS1=192.168.1.1                #配置DNS 注意从1开始
DNS2=8.8.8.8                        #公网 等号前后无空格 前面要大写
DNS3=114.114.114.114         #公网

 

步骤3)重启网络服务项

[root@localhost ~]# systemctl restart network

步骤4)查看ip地址

[root@localhost ~]# ip addr

步骤5)校验网络是否畅通

1. 与外网是否通畅:ping  www.baidu.com       
   向百度服务器发送一个连接请求,如果连接成功,百度服务器就会向本机发送64个字节
2. 与物理机是否通畅:
      -- 虚拟机ping物理机    ping  物理机的ip
      -- 物理机ping虚拟机    ping  虚拟机的ip

2.2.2NAT模式下的网络配置

静态网络设置:

步骤1)修改虚拟机的连接模式为NAT模式

步骤2)查看并修改VMNet8的虚拟

vmware的编辑菜单-->虚拟网络编辑器-->更改设置-->选中VMnet8,修改子网IP段位为192.168.100.0
-->点击应用-->点击NAT设置,查看相关信息,比如
子网IP、子网掩码、网关

 

步骤3)修改配置文件

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
BOOTPROTO=static         #三个值dhcp,static,none可选, dhcp表示动态分配,其他两个为静态
NAME=ens33
DEVICE=ens33
ONBOOT=yes                    #开机后是否自动联网,yes为自动,no为手动
IPADDR=192.168.100.101
NETMASK=255.255.255.0
GATEWAY=192.168.100.2        #虚拟网络设置里面找到网关 
DNS1=192.168.100.2
DNS2=8.8.8.8
DNS3=114.114.114.114

步骤4)重启网络服务项

[root@localhost ~]# systemctl restart network

步骤5)查看ip地址

[root@localhost ~]# ip addr

步骤6)校验网络是否畅通

1. 与外网是否通畅:ping  www.baidu.com       
   向百度服务器发送一个连接请求,如果连接成功,百度服务器就会向本机发送64个字节
2. 与物理机是否通畅:
      -- 虚拟机ping物理机    ping  物理机的ip
      -- 物理机ping虚拟机    ping  虚拟机的ip  

 2.3远程连接工具的应用

因为Linux系统通常用于服务器,没有桌面环境,只有DOS界面,而且有的时候,服务器上的软件坏掉了,或者由于权限问题,不能直接操作服务器。而是通过远程进行操作,比如管理员授权普通员工连接服务器,或者管理员自己在家,用家里的电脑连接公司的服务器,进行作业,更加方便。所以,市面上提供很多中可以远程连接服务器的软件工具。比如Xshell、FinallShell、CRT、putty、MobaXterm等

这里选择使用MobaXterm这款工具,版本随意:MobaXterm_Installer_v10.9.zip.  双击安装即可。

setting里可以设置主题,点击右键即粘贴等

 2.4其他网络设置

防火墙的设置:

[root@localhost ~]# systemctl status firewalld       #查看防火墙的状态
[root@localhost ~]# systemctl stop firewalld          #临时关闭防火墙
[root@localhost ~]# systemctl start firewalld          #临时开启防火墙
[root@localhost ~]# systemctl disable firewalld     #设置开机不自动启动防火墙
[root@localhost ~]# systemctl enable firewalld      #设置开机自动启动防火墙        mysql80


 集群中的linux,通常都是关闭防火墙的

NetworkManager的设置:

[root@localhost ~]# systemctl status NetworkManager   #查看NetworkManager服务的状态
[root@localhost ~]# systemctl stop NetworkManager   #临时关闭NetworkManager服务
[root@localhost ~]# systemctl start NetworkManager    #临时开启NetworkManager服务
[root@localhost ~]# systemctl disable NetworkManager    #设置开机不自动启动
[root@localhost ~]# systemctl enable NetworkManager    #设置开机自动启动

 集群中的linux,通常都是关闭NetworkManager的

netstat指令:

注意:该指令在net-tools安装包内,需要安装。yum -y install net-tools

英文:network statistics        命令路径:/bin/netstat        执行权限:所有用户
作用:主要用于检测主机的网络配置和状况

-a (all)显示所有连接和监听端口
-t  (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 使用数字方式显示地址和端口号
-p 显示socket的PID和进程的名字
-l  (listening)显示监控中的服务器的socket

案例演示:
eg: netstat -tlnu      查看本机监听(正在使用的)的端口
eg: netstat -nltp      查看本机监听(正在使用的)的端口以及PID和Name信息
eg: netstat -ntlp | grep tcp6    查看某一个程序的端口信息
eg: netstat -atnp | grep 25   查看端口

2.5主机名和映射文件的修改

主机名的修改

方式1:直接修改配置文件/etc/hostname
[root@localhost ~]# vi  /etc/hostname
注意:重启后生效

方式2: 使用hostnamectl指令
[root@localhost ~]# hostnamectl  set-hostname  linux01
如果想要更新当前会话的主机名,要么重启(reboot指令),要么进入子程序(直接bash指令 启动一个新的shell会话)

主机名的查看
[root@localhost ~]# hostname

 映射文件的修改

[root@linux01 ~]# vi  /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 #多个别名
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.101 linux01 qianfeng001   
192.168.10.102 linux02
192.168.10.103 linux03
192.168.10.104 qianfeng04
192.168.10.105 qianfeng05

注意:先写ip,在写域名字符串


ping指令,会先访问/etc/hosts文件,如果找到了ping后面的域名,则使用域名对应的ip地址,向ip地址所在的机器发送请求

扩展:window上修改域名映射文件:
C:\Windows\System32\drivers\etc\hosts
注意: 也是先写ip 再写域名
如果权限不够不能改 就拖到桌面改完拖回去

只能自己用,代表自己本机的IP:
127.0.0.1  127开头的IP地址,都是回环地址(Loop back address),其所在的回环接口一般被理解为虚拟网卡,并不是真正的路由器接口。所谓的回环地址,通俗的讲,就是我们在主机上发送给127开头的IP地址的数据包会被发送的主机自己接收,根本传不出去,外部设备也无法通过回环地址访问到本机。
0.0.0.0   首先,0.0.0.0是不能被ping通的。在服务器中,0.0.0.0并不是一个真实的的IP地址,它表示本机中所有的IPV4地址。监听0.0.0.0的端口,就是监听本机中所有IP的端口。
localhost

 2.6常用的进程管理命令

ps指令:

作用:查看系统中的进程信息
语法:ps [-auxle]
常用选项

a:显示所有用户的进程
u:显示用户名和启动时间
x:显示没有控制终端的进程
e:显示所有进程,包括没有控制终端的进程
l:长格式显示

eg:
    ps -aux  
    ps -aux | grep java

pstree指令:

作用:查看当前进程树

语法:pstree [选项]
-p  显示进程PID
-u  显示进程的所属用户

eg:  pstree -p

kill指令:

作用:杀死进程
语法:  kill -9 pid.....

eg:   kill -9  1514  1548

nohup指令:

作用: 将前台进程设置成后台进程, 需要配合&符号,才可以解放当前窗口

eg:  nohup  ping www.baidu.com > ping.txt  &

2.7用户与用户组的相关命令

用户和用户组的关系
    - 一个用户可以属于多个用户组(主用户组和附加用户组)
    - 一个用户组下可以有多个用户

useradd指令:

语法格式:useradd  [选项]  [用户名]
常用选项:
  -c          comment 指定一段注释性描述。
  -d         目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
  -g         用户组 指定用户所属的用户组。  指定的数字必须提前存在
  -G         用户组,指定用户所属的附加组。  指定的数字必须提前存在  
  -s         Shell文件 指定用户的登录Shell。环境
  -u         用户ID号 指定用户的UID
  
eg:
[root@linux01 home]#  useradd  -c 'this is a new user' -g 0 -G 1 -u 1001 -s /bin/bash  michael


[root@linux01 home]#  useradd  -d /home/scott1 -c 'this is a new user' -g 0 -G 1 -u 1002 -s /bin/bash  scott

小贴士:  普通用户的家的位置和名字       /home/用户名/

passwd指令:

语法格式:passwd  [选项]  [用户名]
常用选项:
    -l           锁定口令,即禁用账号。
    -u         口令解锁。
    -d         使账号无口令。
    -f          强迫用户下次登录时修改口令。

eg:   passwd   michael

用户账号刚创建时没有口令,账号被系统锁定,无法使用。

只有我们为账户指定口令后,此账户才可以使用。

设定口令的命令为passwd

超级用户可以为自己和普通用户设定口令,普通用户只能修改自己的口令。 

su指令:

语法:su [用户名]
作用:切换用户账户

eg:
    su michael    切换成michael身份
    su                 切换成root身份
    su root          切换成root身份
   
注意: 普通用户切换成别的用户身份,必须使用密码
             root切换成别的用户身份,不需要使用密码。

usermod指令:

语法格式:usermod  [选项]  [用户名]
常用的选项与useradd命令中的选项一样

        -c<备注>  修改用户帐号的备注文字。

        -d登入目录>  修改用户登入时的目录。

        -e<有效期限>  修改帐号的有效期限。

        -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。

        -g<群组>  修改用户所属的群组。

        -G<群组>  修改用户所属的附加群组。

        -l<帐号名称>  修改用户帐号名称。

        -L  锁定用户密码,使密码无效。

        -s<shell>  修改用户登入后所使用的shell。

        -u<uid>  修改用户ID。

        -U  解除密码锁定。

另外,可以使用 -l 选项 来修改用户名(建议:如果修改用户名,最好也一起把主目录也一起修改了)。

格式如下:   如果修改用户名,最好带上-m参数,同时修改主目录
usermod  -l  newName  -d /home/newName  -m oldName

案例1:# usermod  -s   /bin/ksh  -d   /home/ls   –g   adm  lisi
此命令将用户lisi的登录Shell修改为ksh,主目录改为/home/ls,用户组改为adm
案例2:
            # usermod  -m  michael   -l   michael1   -d   /home/michael1
     

注意:修改指定都是修改配置文件/etc/passwd 和 /etc/shadow里的内容

userdel指令:

系统管理员可以将用户账户从系统中删除。在做删除操作时,/etc/passwd,/etc/shadow,/etc/group等相关系统文件中的该用户记录会同时删除。有的时候,可能还需要删除该用户相关的主目录。 

语法格式:userdel  [选项]  [用户名]
  -r     把用户的主目录一起删除。

  -f     强制删除用户,即使当前用户已登录。

如果没有添加-r. 可以使用useradd -g 指定原组 -u 指定原uid值  用户名, 添加回来,再次删除。

User的管理(/etc/passwd,/etc/shadow)

 /etc/passwd文件里的格式 :

每一行都是一个用户的信息。 每一行都被冒号分隔成7列

michael:x:2001:1002:this is the new user:/home/michael01:/bin/sh

第一列: 用户名

第二列:密码

第三列:UID

第四列:GID

第五列:备注

第六列:用户的家

第七列:该账号登录时使用的shell解析器

扩展: /etc/shadow文件里的格式(账号密码的加密文件。。。。使用冒号隔开成9列。)

michael : $6$NW1x…..e1: 20024 : 0 : 99999 : 7 : : :

  1. 用户名:

  2. 加密密码:

  3. 最后一次修改时间: 距离1970.1.1的天数

  4. 最小修改时间间隔: 也就是必须大于等于设置的时间,才可以再次修改密码。如果修改为0,则不受限制。 默认值0

  5. 密码有效期: 默认值99999天。 如果设置了某一个值,则表示超过这个值的天数,账号不可用

  6. 密码需要变更前的警告天数: 在过期前n天,进行提醒变更密码,默认值是7

  7. 密码过期后的宽限时间: 如果是0,表示过期后立即失效,如果是-1,表示永不失效,如果是大于0的一个数,即宽限的天数后才失效

  8. 账号失效时间: 指定该账号无法使用的日期, 也是距离1970.1.1的总天数来计时。

  9. 保留字段:

 groupadd指令:

语法格式如下:groupadd  [选项]  [用户组]
常用选项有:
       -g   指定新用户组的组标识号(gid)。
       -o  一般与-g选项同时使用,表示新用户组的gid可以与系统已有用户组的gid相同。

实例1:# groupadd grp1
//在系统中添加一个新组grp1,新组的gid是在当前已有的最大组标识号的基础上自动+1。
 
实例2:# groupadd -g 600 grp2
//在系统中添加了一个新组grp2,同时指定新组的组标识号是600。

groupmod指令:

语法格式:groupmod  [选项]  [用户组]
常用的选项有:
        -g   为用户组指定新的组标识号。
        -o   与-g选项同时使用,用户组的新gid可以与系统已有用户组的gid相同。
        -n   将用户组的名字改为新名字

实例1: # groupmod -g 601 grp1
  // 将用户组grp1的组标识号修改为601。

实例2: # groupmod –g 10000 -n grp2 grp1
  // 将用户组grp1的标识号改为10000,同时将组名修改为grp2。

groupdel指令:

语法格式:groupdel   [用户组]

在执行groupdel命令之前,建议备份/etc/group和/etc/gshadow文件,以防止意外情况发生。

cp /etc/group /etc/group.bak
cp /etc/gshadow /etc/gshadow.bak

案例1:# groupdel grp1
//从系统中删除用户组grp1。


不要删除系统中关键的用户组,如root,wheel 等。这些用户组对于系统的正常运行至关重要

Group的管理(/etc/group)

Linux将系统内的多个用户规划到不同的用户组中,这样系统就可以通过管理用户组来统一管理多个用户了。默认情况下,系统在创建用户时,会同时创建一个与它同名的用户组,然后将此用户划分到这个用户组中。

用户组的单独管理,其实就是对/etc/group系统文件的管理,涉及到的操作有:添加,删除和修改。

/etc/group文件,用于存储组信息(三个冒号分开四列)

 group1:x:1200:

【 1 】 【2】【3】【4】

  1. 用户组的名称

  2. 用户组的密码,只是使用了x来占位

  3. 用户组的唯一标识GID。

  4. 附加成员

 2.8文件权限命令

权限种类:

文件权限代表字符数字表示对文件的含义对目录的含义
读(read)r4可以查看文件内容可以列出目录内容
写(write)w2可以修改文件内容可以在目录内创建、删除文件
执行(execute)x1可以执行文件可以进入目录

文件属性解析:

[root@linux01 ~]#  ls -l 
-rw-r--r--  1     root      root    302     8月27     9:24     namelist  
【 1 】          【2】  【3】  【4】   【5】    【6】     【7】

解析:
   第一列:由10个字符组成。

                         第一个字符表示文件类型,第2~10个字符表示权限
                 权限由9个字符构成:

                         前三个字符表示owner拥有的权限
                         中间三个字符表示group下的所有成员拥有的权限
                         后三个字符表示other的权限
   第二列:文件的硬链接数
   第三列:owner的名称
   第四列:group的名称
   第五列:文件大小
   第六列:该文件的最后一次访问时间    
   第七列:该文件名 

文件权限的针对者:

从文件属性的第一列的解析来看,文件的权限是针对于三种不同用户来设定的

  • 拥有者,即文件的owner

  • 用户组,即文件的所属组

  • 其他人,即除了上述两种情况的其他情况,称为others

 chmod指令:

语法1:chmod  [ugoa]  [+-=]  [rwx]   [filename]    该指令只能是root和owner自己使用  
     解析:
        u: 表示owner,即第2~4个字符
        g: 表示group,即第5~7个字符
        o: 表示other,即第8~10个字符
        a: 表示all, 即所有人
        +: 表示在原有的权限上添加新权限
        -: 表示在原有的权限上撤销权限
        =: 覆盖原有的权限,授予新权限 


        注意:使用+-=操作时,不能使用数字
        注意:如果使用数字,那就不能使用+-=,而且尽量使用三位数,第一个数字是owner的,第二个是group,第三个other。

案例1:赋予文件file1所属组写权限
      chmod g+w file1
案例2:取消所有者,用户组,其他人三个部分对file1的写权限
      chmod ugo-w file1

  语法2:chmod  [421]  [filename]
      解析:第二个参数中的三个数字分别表示owner,group,other的权限
           即每个数字表示某一个身份的权限之和  


案例3:设定目录dir1为所有用户具有全部权限
      chmod 777 dir1      
案例4:chmod 763 file1
        7表示拥有者的权限是可读可写可执行  111--->rwx
        6表示所属组的权限是可读可写             110--->rw-
        3表示其他人的权限是可写可执行          011--->-wx

 

扩展:如果写成了一位数,比如4,相当于004,  两位数41,相当于041

一般不建议这么写,可读性差。

文件和目录创建后有默认权限:

    root身份创建的:
      文件:644    (目录各位数字减1)
      目录:755    022   --------  umask 权限的反码
    普通用户创建的:
      文件:664
      目录:775    002

赋值权限问题:
    针对于文件而言:权限可以任意chmod,但是在应用时,会涉及到权限够不够的问题
            如果文件有x权限,则必须给r权限。
            合理性问题:如果文件有w权限,应该给r权限
    针对于目录而言:权限可以任意chmod,但是在应用时,会涉及到权限够不够的问题
            如果有r权限,应该赋予x权限
            如果有w权限,应该赋予x权限

chgrp指令:

格式:chgrp  [-R]   [newGroup]   filename          该指令只能是root用户使用
功能描述:改变文件或目录的所属组

案例1:  改变文件file1的所属组为adm
            chgrp  dam  file1
案例2:修改目录dir1及其子目录和文件的用户组为michael
            chgrp -R michael dir1

chown指令:

格式1:chown [-R]  [newOwner]  filename       该指令只能是root用户使用
                参数: -R 表示递归修改拥有者

案例1:改变文件file1的所有者为nobody
            chown  nobody  file1
案例2:修改目录dir1及其子目录和文件的拥有者为michael.
            chown -R michael: dir1
           
格式2:chown  newOwner:newGroup filename   #可以有chgrp的功能
案例3:将install.log的拥有者与群组改为root 
            chown root:root install.log
案例4:修改目录dir1的用户组为root
            chown .root dir1

2.9 sudo指令:

sudo(super user do)指令是Linux系统中用于授权普通用户执行管理员命令的工具。通过sudo,用户可以执行通常只有超级用户(root)才能执行的命令,如关机、重启等。这不仅减少了root用户的登录和管理时间,也提高了系统的安全性。

基本语法:sudo [选项] 命令

        -V:显示版本信息。

        -h:显示帮助信息。

        -l:列出当前用户的权限。

        -v:更新用户的sudo有效时间。

        -k:结束sudo的有效时间,下次使用时需要重新输入密码。

        -b:在后台执行命令。

        -p:自定义密码提示信息。

        -u:以指定的用户身份执行命令。

eg:

要以root用户身份查看隐藏文件:  sudo ls -a

使用sudo时,应谨慎避免误操作,遵守系统规则和策略,不滥用权限,并注意环境变量的影响。sudo会记录操作日志,对于非授权用户的尝试,系统会记录安全事件。

 sudo配置文件:

sudo的配置文件位于 /etc/sudoers,通常需要使用 visudo命令进行编辑,以防止语法错误。在sudoers文件中,可以定义用户或用户组的权限,指定哪些用户可以在哪些主机上执行哪些命令。

 sudoers文件的权限即使是root用户,也仅仅只有可读权限。

修改该文件的方式:

方式1:   root用户  直接vi /etc/sudoers  然后强制保存
方式2:直接输入visudo

visudo:

[root@linux01 ~]# visudo

        进入后,找到第100行和110行。(set nu指令显示行号)

        - 在100行的 root ALL=(ALL) ALL下面填写                  ---配置这个,就可以使用sudo了。       
          scott  ALL=(ALL)   ALL


        - 在110行的 #%whell  ALL=(ALL)  NOPASSWD:ALL下面填写    --配置这个,就可以不用再输入密码了
          scott  ALL=(ALL) NOPASSWD:ALL
  
  
-解析:   scott  ALL=(ALL) ALL
    第一列:使用sudo的账号
    第二列:客户端计算机主机名
    第三列:可切换的身份
    第四列:可使用的指令,注意使用具体指令时需要使用绝对路径,多个指令用逗号分开
    
    
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
lucy    ALL=(ALL)       ALL
lily    ALL=(ALL)       ALL
xiaohei ALL=(root)     /usr/bin/chown,/usr/bin/chgrp    
xiaobai ALL=(root)      ALL

 参考一下:(让yangyang可以有root的身份,用root的chown和charp指令并且不用输入密码)

标签:修改,root,用户组,用户,etc,指令,Linxu,权限,高阶
From: https://blog.csdn.net/NGC2237999/article/details/145075784

相关文章

  • vue指令-防抖
     //1.设置v-throttle自定义指令Vue.directive('throttle',{bind:(el,binding)=>{letthrottleTime=binding.value;//防抖时间if(!throttleTime){//用户若不设置防抖时间,则默认2sthrottleTime=2000;}letcbFun;el.addEvent......
  • 高阶C语言|探索指针的根源之目(进阶指针)
    文章目录前言1.字符指针(`char*`)1.1字符串常量与指针1.2字符指针的使用2.数组指针与指针数组2.1指针数组2.2数组指针3.数组与指针传参3.1一维数组传参3.2二维数组传参4.函数指针(`functionpointer`)4.1函数指针的基本用法4.2使用函数指针数组5.指向函数指......
  • 【AIGC-ChatGPT进阶提示词指令】智慧母婴:打造基于成长树的儿童发展引导系统
    第一次进入全站综合热榜,有点紧张好了,开始今天的内容,今天的内容是基于育儿的系统今天继续回馈大家,最近都是可以在自媒体上使用的提示词。提示词在最下方引言在人工智能时代,如何将传统育儿智慧与现代教育理念有机结合,为父母提供更直观、系统的育儿指导,成为一个值得探......
  • 【Linux】Linux常见指令(下)
    个人主页~Linux常见命令(上)~初识Linux一、Linux基本命令11、cat命令12、more指令13、less指令14、head指令15、tail指令16、时间相关的指令(1)date指令(2)cal指令17、find指令18、grep指令19、压缩相关指令(1)zip、unzip指令(2)tar指令20、bc指令一、Linux基本命令i=1......
  • matlab指令窗口功能
    指令窗口的基本功能   下面对指令窗口的七种功能各举一些简单的例子。1.1数值计算>>A=52,a=3                   %对A、a赋值,用逗号分割A=52a=3                                 %回车后显示结果,字母大小写有区......
  • 请说说在Angular中哪些类型的组件可以创建自定义指令?
    在Angular中,可以创建自定义指令的组件类型主要包括以下几种:模板指令(组件):模板指令实际上就是组件,它们是Angular中非常核心的部分。每个Angular组件都是一个自定义的模板指令,它定义了视图的HTML结构以及与之关联的逻辑。通过@Component装饰器,我们可以创建并配置一个组件,其中包括......
  • 请说说在Angular中组件和指令的生命周期挂钩是什么?
    在Angular中,组件和指令的生命周期挂钩(LifecycleHooks)是特定的事件,允许开发者在组件或指令生命周期的特定阶段执行自定义的代码逻辑。这些挂钩提供了一种机制,让开发者能够更好地控制和管理组件或指令的创建、更新和销毁过程。组件的生命周期挂钩包括:ngOnChanges:当Angular设置......
  • 系统编程(常见指令实现)
    ls-l完整实现1.文件操作opendir():用于打开一个目录流,并返回一个指向DIR结构的指针。如果打开失败,返回NULL。函数名opendir头文件#include<sys/types.h>#include<dirent.h>函数原型DIR*opendir(constchar*name);功能打开name指定的目录参数说明name:要操作的目......
  • JavaScript 高阶技巧
    文章目录1、解构赋值的别名2、Currying3、防抖与节流4、记忆化5、代理对象6、生成器7、善用控制台8、结构化克隆9、自执行函数10、标记模版字符串1、解构赋值的别名解构赋值允许你从数组或对象的属性中提取值并将其分配给不同的变量。别名允许你在这一过程中重命名......
  • 【AIGC-ChatGPT进阶提示词指令】命运之轮:一个融合神秘与智慧的对话系统设计
    引言在人工智能与用户交互的发展历程中,如何创造一个既能提供实质性帮助,又能带来独特体验的对话系统,一直是一个充满挑战的课题。本文将介绍一个别具一格的对话系统设计——“命运之轮”,它通过将传统的塔罗牌占卜元素与现代技术完美结合,创造出一种新颖的人机交互体验。提......