• Shell基础


    什么是Shell

      Shell——是介于用户与系统之间,帮助用户与系统进行沟通的工具。

      我们通常提到 shell 时都是指狭义的 shell,即文字模式的 shell。除了文字模式的 shell 外,GNOME、KDE 这类图形界面也属于 shell 的范畴。

    • Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell
    • Shell也是一门编程语言<解释型的编程语言>,即shell脚本
    • 一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的

    Linux 中有哪些 shell?

      一般来说,shell 可以分成两类。第一类是由 Bourneshell 衍生出来的包括
    sh,ksh,bash,与 zsh。第二类是由 Cshell 衍生出来的,包括 csh 与 tcsh。此之外还有一个 rc。
      同时Linux 下支持的 shell 有许多种,但我们只要学习最应用最广泛的 bash
    shell 就行了。而且现在主要的 Linux 发行版都使用 bash 做为默认的管理
    shell。所以不论使用哪种 Linux 发行版,都无可避免地要学习 bash。

    shell的优点:

    1. 图形用户界面——只是一个程序套件,文字模式的 shell 功能和能执行
      的任务则比图形界面要强得多。
    2. shell 是文字模式,因此远程登录和传输的速度比图形界面更快
    3. shell 使用更方便。在图形界面需要打开许多窗口执行许多次点击的任
      务,使用 shell 也许只需要简单几个命令就能完成了。

    shell的书写

      首先命令都是在shell终端中输入并执行的。打开终端后,就会出现一个提示符。其形式通常如下:

    username@hostname$
    或者
    root@hostname #
    

    要么就简单地以 $ 或 # 表示。
    $ 表示普通用户, # 表示管理员用户root。root是Linux系统中权限最高的用户。

    Shell脚本的执行方式

    程序要运行,就必须有执行权限。用代码表示为:

    chmod +x script.sh
    

    有三种权限更改方式:chmod/acl/sudo
    前两者用来更改文件权限,sudo用来更改应用程序或者是命令的执行权限
    chmod的局限是无法实现多种权限分配(用户群体只有三种),面对多权限时需要用ACL进行设置

    第一种:Chmod

    chmod (agou)(+-)(rwx) filename
    agou 表示文件权限更改影响的范围,分别代表all, group, others, user

    • +-表示增加或者删除权限
    • rwx表示具体的权限类型
    • chmod a+x test.txt 表示给test.txt的所有使用者增加执行权限
    • chmod a-x,a-w test.txt 表示去除所有人执行和更改test.txt的权限

    chmod XXX filename
      三类用户一起设置,第一个X代表所有者,第二个X代表所属组,第三个X代表其他
      r(4) w(2) x(1): chmod 755 test.txt 给test.txt的owner设置rwx的权限,给其他所有用户设置rx权限因为要计算每一种用户的权限,多用于批量处理权限。对用户单独设置权限多用英文,而非数字
      权限细化的问题,chmod最多只有三个权限组,当有多个用户,并且每个用户的权限都不一样时,chmod有局限性。

    第二种:ACL(setfacl/getfacl)

    文件和文件夹的权限:
      如果有多个用户组,权限设置是很复杂的事情,需要仔细规划(ACL和Chmod混合使用容易产生一些权限问题,建议单独使用)

      文件夹的读权限:可以列出目录下内容
      文件夹执行权限:可以进入到文件夹中,执行切换目录等操作
      文件夹的写权限:可以在文件夹中增删文件

      用户对某个文件有了rwx权限,不代表用户有权删除该文件,只代表对文件内容有了删除权限,要能对文件级别进行操作,需要设置相应的文件夹的w权限。

    getfacl filename/filedirectory
    

      查看文件/文件夹 权限:结果会展示user,group和other的整体权限,以及特殊用户的权限

    setfacl -m u:username:rwx filename
    

      给某个用户添加对某个文件或者文件夹的特殊权限
    给普通用户添加完相应权限以后,root也会有相应的权限(理论上root拥有最多的权限)

    setfacl -x u:username filename
    

    删除用户对某个文件或者是文件夹的特殊权限

    第三种:SUDO

      不同于chmod/acl 设置某个文件的权限,sudo主要是为非root用户增加系统的处理和执行权限。比如只有root有useradd权限,通过sudo,可以为普通用户增加useradd权限。

      为普通用户增加权限有两种方式:带密码验证和不带密码验证,并且可以指定sudo可运行的机器。
    使用sudo有两个步骤:

    1. visudo编辑权限
    2. 普通用户在使用命令前添加sudo

    创建无密码sudo(执行脚本时通常采用无密码sudo)
    编辑visudo: 运行visudo, 采用Vim编辑器编辑添加 sr localhost=NOPASSWD:/usr/sbin/useradd,给用户sr添加“添加用户”的超级权限
    切换到sr用户
      sudo useradd testadd,在sr模式下添加新的用户
      创建有密码sudo(可以确保有密码用户才使用此命令)
      编辑visudo: 运行visudo,

      采用Vim编辑器编辑添加 sr localhost=/usr/sbin/useradd,给用户sr添加“添加用户”的超级权限

    切换到sr用户
    sudo useradd testadd,系统会弹出命令提示,验证完命令以后sr可以成功添加用户

    权限的解释

    -rw-r--r--:表示文件的相关权限,除去前面的横杠,总共九个字符,

    分别对应9个权限,前三个字符代表文件属主权限,中间三个代表同组用户权限,后面三个字符代表其他用户权限。每个人对文件都有三种操作

    1. r 读权限
    2. w 写/更改权限
    3. x 执行该脚本或程序的权限

      当用户创建一个新的 文件时候,系统为了安全考虑,一般不会给文件的创建者执行的权限,即x。,对于文件属主来说,在只有读权限位被置位的情况下,仍然可以通过文件重定向的方法向该文件写入。注意能否删除一个文件还依赖于该文件所在目录权限位的设置。我个人认为是取文件所在目录和文件自身权限的交集。
    件所在目录权限位的设置。 一些举例:

    ​ 权限所代表的含义

    • ​ r-- --- --- 文文件属主可读,但不能写或执行
    • ​ r-- r-- --- 文文件属主和同组用户(一般来说,是文件属主所在的缺省组)可读
    • ​ r-- r-- r- - 文任何用户都可读,但不能写或执行
    • ​ rwx r-- r- - 文文件属主可读、写、执行,同组用户和其他用户只可读
    • ​ rwx r-x --- 文文件属主可读、写、执行,同组用户可读、执行
    • ​ rwx r-x r- x 文文件属主可读、写、执行,同组用户和其他用户可读、执行
    • ​ rw- rw- --- 文文件属主和同组用户可读、写
    • ​ rw- rw- r- - 文文件属主和同组用户可读、写,其他用户可读
    • ​ rw- rw- --- 文文件属主和同组用户及其他用户读可以读、写,慎用这种权限设置,因为任何用户都可以写入该文件

    运行脚本

    第一种:输入脚本的绝对路径或相对路径

    	/root/helloWorld.sh
    	./helloWorld.sh
    

    或者,不用赋予+x权限,而用解释器解释执行

    	sh  helloworld.sh
    

    第二种:bash或sh +脚本

    	sh /root/helloWorld.sh
    	bash helloWorld.sh
    

    第三种:在脚本的路径前再加". "

    	. /root/helloWorld.sh
    	. ./helloWorld.sh
    
  • 相关阅读:
    SignalR + MVC5 简单示例
    SignalR 简单示例
    Web API 简单示例
    Windows Azure 使用体验
    SQL Server 2014 安装小记
    SSRS 迁移
    SSH配置(同一服务器不同用户)
    【6】Zookeeper脚本及API
    【3】Kafka安装及部署
    【2】Kafka概念及原理
  • 原文地址:https://www.cnblogs.com/yangliguo/p/7978886.html
Copyright © 2020-2023  润新知