Linux用户权限及脚本详解

Linux用户权限及脚本详解

一、权限

id=0                             //管理员权限
id介于1-999                       //系统中服务用户
id>1000                          //普通用户
r                                //只读数字权限4
w                                //写数字权限2
x                                //执行数字权限1
-                                //普通文件权限0
1.文件权限分解
[root@xie ~]# ll -d /etc/passwd
-rw-r--r--. 1 root root 2052 Jul 20 10:02 /etc/passwd		                

[-] 表示普通文件
[d] 表示目录文件
[l] 表示链接
[c] 字符类型
[b] 块设备
[rw-] 拥有人权限
[r--] 拥有组权限
[r--] 其他人权限

1.1.身份信息
1.用有人[user]    简[u]
2.拥有组[group]   简[g]
3.其他人[other]   简[o]
1.2.权限信息
1.读[read]       简[r]      权限[4]
2.写[write]      简[w]      权限[2]
3.执行[x]        权限[1] 
4.-[0]无权限

二、 shell脚本

1.要使用的字符介绍
1.通配符:~波形符
2.`command`=$(command)    //引用命令的执行结果
2.磁盘容量告警脚本
[root@xie ~]# df -h | grep -w / | awk '{print $5}' | sed 's/%//g'
6
df -h                  //列出磁盘使用情况
grep -w                //表示搜索根下

[root@xie ~]# cat pan 
#!/bin/bash
DISK=`df -h | grep -w / | awk '{print $5}' | sed 's/%//g'`
if [ "$DISK" -ge 5 ];then                   
echo "warning,the root partition is full!"
fi 
$后跟大写引用[-ge]表示大于号;结束[then]那么的意思[fi]结束
2.1.创建多个用户脚本
[root@xie ~]# echo -e "user1\nuser2\nuser3\nuser4\nuser5" > user.txt 
[root@xie ~]# cat user.txt 
user1
user2
user3
user4
user5
[root@xie ~]# cat user
#!/bin/bash
  for USERS in $(cat user.txt)                     [for循环创建的user中的数据]
     do                                            [循环要干什么]
     useradd $USERS                                [做的事情是创建用户]
     echo redhat | passwd --stdin $USERS           [配置密码]
  done                                             [完成]
[root@xie ~]# chmod +x user
[root@xie ~]# ./user 
useradd: user 'user1' already exists
Changing password for user user1.
passwd: all authentication tokens updated successfully.
Changing password for user user2.
passwd: all authentication tokens updated successfully.
Changing password for user user3.
passwd: all authentication tokens updated successfully.
Changing password for user user4.
passwd: all authentication tokens updated successfully.
Changing password for user user5.
passwd: all authentication tokens updated successfully.
[root@xie ~]# 
2.3.脚本使用注意事项

1.${变量名} 应用变量的值
2.$(command)=`command`引用命令执行结果
3.{}一次引大括号里面的内容
4.变量名约定俗称用纯大写字母来表示
5.但是也可以用纯小写字母(不建议)大小混合,大写或小写与数据混合,就是不能为纯数字

3.定义变量

本地变量
1.脚本中的变量是本地变量,仅在脚本执行的瞬间生效
2.仅在当前用户下可查看使用的变量是本地变量,切换用户无效,切换table无效,子shell无效,仅仅临时生效的变量
A=100 B=200

环境变量
在所有的子shell中生效的变量,其他终端无效,其他用户无效
方法一:A=100
export A
方法二:export B=200

全局环境变量
是把环境变量定义到/etc/profile这个配置文件中,那就全局环境变量
在所有子shell中生效的变量,所有终端生效,所有用户生效

用户环境变量
把环境变量定义到~/.bash_profileh这个配置文件中,那就是用户环境变量
切换用户时,会先读取全局环境变量,再读用户环境变量,全局环境变量就被覆盖了

三、IO及管道

1.标准的输入和输出
1.standard   iuput        //标准输入(STDIN) – 缺省为键盘
2.standard   output       //标准输出(STDOUT) – 缺省为终端窗口,正确的结果
3.standard   error        //标准错误(STDERR) – 缺省为终端窗口

重定向输出到文件
command[命令] operator[操作符] filename[文件名]

操作符
> 将正确的结果重定向到操作符后面的文件中
2> 将错误的结果重定向到操作符后面的文件中
&> 重定向所有输出到文件
在重定向时, 缺省是覆盖文件内容.>>符号追加
>> 2>> &>>

1.1.重定向输出实例
//将正确的结果重定向到操作符后面的文件中
[root@xie ~]# echo "520-1314" > find.txt
[root@xie ~]# find / -name find.txt > find2.txt       //查找到的文件绝对路径追加到文件
[root@xie ~]# cat find2.txt 
/root/find.txt

//将错误文件重定向到新文件
[root@xie ~]# cat afasfasf 2> 11111
[root@xie ~]# cat 11111 
cat: afasfasf: No such file or directory

//重定向所有输出文件到文件
[root@xie ~]# cat find.txt &> 1
[root@xie ~]# cat 1
520-1314
1.2管道符I

command1 ; command2 ; command3 //多条命令用分隔符隔开,顺序执行,前后无关联
command1 | command2 [ | commandN... ] //多条命令用管道符隔开,前一条命令的输出结果是后一条命令的输入

//管道符用法
[root@xie ~]# ss -anltup | grep "t*" > /canshu
[root@xie ~]# cat /canshu 
Netid  State      Recv-Q Send-Q     Local Address:Port       Peer Address:Port 
tcp    UNCONN     0      0                      *:123                   *:*      users:(("chronyd",1043,1))
tcp    UNCONN     0      0              127.0.0.1:323                   *:*      users:(("chronyd",1043,3))
tcp    UNCONN     0      0                      *:39523                 *:*      users:(("avahi-daemon",1022,13))
tcp    UNCONN     0      0                      *:5353                  *:*      users:(("avahi-daemon",1022,12))
tcp    UNCONN     0      0                     :::123                  :::*      users:(("chronyd",1043,2))
tcp    UNCONN     0      0                    ::1:323                  :::*      users:(("chronyd",1043,5))
tcp    LISTEN     0      128                    *:22                    *:*      users:(("sshd",1526,3))
tcp    LISTEN     0      128            127.0.0.1:631                   *:*      users:(("cupsd",14126,12))
tcp    LISTEN     0      100            127.0.0.1:25                    *:*      users:(("master",2007,13))
tcp    LISTEN     0      128            127.0.0.1:6010                  *:*      users:(("sshd",13810,9))
tcp    LISTEN     0      128                   :::22                   :::*      users:(("sshd",1526,4))
tcp    LISTEN     0      128                  ::1:631                  :::*      users:(("cupsd",14126,11))
tcp    LISTEN     0      100                  ::1:25                   :::*      users:(("master",2007,14))
tcp    LISTEN     0      128
1.3.grep简单用法
grep
	+w                              //word单词
	+i                              //忽略大小写
	-f                              //循环读取
	-q                              //不显示处理信息
	-v                              //显示详细的处理信息
	-c                              //<数目> 显示的字节数
	-n                              //<行数> 显示文件的尾部 n 行内容
	--pid=PID                       //与-f合用,表示在进程ID,PID死掉之后结束
	-q --quiet, --silent            //从不输出给出文件名的首部
	-s --sleep-interval=S           //与-f合用,表示在每次反复的间隔休眠S秒
	
grep实例:
[root@xie ~]# grep -i user1 /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash
1.4.head和tail简单用法
head                               //开头行
    -n                             //行
tail                               //末尾行
	-n                             //行

[head实例]:
[root@xie ~]# head -n 10 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
1.5.awk简单用法
awk                     //基于列的文本报告工具
        语法:awk [选项] '匹配模式 {执行动作}'
        -F ''		   //指定分隔符,可以使用正则表达式[]指定多个分隔符
        -v OFS=''	   //指定打印时的分隔符
执行动作:
        '{print $#}'  		      //选择打印第#列,$0代表所有列,$NF代表最后1列
匹配模式:
        '/关键字/'				   //匹配关键字的行,支持正则表达式
        '/关键字1/,/关键字2/'	     //匹配从关键字1到关键字2中间所有的行
        'NR==1'					 //匹配第1行
        'NR>=10'				 //匹配行数大于10的所有行并显示行号
        '$1==1'				  //匹配第1列的值等于1的行
        '$1>=10 && $1<=20'	   //匹配第1列的值大于等于10并小于等于20的行
        '$1>=10 || $3!=20'	   //匹配第1列的值大于等于10或者第3列的值不等于20的行
        '$NF~"/sbin/nologin"'	   //匹配最后1列字符为/sbin/nologin的行
        '$NF~!"/sbin/nologin"'   //匹配最后1列字符不为/sbin/nologin的行
        
语法示例:
         awk -F ':' '{print "第一列:"$1,"第二列:"$2,"第三列:"$3}' /etc/passwd
         //使用:为分隔符分割/etc/passwd文件中的内容,按照想要的格式打印出来
         
         awk -F ':' -v OFS='-' '{print $1,$2,$3}' /etc/passwd
         //使用:为分隔符分割/etc/passwd文件中的内容,按照想要的格式打印出来
         
         awk -F '[:/]+' '{print $1,$6}' /etc/passwd
         //使用:或/或:/或多个:或多个/或多个:/为分隔符分割/etc/passwd文件中的内容,打印出第1列和第6列
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Linux shell命令行及脚本编程是基于Linux操作系统的命令行环境下进行编程和脚本开发的一种方式。通过这种方式,我们可以使用一系列预定义的命令和脚本语法来完成各种任务,例如自动化操作、批量处理等。 一个典型的Linux shell脚本编程实例是实现一个自动备份脚本。以下是该脚本的源码示例: ```bash #!/bin/bash # Automatic Backup Script # 定义备份目录和目标目录 backup_dir="/path/to/backup" target_dir="/path/to/target" # 创建备份目录 mkdir -p $backup_dir # 备份文件 backup_file="backup_$(date +%Y%m%d).tar.gz" # 根据当前日期生成备份文件名 tar -czf $backup_dir/$backup_file $target_dir # 将目标目录压缩成备份文件 # 检查备份是否成功并发送邮件通知 if [ $? -eq 0 ]; then # 如果备份成功 echo "Backup successful: $backup_file" # 在此处添加发送邮件的命令,例如使用sendmail或者mail等命令 else # 如果备份失败 echo "Backup failed" # 在此处添加发送邮件的命令,通知备份失败 fi ``` 该备份脚本首先定义了备份目录和目标目录的路径。然后,它创建了备份目录(如果不存在),接着使用`tar`命令将目标目录压缩成备份文件,文件名以当前日期为前缀。最后,根据备份命令的执行结果,判断备份是否成功并进行相应的邮件通知。 这只是一个简单的示例,实际上,Linux shell脚本编程可以涵盖更广泛的应用范围,包括系统管理、日志分析、自动化部署等。掌握了Linux shell命令行及脚本编程,我们可以更加高效地利用Linux操作系统进行各种任务处理和工作流程优化。 ### 回答2: Linux shell是一种命令行界面,用户可以直接在终端中输入命令来与操作系统进行交互。而shell脚本编程则是用脚本语言编写一系列的命令,以便自动化执行一些任务。 下面我们来介绍一个关于文件备份的实例。 假设我们有一个目录下的文件需要进行定期备份。我们可以编写一个shell脚本来完成这个任务。 首先,我们需要创建一个名为backup.sh的脚本文件。在文件中输入以下内容: ``` #!/bin/bash backup_dir="/path/to/backup/folder" source_dir="/path/to/source/folder" date=$(date +%Y%m%d) backup_file="backup_$date.tar.gz" tar -czvf "$backup_dir/$backup_file" "$source_dir" ``` 以上是一个简单的文件备份脚本。首先我们定义了备份目录和源目录的路径,然后使用`date`命令来获取当前日期,并将其作为备份文件的一部分命名。最后,我们使用`tar`命令将源目录打包成一个压缩文件,并将其保存在备份目录下。 要执行这个脚本,我们需要为脚本文件添加可执行权限。在终端中使用`chmod +x backup.sh`命令即可。 然后,我们可以在终端中执行脚本来进行备份操作。只需要输入`./backup.sh`即可开始备份过程。备份文件将保存在指定的备份目录下,并带有日期作为文件名的一部分。 通过编写这个简单的shell脚本,我们可以实现文件备份的自动化。可以根据实际需求进行修改和扩展,以适应不同的场景。这就是一个关于Linux shell命令行及脚本编程实例的详解

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咕咕瓜瓜

如果觉得合胃口就来点八

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值