> Linux教程 > linux基础 >

系统启动,磁盘配额,访问控制列表ACL

第一、其他命令的介绍
    nice 、 renice 

        nice -# command   (#代表一个数值,取值范围: -20 ~ 19 ,优先级越低,数值越高)
        nice --19 gftp

        renice # pid


    sort  《---排序命令
        sort s1.txt
         sort -n s1  《--把数字当数值排序

[root@dns test]# sort -t: -k1,1 -k3,3n s1.txt   <--- -t 指定分割域,-k指定排序的字段
baidu:4000:500:baidu
baidu:4000:3500:hello
dede:600:600:dede
google:5000:8000:google
sina:4500:4000:sina
sina:4500:4000:sina
up:4500:3000:up
wangyi:4000:5100:wangyi

    uniq   《---去除连续的重复行

    cut  《--字段截取
        cut -d: -f1,3,4   s1.txt  <---默认是空格作为分割符, -d指定分割符号, -f指定显示的字段

[root@dns test]# cat s3 
10.1.2.3
192.168.20.1
10.1.2.3
[root@dns test]# sort s3 | uniq   <--最简单的网络IP访问量的统计,把IP单独显示出来
10.1.2.3
192.168.20.1

    wc 《--- 统计命令

[root@dns test]# cat s4
hello moto
welcome here
[root@dns test]# wc s4  
2  4 24 s4   <---行数,字符串数,字符数(包括字母、数字、空格、还有换行符号)


[root@dns test]# sort s3 | uniq | wc -l  <--最简单的网络IP访问量的统计


第二、系统的启动流程

    1、启动流程
        开机--》Bois实现硬件自检---int 19--->读取mbr里的bootloader(grub)---》 根据配置文件,找到要引导的系统的内核文件等并加载到内存里---》加载内核之前先加载initrd(随机内存盘,这是一个小型的文件系统,放在内存里面),作用:驱动硬件,能够让内核理解系统所在的那个设备--—》内核运行---》运行产生第一个进程init ---> init 读取/etc/inittab 根据配置文件,判断系统进去哪个运行级别----》init 运行 /etc/rc.d/rc.sysinit 进行系统的初始化--》根据运行级别进去不同的目录进行服务启动---》rc.local---》 根据不同的运行级别:
        如果 2、3、5 :
                /sbin/mingetty  产生6个文本终端,并且调用login程序验证用户登录

        如果运行级别5:
                xdm ---> login 来验证用户登录

   

    2、服务管理
       
        修改服务启动的方式:
            1、ntsysv  --level 35  <---推荐的方式

            2、手工方式,进去运行级别对应的文件夹,把软连接的名字更改
                S --》 开机自动运行
                K --》 开机不启动

            3、命令行方式
                chkconfig --list
                chkconfig --level 35 cpuspeed on
                chkconfig --level 35 cpuspeed off

                添加一个服务:
                chkconfig --add apache
                删除一个服务:
                chkconfig --del apache
            要成功添加一个服务,需要作的就是:
                1、把服务的脚本放在/etc/rc.d/init.d
                2、服务的启动脚本必须有这两行的注释内容
# chkconfig: - 85 15   
        第一个字段 -代表所有级别默认都不自动启动,如果是 35代表在运行级别3、5自动启用
        第二个85 代表如果服务开机启动,那么启动的顺序就是85
        第三个15 代表关机的时候,服务关闭的顺序
# description:  My Apache   《--服务的描述,可以随便描述

                3、给予脚本运行权限
                chmod 755 /etc/rc.d/init.d/apache
                否则:
                # service apache start
                apache: 未被识别的服务

第二、inode、软链接、硬链接

    inode : 每当创建一个文件和目录的时候(除了硬链接之外),都会为这个文件创建一个inode编号,这些信息都存放inode table

    软链接:
        ln -s /etc/fstab   /tmp/test/linktofstab
[root@dns test]# ls -li
总计 0
196610 lrwxrwxrwx 1 root root 10 10-26 13:52 linktofstab -> /etc/fstab

[root@dns test]# ls -li /etc/fstab
6293259 -rw-r--r-- 1 root root 838 09-10 10:46 /etc/fstab
        你会发现两个文件的inode编号不一样,就代表这是两个单独的文件

        特点:
            1、它会创建一个新的inode编号,代表这是独立的文件
            2、相当于windows的快捷方式,你访问的时候,多了一个中转的过程,最终访问的内容就是它所链接的目标文件;
            3、它可以跨文件系统(跨分区)创建;
            4、它可以对目录进行链接


    硬链接:
        特点:
            1、它不会新建一个inode编号,不代表一个独立文件;
            2、对所谓的“源文件”进行删除,并不影响硬链接文的访问;
                为什么:
                因为硬链接还保存这访问这个文件对应的数据块的指针
            3、硬连接不减少磁盘数据块的容量
            4、它是不能跨文件系统创建;
            5、它相当于为文件创建了一个冗余
            6、不能手工用命令对目录进行硬链接

第三、磁盘配额

    1、用到web/ftp/mail等一切需要限制用户使用硬盘空间的地方
    2、特点:只能对分区进行配置

    步骤:
        1、新建一个分区,或者用原来的分区也行,但需要重新修改挂载参数再重新挂载
            新建分区,格式化成ext3
        2、用支持磁盘配额的参数对分区进行挂载
            mkdir /ftproot
        3、如果想永久生效就必须更新fstab
/dev/sda11         /ftproot        ext3    defaults,usrquota,grpquota   0 0   

        4、对启用了磁盘配额的分区生成配置文件
            quotacheck -cavug
                -c 忽略已经原有的配置文件并再次生成
                -a 扫面所有使用挂载参数挂载的分区,并对他们生成配置文件
                -u 生成针对用户的限制配置文件
                -g 生成针对组的限制配置文件
                -v 把生成的过程显示出来

        5、针对你要对哪些用户进行限制的配置
            edquota  -u tom       

Disk quotas for user tom (uid 512):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda11                        0        20000     22000       0        0        0

        6、启用磁盘配置功能
           
            quotaon /dev/sda11


        7、查看配额使用情况:

shell> repquota -a
*** Report for user quotas on device /dev/sda11
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   17636       0       0              3     0     0    

        注意:你会发现没有tom的使用情况和限制信息


为了让tom能对这个目录进行写入内容,必须修改权限:
chmod 777 /ftproot

然后测试:

    a、先创建20M的文件
dd if=/dev/zero  of=/ftproot/tomfile1 bs=1M count=20

    b、查看报告

    c、再创建10M的文件,看看是否成功?

dd if=/dev/zero  of=/ftproot/tomfile2 bs=1M count=10
                    ^文件名不一样,要注意

    留意一下报告




    例子2:针对组进行磁盘限制
        你要针对组的磁盘配置,就必须挂载的时候使用grpquota的参数
        1、需要使用两个帐号,他们的初始组(gid)一定是要相同
            groupadd lily
            useradd -g lily user1
            useradd -g lily user2

        2、编辑组的配额
            edquota -g lily

        3、测试
            ......
       
        结果:该组的每个用户使用的总容量不能超过组配额的容量,也就是说,我对组限制了20M的使用容量,该组下的所用用户(user1和user2)加起来不能超过20M,如果user1已经用了20M,那么user2就不能再使用了。怎么解决?
        解决方法:把该组下面的各个用户再进行单独的用户磁盘配额限制:
                edquota -u user1
                edquota -u user2

        注意:要实验成功,测试的用户必须gid相同,否则失效

    其他命令:
        更改默认宽限期
            edquota -t
        针对某个用户修改宽限期:
            edquota -T -u tom
        复制某个用户的限制设置,快速配置另外的一个用户
        edquota -p tom -u upl
       
        关闭某个分区的磁盘配置支持
        quotaoff



第四、访问控制列表

    acl <---- 更细的权限控制

    setfacl
    getfacl  target


背景:
    tom 用户属于 tom组 ---》 rw
    upl 用户属于 tom组 ----> r-x
    bean 用户属于 tom组  ----> rw
    mary 用户不属于tom组,就是other ---》 r


[root@dns lily]# getfacl tomfile
# file: tomfile
# owner: tom
# group: tom
user::rw-    <---拥有者访问文件的时候所具有的权限
user:upl:r-x   <----针对upl访问时候的权限
group::rw-    <--- bean属于 tom,所以bean用户访问这个文件的时候就具有 rw
mask::rwx
other::r--

    setfacl -m user::rw,user:upl:rx,group::rwx,other::r


背景2:

    tom 用户属于 tom组 ---》 rw
    upl 用户属于 tom组 ---->  r
    bean 用户属于 tom组  ---->  rw
    mary 用户不属于tom组,就是other ---》r

# file: tomfile
# owner: tom
# group: tom
user::rw-    <---拥有者访问文件的时候所具有的权限,直接看这里,这里写什么权限,拥有者就具有什么权限
user:upl:r--   <----针对upl访问时候的权限,与mask去交集,--> r
group::rw-    <--- bean属于 tom,所以bean用户访问这个文件的时候就具有 rw
mask::rwx
other::r--

    setfacl -m user::rw,user:upl:r,group::rw,other::r ./tomfile



背景3:

    tom 用户属于 tom组 ---》rw
    upl 用户属于 tom组 ---->  r
    bean 用户属于 tom组  ---->  r
    mary 用户不属于tom组,就是other ---》rw

# file: tomfile
# owner: tom
# group: tom
user::rw-    <---拥有者访问文件的时候所具有的权限,直接看这里,这里写什么权限,拥有者就具有什么权限
user:upl:r--   <----针对upl访问时候的权限,与mask去交集,--> r
group::rw-    <--- bean属于 tom,与mask取交集 r
mask::r-x
other::rw-   <---也是直接判断,不考虑mask

    setfacl -m user::rw,user:upl:r,group::rw,other::rw,mask::rx ./tomfile
(责任编辑:IT)