扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
su和sudo这两个命令是Linux运维必须要会的,通常在生产环境中都是使用普通帐号来登录,再使用su或sudo来执行一些管理命令。
在莱州等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、成都做网站 网站设计制作按需策划设计,公司网站建设,企业网站建设,高端网站设计,成都营销网站建设,成都外贸网站建设公司,莱州网站建设费用合理。
su:run a shell with substitute user and group ids
-,-l,--login 切换后使用指定用户的的shell。
-c,--command=COMMAND 可以在不切换当前shell的情况下,用指定的用户来执行一个命令;
如果在su的时候没有加”-“或“-l”或“--login”那么默认的会使用 当前用户 的shell来执行 ;
sudo的配置文件是: /etc/sudoers ,该文件可以定义哪个用户可以在哪个机器上以哪个用户的身份来执行哪些命令;
在配置sudo时必须使用 visudo 来编辑配置文件,因为使用visudo可以检查修改后的文件的语法是否正确;
可以将上面的配置行分成四部分:part1 part2 part3 part4
例如:
那么如果用户的数量过多的时候是不是要为每个用户来创建一个条目呢,很显示这样做是不科学的。所以sudo就引入了别名的概念,其实和组也差不多;
alias定义的语法:
要注意的是,这个Alias的名称一定要大写;
user1是一个用户,user2是一个组,所以user2的前面要加上%
可以使用主机名,IP地址,网段(网段的掩码可以写成255.255.255.0,也可以写成/24)
命令必须使用绝对路径。如果只指定了一个目录,那么用户就可以执行该目录下的所有的文件;上面的“=”右边的都可以使用“!”来取反。表示除了xxx以外;
例子 :请允许user1,user2,user3在192.168.20.44和192.168.10.0/24网段的机器上使用sudo切换到root用户来执行useradd和setup命令;
然后就可以使用user1,user2,user3这三个用户去测试了;
注意:当用户第一次执行sudo命令的时候是需要用户输入自己的密码的。当第一次输入正确后,这个密码就会被缓存5分钟,在5分钟内用户再次使用sudo来切换身份执行命令的时候就不需要再次输入自己的密码。
这样呢有些时候会有一个安全隐患,所以为了去掉这个5分钟,可以在使用sudo命令的时候加上“-k”参数,这样用户在每次执行sudo命令的时候都会让用户输入自己的密码。
如果想让某个用户在执行sudo的时候不需要输入自己的密码,那么可以在命令的前面添加NOPASSWD。/etc/sudoers的内容如下:
这样的话,user1,user2,user3这三个用户在执行指定的命令的时候就不需要输入自己的密码了。
如果其中的命令有的需要输入密码,有的不需要输入密码的话,那就把PASSWD:写在那些命令的前面。或是把NOPASSWD:写在最后一个命令中;
例子:让用户user4使用passwd来管理用户的密码,但是不能给root用户设置密码:
注意:如果最后不加上!/usr/bin/passwd root的话,那么会有很大的漏洞,user4可以修改root用户的密码;当添加上后,user4再次执行sudo passwd root的时候就会提示:
我们平时所说的 Shell 可以理解为 Linux 系统提供给用户的使用界面。Shell 为用户提供了输入命令和参数并可得到命令执行结果的环境。当一个用户登录 Linux 之后,系统初始化程序 init 就根据 /etc/passwd 文件中的设定,为每个用户运行一个被称为 Shell(外壳)的程序。
确切地说,Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至编写一些程序。
Shell 处在内核与外层应用程序之间,起着协调用户与系统的一致性、在用户与系统之间进行交互的作用。图 1 是 Linux 系统层次结构图,Shell 接收用户输入的命令,并把用户的命令从类似 abed 的 ASCII 码解释为类似 0101 的机器语言,然后把命令提交到系统内核处理;当内核处理完毕之后,把处理结果再通过 Shell 返回给用户。
换句话说:
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
Shell 与其他 Linux 命令一样,都是实用程序,但它们之间还是有区别的。一旦用户注册到系统后,Shell 就被系统装入内存并一直运行到用户退出系统为止;而一般命令仅当被调用时,才由系统装入内存执行。
与一般命令相比,Shell 除了是一个命令行解释器,同时还是一门功能强大的编程语言,易编写,易调试,灵活性较强。作为一种命令级语言,Shell 是解释性的,组合功能很强,与操作系统有密切的关系,可以在 Shell 脚本中直接使用系统命令。大多数 Linux 系统的启动相关文件(一般在 /etc/rc.d 目录下)都是使用 Shell 脚本编写的。
同传统的编程语言一样,Shell 提供了很多特性,这些特性可以使 Shell 脚本编程更为有用,如数据变量、参数传递、判断、流程控制、数据输入和输出、子程序及中断处理等。
说了这么多,其实我们在 Linux 中操作的命令行界面就是 Linux 的 Shell,也就是 Bash,但是我们的图形界面是 Shell 吗?其实从广义讲,图形界面当然也是 Shell,因为它同样用来接收用户的操作,并传递到内核进行处理。不过,这里的 Shell 主要指的是 Bash。
Shell 脚本
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。
由于习惯的原因,简洁起见,本文出现的 "shell编程" 都是指 shell 脚本编程,不是指开发 shell 自身。
Shell的分类
目前 Shell 的版本有很多种,如 Bourne Shell、C Shell、Bash、ksh、tcsh 等,它们各有特点,下面简要介绍一下。
最重要的 Shell 是 Bourne Shell,这个命名是为了纪念此 Shell 的发明者 Steven Bourne。从 1979 年起,UNIX 就开始使用 Boume Shell。Bourne Shell 的主文件名为 sh,开发人员便以 sh 作为 Bourne Shell 的主要识别名称。
虽然 Linux 与 UNIX 一样,可以支持多种 Shell,但 Boume Shell 的重要地位至今仍然没有改变,许多 UNIX 系统中仍然使用 sh 作为重要的管理工具。它的工作从开机到关机,几乎无所不包。在 Linux 中,用户 Shell 主要是 Bash,但在启动脚本、编辑等很多工作中仍然使用 Bourne Shell。
C Shell 是广为流行的 Shell 变种。C Shell 主要在 BSD 版的 UNIX 系统中使用,发明者是柏克莱大学的 Bill Joy。C Shell 因为其语法和 C 语言类似而得名,这也使得 UNIX 的系统工程师在学习 C Shell 时感到相当方便。
Bourne Shell 和 C Shell 形成了 Shell 的两大主流派别,后来的变种大都吸取这两种 Shell 的特点,如 Korn、 tcsh 及 Bash。
Bash Shell 是 GNU 计划的重要工具之一,也是 GNU 系统中标准的 Shell。Bash 与 sh 兼容,所以许多早期开发出来的 Bourne Shell 程序都可以继续在 Bash 中运行。现在使用的 Linux 就使用 Bash 作为用户的基本 Shell。
Bash 于 1988 年发布,并在 1995-1996年推出Bash 2.0。在这之前,广为使用的版本是1.14,Bash 2.0增加了许多新的功能,以及具备更好的兼容性。表 2 中详细列出了各版本的具体情况。
注意,Shell 的两种主要语法类型有 Bourne 和 C,这两种语法彼此不兼容。Boume 家族主要包括 sh、ksh、Bash、psh、zsh;C 家族主要包括 csh、tcsh(Bash 和 zsh 在不同程序上支持 csh 的语法)。
本章讲述的脚本编程就是在 Bash 环境中进行的。不过,在 Linux 中除了可以支持 Bash,还可以支持很多其他的 Shell。我们可以通过 /etc/shells 文件来査询 Linux 支持的 Shell。命令如下:
在 Linux 中,这些 Shell 是可以任意切换的,命令如下:
用户信息文件 /etc/passwd 的最后一列就是这个用户的登录 Shell。命令如下:
大家可以看到,root 用户和其他可以登录系统的普通用户的登录 Shell 都是 /bin/bash,也就是 Linux 的标准 Shell,所以这些用户登录之后可以执行权限允许范围内的所有命令。不过,所有的系统用户(伪用户)因为登录 Shell 是 /sbin/ndogin,所以不能登录系统。
笔记:
sh/bash/csh/Tcsh/ksh/pdksh等shell的区别
以下是linux基本命令df和linux中du命令参数介绍,希望对您的学习有所帮助。linux中df命令参数:linux中df命令参数用于查看linux文件系统的状态信息,显示各个分区的容量、已使用量、未使用量及挂载点等信息。如df -k 以千字节KB 为单位显示各分区的信息df -h 以GB 为单位显示各分区的信息df -a 显示所有分区包括大小为0 的分区df -T 显示分区类型EXT2 或EXT3 等linux中du命令参数:linux中du命令参数用于查看文件或文件夹的大小。如du -b /home 以字节为单位显示/home 文件夹下各个子文件夹的大小du -ks home 以千字节KB 为单位显示/home 文件夹的总大小以上是linux基本命令df和linux中du命令参数介绍。作者 yingbin920
1、目录切换命令
cd usr/ 切换到该目录下usr目录
cd ../ 切换到上一层目录
cd /切换到系统根目录
cd ~ 切换到用户主目录
2、目录操作命令
(1)增加目录
命令:mkdir 目录名称
(2)查看目录
ls [-al] 父目录 ls -l 可以缩写成ll
(3)寻找目录
find 目录 参数(重点)
注意这里涉及权限问题,需要先切换到root目录 su root
(4)修改目录名称
mv 目录名称 新目录名称
(5)拷贝目录
cp -r 被目录名称 目录拷贝的目标位置 -----r代表 递归拷贝
将/usr下的newTest拷贝到根目录下的test中,使用cp -r /usr/newTest test/rm
(6)删除目录
rm [-rf] 目录
删除/usr下的newTest,进入/usr下使用rm -r newTest
3、文件操作命令
(1)文件创建 touch 文件名称 ----- 空文件
(2)文件查看 cat/more/less/tail 文件
(3)修改文件内容 vim 文件
vim 文件------进入文件-----命令模式------按i进入编 辑模式-----编辑文件 -------按Esc进入底行模式----- 输入:wq/q!
(4)删除文件
熟记 rm -rf 文件 即可
4、压缩文件操作命令
(1)tar -zcvf 打包压缩后的文件名 要打包压缩的文件
z:调用gzip压缩命令进行压缩
c:打包文件
v:显示运行过程
f:指定文件名
(2) 解压压缩包(重点)
tar [-xvf] 压缩文件
5、其他命令
(1)显示当前所在位置 pwd
(2)搜索命令 grep 要搜索的字符串 要搜索的文件
(3)管道命令 | 将前一个命令的输出作为本次目录的 输入
(4)查看进程 ps -ef
(5)网络通信命令 查看当前系统的网卡信息:ifconfig
查看与某台机器的连接情况:ping
(6)查看当前系统的端口使用 netstat –an,通常和 | grep一起使用
6、Linux的权限命令
在随意某个目录下ls -l 查看某个目录下的文件或目录 的权限 rwx 读取权 写入权 执行权
这个字符串有10位,可以分为4段来解读
第一段(第1位)表示是目录还是文件,-表示是文件,d表示是目录;
第二段(第2-4位,共3个字符串)表示文件所属用户对它的权限 - 属主权限(User);
第三段(第5-7位,共3个字符串)表示文件所属用户组用户对它的权限 - 属组权限(Group);
第四段(第8-10位,共3个字符串)表示其他用户对它的权限 - 其他权限(other);
注意:①我们用3位8进制来表示文件的权限,r(read)用4标识,w(write)用2标识,x(excute)用1标识
②r–可读,w–可写,x–可执行。
③每一段的三位顺序不可变,如果没有对应的权限,则使用-表示
上图中的-rwxrw-r–可以用八进制数字764表示。
!!!!修改文件/目录的权限的命令:chmod
chmod u=rwx,g=rw,o=r aaa.txt 或者777 代表全部权限
7、 free查看内存信息
df -h 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计
8、top查看资源信息(CPU)
top
补充:
关机命令
reboot 重新启动操作系统
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h 10:23
shutdown -h +10 系统再过十分钟后自动关机
Linux命令
目录操作
cd usr/ 切换到该目录下usr目录
cd .. 切换到上一层目录
cd / 切换到系统根目录
mkdir 目录名称 创建目录
ls 目录名称 查询该目录下所有的目录和文件
ls [-a] 目录名称 查询该目录下所有的目录和文件,包含隐藏文件
ls [-l] 目录名称 查询该目录下所有的目录和文件的详细信息
find / -name 目录名称 查找/root下的目录(文件)
mv 目录名称 新目录名称 修改目录名称
mv 目录名称 目录的新位置 剪切
cp -r 目录名称 目录的目标位置 拷贝
rm -rf 目录 强制删除目录
文件操作
touch 文件名称 创建空文件
cat/more/less/tail 文件 查看文件内容
tail -f 文件 动态查看/实时查看文件(日志)
grep 要搜索的字符串 要搜索的文件 关键字搜索
vi/vim 文件 修改文件内容
rm -rf 文件 强制删除文件
文件的打包
tar -zcvf 文件名.tar 要打包的文件
文件的解压
tar -xvf 文件名.tar
扩充:将文件解压到固定位置
tar -xvf 文件名.tar -C 指定解压的位置
查询当前所在位置
pwd
查看进程
ps -ef | grep 进程名称(tomcat/mysql)
杀死进程
kill -9 进程pid
查看端口号
netstat -an | grep 端口号(3306)
查看服务器ip
ifconfig
查看网络是否能正常使用
ping 外网地址 查看是否能访问外网
ping 内网ip 查看是否能访问内网
权限命令
chmod 777 文件 赋权
查看cpu
top
查看磁盘信息
df -h
查看内存信息
free
关机命令
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h 10:23
shutdown -h +10 系统再过十分钟后自动关机
重新启动
reboot 重新启动操作系统
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流