一、预备知识

1、shell的作用

 

2、常识

(1)Tab键自动补全
   使用Terminal时,输入命令的前几个字母,敲tab会自动补全命令或文件名、目录等。
   好处:操作速度更快;不容易出错;
(2)清屏命令
  Ctrl + L 或 输入命令clear 
(3)命令历史:
 执行:history     
清除历史:history -c
        技巧1:!num  命令直接打开历史命令,num为history查看的序列
        技巧2:!XX     命令查看历史命令中最后一次以xx结尾的命令
    技巧3:Ctrl + R ,然后输入历史命令的一部分,能快速搜索想要找的历史操作全名
 
(4)命令别名:
  使用频率高的复杂命令,可以设置简短的调用名称,存放位置: ~/.bashrc
    alias  别名=‘实际执行命令’         设置别名
    unalias  别名                          取消别名
    alias     [别名]                        查看系统中的别名                    
  注意:别名,重启后消失,若经常使用,可以保存到bashrc文件中
  
(5)输出重定向
  1>相当于>正确重定向
  2>错误重定向(将错误信息重定向到指定文件中)
 
  将正确和错误的结果都重定向到文件中的方法:
         命令  1>   文件  2>&1  
         命令  1>>   文件  2>&1  
  解释:错误的信息也会通过通道1进入文件中。
 
  管道操作符号“|”
练习示例:
[root@Salve scripts]# free -m | grep Mem
Mem: [root@Salve scripts]# free -m | grep -i mem
Mem: [root@Salve scripts]# free -m | grep -i mem | awk 'print $4'
awk: print $
awk:^ syntax error [root@Salve scripts]# free -m | grep -i mem | awk '{print $4}' [root@Salve scripts]# free -m | grep -i mem | awk '{print $2,$3,$4}' [root@Salve scripts]# free -m | grep -i mem | awk '{print $2"\n",$3,$4}' [root@Salve scripts]# free -m | grep -i mem | awk '{print $2"\n",$3"\n",$4"\n"}' [root@Salve scripts]# free -m | grep -i mem | awk '{print "total:"$2"\n","used:"$3"\n","free:"$4"\n"}'
total:
used:
free:

(6)Linux系统的启动级别

  从0 到 6 共7个,比较重要的是0、3、5、6。

  说明:

    init 0 关机
    init 3 字符模式模式(网络功能齐全)
    init 5 图形界面
    init 6 重启
  注:可在终端输入init x进入到对应的状态,如重启:# init 6
 

二、认识权限和用户管理

1、关于权限

权限类型:
    1、r 读
    2、w 写
    3、x 可执行
 
Linux用户
    1、所有者(u)
    2、所属组(g) (所有者及所有者所在组的全部用户)
    3、其他用户(o)(其他组的所有用户(包括文件所有者))
    4、所有用户(a)
 
文件权限解读

 -rw-r--r--. 1 root root 44184 5月 22 00:28 install.log
  -        rw-        r--         r--                root    root     44184             insall.log
  文件类型 所有者权限  所属组权限  其他用户权限            所有者  用户所在的组  文件大小  创建时间    文件名
[root@Salve ~]# ll
总用量
-rw-------. root root 5月 : anaconda-ks.cfg
-rw-r--r--. root root 5月 : install.log
[root@Salve ~]# head - /etc/passwd
root:x:::root:/root:/bin/bash
[root@Salve ~]# head - /etc/group
root:x::
[root@Salve ~]# cat /etc/group
root:x::
bin:x::bin,daemon

2、用户与权限

2.1、用户管理

(1)、用户查看

 id  username

(2)、用户添加

 useradd  username

  创建用户,同时会产生新的用户组,并且用户属于该组

(3)、用户删除

userdel  -r  username 

2.2、用户组

用户与组的关系:
(1)、把用户加入组
[root@Salve ~]# id test2
uid=(test2) gid=(test2) 组=(test2)
[root@Salve ~]# gpasswd -a test2 root #把用户test2加入到root组
Adding user test2 to group root
[root@Salve ~]# id test2
uid=(test2) gid=(test2) 组=(test2),(root) #test2同时属于两个组
    同时属于两个组后,两个组的权限都具备,即两个组权限之和
 
(2)、把组中用户删除
[root@Salve ~]# gpasswd -d test2 root
Removing user test2 from group root

3、权限分配

    第一、二种修改用户对文件的权限

3.1、chmod权限分配

3.1.1、字母权限分配

         chmod  u+x file
         chmod   u-x file
    (对用户单独设置权限用此方式。)

3.1.2、数字权限

        chmod 755  file
数字对应权限如下:
    r        4
    w       2
    x        1
755        rwx r-x r-x
754        rwx r-x r--
默认644
(当所有用户的权限都要修改时用词方法)
    缺点:不能对用户的细化权限分配
 

3.2、acl权限分配

适用于对权限的细化需求,比如要求一些用户对某个文件file的权限如下:
  1、root file rw-
  2、root file r--
  3、other file r--
  4、user1 file rw
  5、user2 file rx
  6、user3 file wx    (不能查看,但是能写入)
  7、user4 file rwx  (rwx只是对内容有权限,无法删除)
 
acl权限分配:
(1)、setfacl设置文件权限 
setfacl -m u:user1:rw file01.txt
setfacl -m u:user2:rx file01.txt
(2)、getfacl查看文件权限
getfacl file01.txt  
(3)、删除文件权限
    setfacl -x user:user4 file01.txt
(4)、清空文件权限
    setfacl -b file01.txt           擦除对文件所有的权限(恢复文件的原始状态权限:644)
 
(5)、创建和删除文件权限:
#需要对目录设置acl权限即可
 setfacl -m u:user4:rwx mnt/
注意:
dr-xr-xr-x.   2 root root  4096 5月  24 14:19 mnt
切换到目录的一瞬间需要目录的x权限,否则不能切换目录。
 

(6)、如何对目录及子目录和文件设置acl权限

setfacl -m u:user4:rwx -R /mnt/                R参数代表递归
 
(7)、目录中后期添加的子目录和文件如何继承父目录的权限
方法一: setfacl -m u:user4:rwx -R /mnt/     繁琐                       (应用实例:网站文件管理)
方法二:setfacl -m d:u:user4:rwx -R /mnt/         d代表default权限,会继承默认权限
 
用户对程序、命令的权限

3.3、sudo权限设置

设置用户对命令的执行权限-visodo:

(1)、设置:
# visudo
user4 localhost=/usr/sbin/useradd,/usr/sbin/userdel
 
(2)、使用有密码的sudo授权命令
$ sudo /usr/sbin/useradd user5
$ sudo /usr/sbin/userdel -r user5
 
(3)、使用无密码的sudo授权命令  (使用情境:在脚本里输入命令)
$ sudo /usr/sbin/useradd user6
$ sudo /usr/sbin/userdel -r user6
设置形式: 
user5 ALL=NOPASSWD: /usr/sbin/useradd,/usr/sbin/userdel
sudo  ALL=NOPASSWD: /usr/sbin/userdel -r user4

三、Shell文件权限和脚本执行

1、Shell脚本简介

    (1)、用途:完成特定的、较复杂的系统管理任务
    (2)、格式:集中保存多条Linux命令,普通文本文件
    (3)、执行方式:按照预设的顺序执行解释执行

2、编写可执行的Shell脚本

   (1)、 建立包含执行语句的脚本文件
   (2)、 #脚本文件中包含的内容
            运行环境设置:#!/bin/bash
            注释信息:以#开始的说明性文字
            可执行的Linux命令行
    (3)、为脚本文件添加可执行权限

3、执行Shell脚本的方式:

    (1)、bash test.sh          #不需要写解析器,并且不需要给脚本设置执行权限
    (2)、./test.sh                #需要写解析器,需要给脚本设置执行权限

4、Shell脚本例子:

(1)简单例子

#!/bin/bash
#tesh.sh echo 'disk space:'
echo
df -Th
echo
echo 'free space:'
free -m
echo
echo 'users:'
for i in'ls /home'
do
  id -u $i
done
运行Shell脚本:
    直接执行具有x权限的脚本文件:例如:./test.sh
    使用指定的解释器程序执行脚本内容:例如:bash test.sh 、sh test.sh

(2)实例练习:

    每周五17:30清理FTP服务器的公共共享目录
        检查/var/ftp/pub/目录,将其所有子目录及文件的详细列表、当时的时间信息追加保存到/var/log/pubdir.log
文件中,然后清空该目录
yum -y install vsftpd*
#!/bin/bash
#ftp目录统计 date >>/var/log/pubdir.log ls -lhR /var/ftp/pub >>/var/log/pubdir.log rm -rf /var/ftp/pub

命令执行通过后即可添加到任务计划中:

crontab -e   
查看任务计划:
crontab -l
 
 
 

Shell文件权限和脚本执行的更多相关文章

  1. linux笔记:shell基础-概述和脚本执行方式

    什么是shell: linux使用的默认shell是Bash: shell脚本的后缀名为.sh,shell脚本的第一行#!/bin/bash 不是注释,而是标识这是一个shell脚本,因为linux并 ...

  2. Shell文件权限-1

  3. CentOS文件权限管理

    目录 文件属性 chown更改所有者 chgrp更改所属组 文件权限rwx chmod修改权限 默认权限umask 权限判定的顺序 特殊权限SUID,SGID,sticky 隐藏权限chattr,ls ...

  4. Linux shell编程02 shell程序的执行 及文件权限

    第一个shell脚本 1.       shell编程的方式 交互式shell编程 非交互式shell编程:执行的语句存放到一个文件 shell脚本:可以任意文件名,建议扩展名为sh 2.       ...

  5. centos shell编程4【分发系统】 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要同步的文件 expect文件分发系统 expect自动发送密钥脚本 Linux脚本执行方式 第三十八节课

    centos shell编程4[分发系统] 服务器标准化  mkpasswd 生成密码的工具  expect讲解   expect传递参数   expect自动同步文件  expect指定host和要 ...

  6. windows下建立文件的换行符^M导致linux下的shell脚本执行错误的解决方式

    常常在windows下编辑的文件远程传送到linux下的时候每行末尾都会出现^M.这将导致shell脚本执行错误,主要是由于dos下的编辑器和linux下的编辑器对文件末行的回车符处理不一致导致. 主 ...

  7. 《Linux命令行与shell脚本编程大全》 第七章理解Linux文件权限

    Linux沿用了Unix文件权限的方法,允许用户和组根据每个文件和目录的安全性设置来访问文件. 用户权限通过创建用户时分配的用户ID(UID)来跟踪的.每个用户有唯一的ID,但是登录时用的不是UID, ...

  8. 第9章 Shell基础(1)_Shell简介和脚本执行方式

    1. Shell概述 1.1 Shell简介 (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编 ...

  9. shell基础之脚本执行,命令别名以及快捷键等

    脚本执行方式 比如我们在/root/下编写了一个脚本,名字为hello.sh.那么怎么调用执行它呢?有两种办法: (1)直接通过bash,如下: bash  hello.sh 注:采用bash执行脚本 ...

随机推荐

  1. 大型web系统数据缓存设计

    1. 前言 在高访问量的web系统中,缓存几乎是离不开的:但是一个适当.高效的缓存方案设计却并不容易:所以接下来将讨论一下应用系统缓存的设计方面应该注意哪些东西,包括缓存的选型.常见缓存系统的特点和数 ...

  2. mybatis配置-返回date类型丢失时间

    此博客仅作于平时开发所遇到的问题记录,不做他用,描述可能不好,自己看懂即可~~ resultMap配置返回时间类型时,发现数据库时间是精确到秒的,但是返回给javabean之后丢失时分秒的信息,只有日 ...

  3. springMVC 配置CharacterEncodingFilter之后不起效果

    最近开始自学springMVC框架,遇到中文乱码这一经典问题,记录下解决过程,以便后续忘记 web.xml 里过滤器配置如下: <?xml version="1.0" enc ...

  4. 3、DNS服务器功能(正向、反向解析)

    实验目的: 建立gr.org域的主名称服务器.解析: 名称 IP 用途 ns.gr.org        192.168.170.3          名称服务器 www.gr.org     192 ...

  5. [bootsrap]模态框使用例

    <a href="#modal1" role="button" class="btn btn-primary btn-sm" data ...

  6. Android项目部署时,发生AndroidRuntime:android.view.InflateException: Binary XML file line #168: Error inflating class错误

    这个错误也是让我纠结了一天,当时写的项目在安卓虚拟机上运行都很正常,于是当我部署到安卓手机上时,点击登陆按钮跳转到用户主界面的时候直接结束运行返回登陆界面.    当时,我仔细检查了一下自己的代码,并 ...

  7. pacemaker+corosync/heartbeat对比及资源代理RA脚本

    一.Pacemaker概念 (1)Pacemaker(心脏起搏器),是一个高可用的群集资源管理器.它实现最大可用性资源管理的节点和资源级故障检测和恢复,通过使用首选集群基础设施(Corosync或He ...

  8. java设计模式之外观模式

    外观模式概念 外观模式又称为门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个搞层次接口,使得这一个子系统更加容易使用.这一模式完美的体现了依赖倒转原则和迪米特法则的思想,所以是非常常 ...

  9. 《The Elder Scrolls V: Skyrim》百般冷门却强力职业

    <The Elder Scrolls V: Skyrim>百般冷门却强力职业 1.有如成龙平常的杂耍型战斗窃贼 每次看帖都察觉大伙一贯在强调窃贼不需要防御,窃贼不需要血,窃贼就是一击致命, ...

  10. NYOJ 187

    快速查找素数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数. 输入 给出一个正整数数N(N&l ...