初步探索Linux3

一、Linux文件与目录

   1.普通权限

   文件与目录主要有wx权限.以下是文件与目录属性的对比 

    r  读取  文件  (内容)  目录 (对象)

    w  写入  文件   (改写 ,删除)   目录 (创建对象,删除)

    x  运行   文件  (运行)   目录 (切换)

    2.特殊权限

    特殊权限主要有suidsgidsticky表示.

    suid只能针对可执行文件,以可执行文件的所有者的身份来运行.当赋予该文件以s权限后,该文件就的x权限就变成了s(小写),当去除掉后就变成了S(大写).

    sgid 文件 目录(一般针对目录,表示在该目录下创建的对象的所属组就是该目录的所属组)

sticky  可以保证在该目录下,所有人创建的文件,只有自己能够删除,别人不可以

    3.权限表示方法

    主要有字符表示法和数字表示法,其中数字表示法是r4)、w2)、x(1)suid4)、sgid2)、sticky1

    4.修改权限

对于普通权限,可以使用chmod命令来改变文件的属性.例如 chmod u+x f1表示给与f1的拥有者执行权限,另外也可以使用数值表示方法.

5.权限的访问控制列表acl

    首先编辑 /etc/fstab,在LABEL=/ / ext3 default 0 0,其中将default变为default,acl之后,重新挂载,getfacl f1setfacl f1 setfacl -m u:user16:rw- f1

这时候文件出现了加号,表示有额外的权限

6.umask权限掩码

用户可以使用umask查看自己的umask值,可以粗略的理解为,实际权限=最高权限--umask。但是这种说法,并不准确,应该是使用最高权限去除掉umask所屏蔽掉的权限。比如umask 0022则实际权限就应该是屏蔽掉针对组的w和针对其它人的w权限。

二、根文件系统目录

    根文件系统呈倒挂树状层次结构,一般包括如下几个目录:/etc、 /dev/usr/bin、 /var.其中各个目录功能如下:

   三、脚本例子

    1.添加普通用户,但是不能使用useradd命令.(主要考察创建用户的过程)

    #!/bin/bash

     #At First,get the username and password!

    read -p"Please iput which username you want to create:"NAMEUSER

    read -p"Please input the password you want to give to the user:"PASSWDUSER

    #step1:change /etc/passwd

    IDUSER=`cut /etc/passwd -d: -f3|sort -n|tail -2|head -1`

    let IDUSER=$IDUSER+1

   echo "$NAMEUSER:x:$IDUSER:$IDUSER::/home/$NAMEUSER:/bin/bash">>/etc/passwd

    #step2:change /etc/shadow /etc/group

    echo "$NAMEUSER::::::::">>/etc/shadow

    echo "$NAMEUSER:x:$IDUSER: ">>/etc/group

    #step3:change /home/NAMEUSER

    mkdir /home/$NAMEUSER &>~/rubbish

    chown $NAMEUSER.$NAMEUSER /home/$NAMEUSER

    chmod 700 /home/$NAMEUSER &>~/rubbish

    cp /etc/skel/.* /home/$NAMEUSER &>~/rubbish

    chown $NAMEUSER.$NAMEUSER /home/$NAMEUSER/.* &>~/rubbish

    #step4:chane /var/NAMEUSER

    touch /var/mail/$NAMEUSER

    chmod 660 /var/mail/$NAMEUSER

    chown $NAMEUSER.mail /var/mail/$NAMEUSER

    #step5:change passwd

    echo $PASSWDUSER |passwd --stdin $NAMEUSER &>~/rubbish

    #step6:authentication

    if[ `echo $?` -eq 0 ];then

    echo "OK!$NAMEUSER has been created and you can use it now!"

    else 

    echo "Sorry!$NAMEUSER has not been created successfully!"

    fi

    2.给定一个网段192.168.10.1-254,编写脚本,看是否能够ping通,将ping通的ip地址显示出来.(主要考察ping命令以及echo $?命令)

    #!/bin/bash

    for I in {1..254};do

    ping -c 1 -w 1 192.168.10.$I &>~/abcd/f1

    if[ `echo $?` -eq 0 ];then

    echo "Ok!The 192.168.10.$I can be reached!"

    else

    echo "Sorrry!The 192.168.10.$I can not be reached!" &>~/abcd/f3

    fi

    done 

   (但是,这个脚本仍有问题,就是会一直ping,除非ping完,或者使用ctrl+z,之后kill掉进程)

    3.将普通帐号挑选出来,并在其前端显示号码.(主要考察循环的使用和cut工具)

    #!/bin/bash

    cut -d : -f 3 /etc/passwd &>~/abc/f1

    I=1

    while read LINE;do

    if [$LINE -ge 500 ];then

    ######此处进一步筛选,过滤掉uid号码过大的用户

    if[$LINE -le 1000 ];then

    echo -e "$I\t" `grep $LINE /etc/passwd|cut -d: -f1,3 `

    let I=$I+1

    fi

    fi

    done <~/abc/f1