1、从三个方面简述Linux中的权限体系,如传统权限、特殊权限、访问控制acl
传统权限:
umask默认为0022 计算时取022,文件夹相当于元数据,文件相当于数据,故文件不需要执行权限也可进行读写删除操作,文件夹需要最大权限777,文件最大权限 666 ,系统中生成的文件夹及文件权限=最大权限-umask ,计算后文件权限遇到奇数自动加一(不需要执行权限),系统文夹默认权限 644 /rw-r-r 文件夹默认权限 755/rwx-rx-rx
特殊权限:
1)SUID 作用在属主位置,文件具有S权限,任何用户执行此文件便具有此用户属主的所有权限
增加或删除 chmod u+s u-s
2)SGID 作用在属组位置,文件具有S权限,任何用户执行此文件便具有此用户的属组权限,此外如果作用在文件夹上 这个文件下新创建的文件具有此文件夹相同的属组权限。
增加或删除 chmod g+s g-s
3)Stick 作用在其他权限中,文件具有T权限,谁创建的谁才可以进行删除
增加或删除 chmod o+t o-t
4)chattr 作用在特殊位置,文件具有i或a权限,i权限任何人无法修改删除,a任何人无法删除 但可追加内容
增加或删除 chattr -i/+i/+a/-a
查看 lsattr /stat
访问控制FACL:
针对某一个用户设置权限,体现在属主位置,设置的权限只对单一用户生效
增加 setfacl -m -u:用户:rwx xx文件
删除 setfacl -b 删除所有执行权限
查看 getfacl xx文件
2、从ifconfig命令的回显信息中取出本机的ip地址
ifconfig|head -2|tail -n +2|tr -s " "|cut -d" " -f3
ifconfig|egrep -om1 '\<([0-9]{1,3}\.){1,3}[0-9]{1,3}\>'|head -1
3、写一个小脚本,显示出当前登录用户的名称、uid、家目录
#!/bin/bash
#
#******************************************************************************
#Author: ruan
#QQ: 1097744154
#Filename: userinfo.sh
#Date: 2021-03-30
#Description: The test script
#version:
#Copyright (C): 2021 open-source
#******************************************************************************
NAME=`whoami`
USERINFO=`cat /etc/passwd`
USER_HOME=`cat /etc/passwd |grep -E ^"\<$NAME\>"|cut -d":" -f6`
USERID=`id -u $NAME`
COLCK="\E[1;$[RANDOM%7+31]m"
END="\E[0m"
read -p "Whether to display user information(Yes/No)?" confirm
case $confirm in
[Yy]|[Yy][Ee][Ss])
echo -e "ACTIVE USER IS: $COLCK$NAME$END"
echo -e "USER ID IS: $COLCK$USERID$END"
echo -e "USERHOME IS: $COLCK$USER_HOME$END"
;;
[Nn]|[Nn][Oo])
echo -e "$COLCK确认退出$END"
;;
*)
echo -e "$COLCK输入错误$END"
;;
esac
4、【选做】写一个脚本读取一个文件,读取一行计数一行
如:
Line 1: root:x:0:0:root:/root:/bin/bash
Line 2: bin:x:1:1:bin:/bin:/sbin/nologin
#!/bin/bash
#
#******************************************************************************
#Author: ruan
#QQ: 1097744154
#Filename: Read and print
#Date: 2021-03-29
#Description: The test script
#version:
#Copyright (C): 2021 open-source
#****************************************************************************
read -p "请输入文件路径:" f
! [ -a "$f" ] && { echo "您输入的文件不存在"; exit; }
! [ -f "$f" ] && { echo "您输入的不是普通文件";exit; }
! [ -w "$f" ] && echo "文件权限不足"
l=`cat $f|wc -l`
for i in `seq 1 $l`;do
cat "$f" |head -$i|tail -1
sleep 1
done