目录
user 不在 sudoers 文件中。此事将被报告解决办法
Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
要想重新允许,则将1变为0即可:
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
su root鉴定故障是因为在安装linux系统时没有给root用户设置密码,重新设置密码即可:sudo passwd root
以root用户登录、给/etc/sudoers加写权限。
vim /etc/sudoers
添加如下行即可:
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
更改文件属性:
语法:
chgrp [-R] 属组名 文件名
参数选项
语法:
- chown [–R] 属主名 文件名
- chown [-R] 属主名:属组名 文件名
如果我们需要将文件权限设置为 rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定.
- # 输出文件内容
- cat 文件名
-
- # 输出指定行
- # 从头部输出(指定行)内容,默认10行
- head [-n number] 文件名
- # 从尾部输出(指定行)内容,默认10行
- tail [-n number] 文件名
tar
解包:tar zxvf filename.tar
打包:tar czvf filename.tar dirname
gz命令
解压1:gunzip filename.gz
解压2:gzip -d filename.gz
压缩:gzip filename
.tar.gz 和 .tgz
解压:tar zxvf filename.tar.gz
压缩:tar zcvf filename.tar.gz dirname
压缩多个文件:tar zcvf filename.tar.gz dirname1 dirname2 dirname3.....
bz2命令
解压1:bzip2 -d filename.bz2
解压2:bunzip2 filename.bz2
压缩:bzip2 -z filename
.tar.bz2
解压:tar jxvf filename.tar.bz2
压缩:tar jcvf filename.tar.bz2 dirname
bz命令
解压1:bzip2 -d filename.bz
解压2:bunzip2 filename.bz
.tar.bz
解压:tar jxvf filename.tar.bz
z命令
解压:uncompress filename.z
压缩:compress filename
.tar.z
解压:tar zxvf filename.tar.z
压缩:tar zcvf filename.tar.z dirname
zip命令
解压:unzip filename.zip
压缩:zip filename.zip dirname
添加用户:useradd 选项 用户名
参数说明:
例1:useradd -d /home/zhen -m zhen
此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam(/home为默认的用户主目录所在的父目录)。
例2:useradd -s /bin/sh -g group -G adm,root zhen
此命令新建了一个用户gem,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
这里可能新建组:#groupadd group及groupadd adm
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
删除账号:userdel 选项 用户名
常用的选项是 r,它的作用是把用户的主目录一起删除。
例1:userdel -r zhen
修改账号:usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等
,这些选项的意义与useradd
命令中的选项一样,可以为用户指定新的资源值。
另外,有些系统可以使用选项:-l 新用户名
这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
用户口令管理:passwd 选项 用户名
可使用的选项:
例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:
- $ passwd
- Old password:******
- New password:*******
- Re-enter new password:*******
如果是超级用户,可以用下列形式指定任何用户的口令:
- # passwd sam
- New password:*******
- Re-enter new password:*******
为用户设置空口令:passwd -d zhen
锁定用户账户:passwd -l zhen
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
新建用户组:groupadd 选项 用户组
可以使用的选项有:
例1:
- # 此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。
- groupadd group1
例2:
- # 此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。
- groupadd -g 101 group2
删除用户组:groupdel 用户组
修改用户组:groupmod 选项 用户组
常用的选项有:
groupmod -g 102 group2
此命令将组group2的组标识号修改为102。
实例2:
groupmod –g 10000 -n group3 group2
此命令将组group2的标识号改为10000,组名修改为group3。
切换到其他用户组:newgrp 组名
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。
批量添加用户:
Linux 磁盘管理常用三个命令为 df、du 和 fdisk。
df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:df [-ahikHTm] [目录或文件名]
选项与参数:
inux du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍 Linux du 命令。
语法:du [-ahskm] 文件或目录名称
选项与参数:
fdisk 是 Linux 的磁盘分区表操作工具。
语法:fdisk [-l] 装置名称
选项与参数:
mkfs [-t 文件系统格式] 装置文件名
选项与参数:
Linux 的磁盘挂载使用 mount
命令,卸载使用 umount
命令。
磁盘挂载语法:
mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
磁盘卸载命令 umount
语法:**umount [-fn] 装置文件名或挂载点
选项与参数:
例子:树莓派优盘挂载与卸除
优盘插入前:
优盘插入后:
可见多了一个分区sda4
df -h查看磁盘情况:(插入后已自动挂载到/media/pi/振这个位置)
手动卸载:(umount /dev/sda4)
将优盘重新挂载到/home/pi/zhen目录下(目录不存在则需要创建)
访问时发现挂载点为只读的解决办法:**sudo mount -o uid=pi,gid=pi /dev/sda4 /home/pi/zhen
-o 参数指定下用户和用户组即有了权限。
创建挂载点的时候记得也付下权限 mkdir -m 777 文件夹
其他权限问题:待研究
靠谱的解决权限问题的方案:
树莓派4B挂载U盘,修改owner,权限等失败问题解决_雨痕云的博客-CSDN博客
第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等
第二部分:一般模式切换到编辑模式的可用的按钮说明
第三部分:一般模式切换到指令行模式的可用的按钮说明
特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。
举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令。
yum 语法:yum [options] [command] [package ...]
网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错。
将yum源设置为163 yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。
首先备份/etc/yum.repos.d/CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)
- wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
- mv CentOS6-Base-163.repo CentOS-Base.repo
运行以下命令生成缓存
- yum clean all
- yum makecache
除了网易之外,国内还有其他不错的 yum 源,比如中科大和搜狐。
中科大的 yum 源,安装方法查看:Centos 镜像使用帮助 - LUG @ USTC
sohu 的 yum 源安装方法查看: http://mirrors.sohu.com/help/centos.html
apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
apt 命令执行需要超级管理员权限(root)。
apt 语法:apt [options] [command] [package ...]
列出所有可更新的软件清单命令:sudo apt update
升级软件包:sudo apt upgrade
列出可更新的软件包及版本信息:apt list --upgradeable
升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
安装指定的软件命令:sudo apt install
安装多个软件包:sudo apt install
更新指定的软件命令:sudo apt update
显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show
删除软件包命令:sudo apt remove
清理不再使用的依赖和库文件: sudo apt autoremove
移除软件包及配置文件: sudo apt purge
查找软件包命令: sudo apt search
列出所有已安装的包:apt list --installed
列出所有已安装的包的版本信息:apt list --all-versions
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。
由于习惯的原因,简洁起见,本文出现的 "shell编程" 都是指 shell 脚本编程,不是指开发 shell 自身。
Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种类众多,常见的有:
Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。
在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。
#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。
- #!/bin/bash
- # 定义一个变量
- NAME="ZHEN"
-
- #使用变量$
- echo "My Name is ${NAME}"
-
- for skill in CPP JAVA NODEJS;do
- echo "I am good at ${skill}Language"
- done
-
- # 只读变量的定义
- myVar="onlyreadVar"
- readonly myVar
- myVar="changemyVar"
-
- # 删除变量
- unset myVar
- echo ${myVar}
-
- str='this is a string'
- # 单引号限制1:引号中任何字符串原样输出,单引号中的变量是无效的
- # 单引号限制2:单引号中不能出现单独的一个引号(对单引号转移也不行),但可以成对出现
-
- myname="mazhen"
- str="hello, I know you are \"${myname}\"!\n"
- echo -e ${str}
- # 双引号优点:双引号里可以有变量;双引号里可以出现转义字符
-
-
- # 拼接字符串
- a="hello"
- b="hello, "${a}"!"
- b1="hello, ${a}!"
- echo $b $b1
-
- b2='hello, '$a'!'
- b3='hello, ${a}!'
-
- echo $b2 $b3
-
- # 获取字符串长度
- string="abcd"
- echo ${#string} #输出 4
-
-
- # 提取字符串
- string="runoob is a great site"
- echo ${string:1:4} # 输出 unoo
-
- # 查找字符串
- string="runoob is a great site"
- echo `expr index "$string" io` #输出4
-
- # 定义数组
- arr=(1 2 3 4)
- arr1=(
- 1
- 2
- 3
- 4
- )
-
- arr2[0]=1
- arr2[1]=22222
-
- # 读取数组
- var1=${arr2[1]}
- echo $var1
-
-
- # 获取数组长度
- length=${#arr1[@]}
- echo "arr1 length is $length"
-
- # 多行注释 除了多行# 还可以写成下面:
- :<<EOF
- dddd
- ddd
- dddd
- EOF
可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
- #!/bin/bash
- # author zhen
-
- echo "Shell 传递参数实例!"
- echo "执行的文件名:$0"
- echo "第一个参数为:$1"
- echo "第二个参数为:$2"
- echo "第三个参数为:$3"
-
- # echo "please input your name:\n"
- # read name
- #echo "your name is ${name}"
-
- echo "参数个数为:$#"
- echo "传递的参数作为一个字符串显示:$*"
-
- # $* 和 $@
- echo "-- \$* 演示 --"
- for i in "$*"; do
- echo $i
- done
-
- echo "-- \$@ 演示 --"
- for i in "$@";do
- echo $i
- done
Shell 和其他编程语言一样,支持多种运算符,包括:
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '):
- #!/bin/bash
-
- val=`expr 2 + 2`
- echo "两数之和为 : $val"
-
- # 两数之和为 : 4
注意:
- 乘号(*)前边必须加反斜杠(\)才能实现乘法运算;
- if...then...fi 是条件语句,后续将会讲解。
- 在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 "*" 不需要转义符号 "\" 。
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
---------------------------------------------------------------------暂停----------------------------------------------------