第二周作业

1、从三个方面简述Linux中的权限体系,如传统权限、特殊权限、访问控制acl

传统权限分为:

  属主权限

  属组权限

  其他权限

每个权限有:读(r)(4)、写(w)(2)、执行(x)(1)

改变文件权限命令:

chmod 777 file
chmod a+x
chmod u+r
chmod g+w

特殊权限为SUID,SGID,Sticky

  • SUID表示执行该命令(可执行文件)时,以该文件属主的身份运行,如常见的passwd修改密码命令

  SUID只对二进制文件有效,对目录没有效果

  给一个文件加上SUID权限命令为:

[root@centos7 ~]# chmod u+s cp 
[root@centos7 ~]# ll cp 
-rwsr-xr-x. 1 root root 155176 Mar 29 14:14 cp
  • SGID对二进制文件设置,表示该命令(程序)执行时将以该文件属组的身份运行

  SGID对目录设置,以后在该目录下创建的文件属组将自动所属该目录的属组

  SGID设置命令:

[root@centos7 ~]# chmod g+s dir1
[root@centos7 ~]# ll -d dir1/
drwxr-sr-x. 2 root root 6 Mar 24 17:02 dir1/

  SUID和SGID设置特殊权限后,在各自对应的权限位上将显示s符号

  • Sticky只对目录有效

  默认如果删除某个文件夹下的文件,只需对该文件夹有写和执行(wx)权限,不伦对文件是否有权限均可删除;如果对目录设置了sticky权限,那么只有文件所属主或者root能删除该文件。

  Sticky设置命令:

#未设置sticky权限
[root@centos7 data]# ll
total 0
drwxrwxrwx. 2 root root 32 Mar 29 14:29 sticky
[root@centos7 data]# ll sticky/
total 0
-rw-------. 1 wang wang 0 Mar 29 14:29 file1
-rw-------. 1 wang wang 0 Mar 29 14:29 file2

#lisi 账号的身份
[lisi@centos7 data]$ ll
total 0
drwxrwxrwx. 2 root root 32 Mar 29 14:29 sticky
[lisi@centos7 data]$ ll sticky/
total 0
-rw-------. 1 wang wang 0 Mar 29 14:29 file1
-rw-------. 1 wang wang 0 Mar 29 14:29 file2
[lisi@centos7 data]$ rm -f sticky/file1 
[lisi@centos7 data]$ ll sticky/
total 0
-rw-------. 1 wang wang 0 Mar 29 14:29 file2

#已设置sticky权限
[root@centos7 data]# chmod o+t sticky/
[root@centos7 data]# ll
total 0
drwxrwxrwt. 2 root root 19 Mar 29 14:39 sticky

#lisi 账号的身份
[lisi@centos7 data]$ ll
total 0
drwxrwxrwt. 2 root root 19 Mar 29 14:39 sticky
[lisi@centos7 data]$ ll sticky/
total 0
-rw-------. 1 wang wang 0 Mar 29 14:29 file2
[lisi@centos7 data]$ rm -f sticky/file2 
rm: cannot remove ‘sticky/file2’: Operation not permitted
  • ACL权限

  对普通权限的一种补充,文件或者文件夹可以对某个用户或者某个组设置特定的权限

2、从ifconfig命令的回显信息中取出本机的ip地址

[root@centos7 data]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.150  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::dd42:7811:889:606a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c1:a3:f4  txqueuelen 1000  (Ethernet)
        RX packets 6573  bytes 7724914 (7.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1931  bytes 169181 (165.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@centos7 data]# ifconfig | head -2 | grep 'inet' | tr -s ' ' | cut -d' ' -f3
10.0.0.150
[root@centos7 data]# ifconfig | grep 'broadcast' | tr -s ' ' | cut -d' ' -f3
10.0.0.150

 [root@centos7 script]# ifconfig | grep 'broadc' | egrep -o "inet ([0-9]{1,3}\.){3}[0-9]{1,3}" |tr -d 'inet'
 10.0.0.150

3、写一个小脚本,显示出当前登录用户的名称、uid、家目录

#!/bin/bash

grep "^`whoami`" /etc/passwd | cut -d: -f1,3,6 | tr ":" "\n"

4、【选做】写一个脚本读取一个文件,读取一行计数一行

如:

Line 1: root:x:0:0:root:/root:/bin/bash

Line 2: bin:x:1:1:bin:/bin:/sbin/nologin

 

[root@centos7 script]# cat test.txt 
你好吗
hello
你在哪
哈哈

[root@centos7 script]# ./read_file.sh test.txt 
Line 1:你好吗
Line 2:hello
Line 3:你在哪
Line 4:哈哈


#!/bin/bash
n=1
for i in `cat $1`;do
    printf "Line $n:%s\n" $i; 
    let n=$n+1
done

 

 

posted @ 2021-03-29 14:24  天啊空  阅读(16)  评论(0编辑  收藏  举报