zoukankan      html  css  js  c++  java
  • linux基础学习笔记

    linux 命令学习
    linux注意事项:
    1 linux严格区分大小写,windows不区分大小写,linux下所有命令都是小写的,linux系统下文件名区分大小写,windows下文件名不区分大小写。

    2 linux中所有内容都是以文件形式保存,包括硬盘。如果没有写到文件中,写到内存中,那么重启后则失效。操作硬件时都是针对文件名操作。

    3 linux不靠扩展名区分文件类型。靠文件权限区分文件。但操作时往往加上一些特定的“扩展名”来帮助管理员更好的识别文件,linux并不要求加上扩展名。

    4 linux所有的存储设备都必须挂在之后用户才能使用,包括硬盘、U盘和光盘。

    5 windows下的程序不能直接在linux中安装和运行。


    linux各目录的作用
    1 /bin/:存放系统命令的目录,普通用户和超级用户都可以执行。放在/bin下的命令在单用户模式下也可以执行。

    2 /sbin/:保存和系统环境设置相关的命令,只有超级用户可以使用这些命令进行系统环境设置,但是有些命令可以允许普通用户查看。

    3 /user/bin:存放系统命令,普通用户和超级用户都可以执行。

    4 /user/sbin/ :存放根文件系统不必要的系统管理命令。只有超级用户可以使用。

    5 /boot/ : 系统启动目录。

    6 /dev/: 设备目录。

    补充:/etc/: 配置文件保存位置。

    7 /home/ :普通用户的家目录。/home/user1

    8 /lost+found/ :当系统意外崩溃或机器意外关机,而产生一些文件碎片存放在这里。每个分区都有自己的lost+found目录。

    9 /media/ :挂在目录,系统建议是用来挂在媒体设备的。例如软盘或者光盘。

    10 /mnt/ : 挂载目录。挂载移动硬盘、U盘等操作系统分区。

    11 /mise/ : 挂载目录。系统建议用来挂载NFS服务的共享目录。

    12 /opt/:第三方安装的软件保存位置。但一般放置在 /user/local下。

    13 /proc/: 虚拟文件系统。该目录中的数据并不保存在硬盘里。一般存放设备驱动列表网络协议等,在内存里。

    14 /sys/: 虚拟文件系统。

    15 /root/:超级用户目录。

    16 /srv/:服务数据目录。

    17 /tmp/:临时目录。

    18 /usr/ :系统软件资源目录。不存放用户数据。

    19 /var/ :动态数据保存位置。


    服务器注意事项

    1 远程服务器不允许关机,只能重启

    2 重启时应该关闭服务

    3 不要在服务器访问高峰运行高负载命令(杀毒,解压缩,传输文件这些都是高负载命令)

    4 远程设置防火墙时不要把自己提出服务器(防火墙是一个过滤过程,只要是通过ip地址对访问进行过滤,与杀毒软件是两码事)

    5 指定合理的密码规范并定期更行

    6 合理分配权限,定期备份重要数据和日志


    文件处理命令

    1 命令格式与目录处理命令ls
    命令格式:命令 [-选项] [参数] 所有用户都可以使用
    2 目录处理命令
    ls(list) 命令所在路径/bin/ls
    ls -a -a的作用是显示所有文件,包括显示隐藏文件,以‘.’开头的文件就是隐藏文件。
    ls -l 列出文件的详细信息
    ls -lh
    ls -i

    ls -R 连同子目录的信息一起列出

    mkdir(make director) mkdir /tmp/xiaodianying(right)
    mkdir /tmp/dianying/xiaodianying【dianying不存在】(error)
    mkdir -p mkdir /tmp/dianying/xiaodianying【-p 表示可以连同父目录一起创建】(right)
    mkdir mkdir /tep/dianying /tmp/xiaodianying(right)【可以一次创建多个】

    rmdir 删除目录 ,可以一次删除多个,-p选项表示可以连同目录一起删除

    rmdir -p dianying/xiaodianying

    rm 正常情况下是用来删除文件用的,加上-r选项就可以递归删除整个目录,rmdir是用来删除空目录的。

    rm -r dianying

    rm -rf dianying 强制删除

    touch  如果文件存在则仅仅是更新文件创建的时间,不会覆盖文件不会改变原文件中的内容;如果文件不存在则创建一个0k的文件

    touch file 创建/更新文件

    cd (chang directory) cd /tmp/dianying
    pwd (print working directory)
    cd .
    cd ..

    ~ 代表当前用户的家绝对目录 cd ~ 可以直接进入当前用户的目录

    另外在root用户下 ~可以代表 /home/

    [root@linux ~] cd ~test1

    [root@linux test1]pwd

    /home/test1

    cp(copy) 可以拷贝文件,可以拷贝目录  -r
    cp file1 file2 

    cp file1 ~/file2
    cp file1 ../

    cp dir1 dir2 -r

    cp dir1 ~/  -r


    mv(move)  重命名文件目录和移动文件目录

    mv file1 file2 将file1的名字改为file2

    mv file1 ~/   将file1文件移动到自己的家目录下

    cat 查看文件里的内容,输出到终端,如果cat时没有跟文件名,则读标准输入,遇到 后输出到标准输出,终端下输入ctrl+d结束
    cat -n

    tac 
    more 查看文本文件的内容,屏幕显示完一屏等待用户按下任意键在滚动到下一屏,如果中途不想继续看下去就按ctrl+c或q结束显示
    less  查看文件内容,屏幕显示完一屏就等待用户按键,用户可以向上或者向下查看,如果中途不想继续看了就ctrl+c或q结束显示
    less /关键字
    head -n【行号】 /文件
    tail -n【行号】 /文件

    wc 统计指定文件中的行数、单词数和字符数

    wc -l file 统计行数

    wc -w file 统计单词数

    wc -c file 统计字符数

    链接
    ln -s 软连接 相当于windows的快捷方式 可以跨分区 可以针对目录使用 权限全部是rwx

    ln -s wdx cyj


    ln 硬链接 类似拷贝 同时可以同步更新 源文件丢失此硬链接也可以执行 不能跨分区 不能针对目录使用

    ln wdx cyj

    软硬链接的本质区别:软链接就是原文件的快捷方式,原文件丢失则软链接失效,原文件改变大小链接大小不变;硬链接是原文件的快捷方式,原文件的名字被删,硬链接依然存在,原文件或者硬链接中任一打开文件改变文件大小,硬链接显示的文件大小都发生改变。

    快捷键

    ctrl + p 上键 previous

    ctrl + n  下键 next

    ctrl + b  左键 backward

    ctrl + f  右键  forward

    ctrl +d  del键 但是是 删除光标后面的 delete

    ctrl +a home键

    ctrl + e end键

    3 文件处理命令

    -rw-r--r--
    文件 u g o
    r w x
    d - l

    4 链接命令

    linux常用命令

    权限管理命令

    chmod u-r u+r u=r /tmp/wdx
    777 /tmp/wdx
    对文件r(cat more less tail head)w(vim)x(command script)
    对目录r(ls)w(touch mkdir rmdir rm)x(cd)
    权限管理root和所有者都可以操作
    记住:要想删除文件,则文件所在的目录必须有w权限
    要想查看文件,则文件所在的目录必须有r权限
    要想执行文件,则文件所在的目录必须有x权限
    权限是有继承关系的

    chown
    只有root可以操作
    chown testing(用户):组 文件或者目录


    chgrp 组名 文件
    groupadd
    umask -S 在linux下所有新建的文件都会把x权限取消 因此umask看到的值 touch后会把x去掉
    umask 直接执行,会出现数字 是权限掩码,应该是777-022这样

    用umask该默认权限,需要利用掩码设置 umask 023 执行后默认权限改为rwx-r-xr--


    查找

    find *匹配任意多个任意字符 ?匹配某一个字符
    find 目录 -name(区分大小写) 文件名
    find 目录 -iname(不区分大小写) 文件名
    find 目录 -size + or - or =数字(表示在根目录下查找大于数字的文件,数字是0.5kb数据块的倍数 linux下最小存储单元是512k)
    find 目录 -user 用户名
    find 目录 -group 组名
    find 目录 -cmin -时间(在某个时间内修改后属性的文件)
    find 目录 -amin -时间(在某个时间内被访问够的文件)
    find 目录 -mmin -时间(在某个时间内被修改过内容的文件)
    find 目录 -size +数字1 -a -数字2(在数字1和数字2之间的文件)
    find 目录 -size +数字1 -o -数组2(在数字1或者数字2之间的文件)
    find 目录 -type d(目录)f(文件) l(软连接)(通常和其他查找连接使用)
    find 目录 -name 文件名 -exec ls -l {} ;(其中{} ;是固定格式)
    find 目录 -name 文件名 -ok {} ;(其中{} ;是固定格式)
    (-exec和-ok是执行操作的连接符)

    find 目录 -inum 节点号 -exec rm {} ;
    (常用于查找硬链接和删除操作)

    locate 文件名
    使用locate时,先updatedb一下,但是updatedb命令对临时文件/tmp不起作用

    locate -i 文件名 不区分大小写搜索

    which 命令
    whereis 命令(列出文件绝对路径和帮助文档的位置)

    grep 内容 文件目录
    grep -i 内容 文件目录(不区分大小写搜索)
    grep -n 内容 文件目录(输出行号)
    grep --color=auto 内容 文件目录
    grep -v 内容 文件目录(反向查找)
    grep -v ^# 文件目录(排除首字母为#的行)


    帮助命令

    man(manual) man ls(查看命令帮助) man services(查看配置文件的帮助信息,不需要加上配置文件的绝对路径)

    在man命令下可以用/关键字 找到关键字的位置

    使用man可以查看命令和配置文件的帮助

    帮助文档一般用两种:1代表命令的帮助 5代表配置文件的帮助(2代表系统调用的命令 3代表C语言函数库命令 4代表驱动程序和系统设备的解释 6 游戏程序的命令 7其他软件或程序的命令 8 有关系统维护的命令)

    对于配置文件和命令同名的 可以用man 1 passwd 和man 5 passwd区分开

    help命令的使用方法: mkdir --help

    whatis命令用法: whatis ls 可以直接查看命令的信息

    whereis命令用法:whereis ls 查找ls在什么目录下

    apropos services apropos加上配置文件的 可以直接查看配置文件的简短的信息

    ls --help 可以直接列出关于命令ls的选项

    shell是一个命令解释器,里面有一些内置的命令,这样的命令不能用man查看,这样的命令有cd,umask等,这样的命令man cd不会打开cd的帮助,会打开shell的帮助的信息,若想获得shell命令的帮助信息,可以使用help cd得到cd的帮助信息。


    用户管理命令

    useradd 只有root下可以使用 useradd wdx
    passwd 设置用户的密码 passwd wdx
    在自己的账户下该密码 直接passwd即可
    who linux可以同时登陆多个用户 who命令可以查看有多少个用户在线 其中tty表示本地登陆(即虚拟机登陆),pts表示远程登陆
    w命令可以获得更加详细的用户登陆信息 里面的信息量很大 记不住


    linux压缩命令

    压缩格式 .zip是linux和windows都不需要装软件就可以解压的格式
    .gz是linux下的压缩文件格式 命令gzip加文件名就可以压缩了 gunzip加文件名(解压缩)或者使用gzip -d 文件名
    gzip只能压缩文件 并且不保留原文件
    tar -c(打包)v(详细信息可选选项)f(文件名)压缩后的名字 /目录 tar -cvf wdx.tar /tmp/testing/wdx
    生成.tar文件后继续使用gzip压缩最后形成 wdx.tar.gz

    tar -zcvf wdx.tar.gz /tmp/testing/wdx 这条命令是上述两条命令的综合 这是最常用的压缩命令

    tar -zxvf wdx.tar.gz 解包

    -z 解压缩对gz
    -x 解包对tar
    -c 压包对tar
    -v 详细信息(可选项)
    -f 指定压缩文件

    zip命令,压缩完保留原文件
    zip -r wdx.zip /tmp/testing/wdx 压缩目录时需要加上-r这样一个选项 如果要缩文件不需要加-r
    unzip 解压缩

    由于zip的压缩能力不如gz好,因此用得少

    bzip2命令压缩完保留原文件,并且压缩比例很强大
    bzip2 文件名
    bzip2 -k 文件名 (-k可以保留原文件)
    tar -cjf wdx.tar.bz2 /tmp/testing/wdx
    bzip2 wdx.bz2 解压缩
    tar -xjf wdx.tar.bz2解压缩
    很明显-j针对bz2


    网络命令

    write 用户名 内容 ctrl+d结束输入发送,如果输错用ctrl+回格键删除或者delete
    wall(write all) 内容 (给所有用户发送信息)
    ping IP地址(一直ping ctrl+c停止)
    ping -c 次数 IP地址

    ifconfig 直接回车 查看ip情况 eth0网卡 lo回环地址

    mail 用户名 发邮件
    mail 查看邮件
    h键查看邮件列表
    d 加列表标号 删邮件

    last 统计所有用户登陆信息
    lastlog 查看用户最后登陆的信息
    last -u 用户号

    traceroute 主机地址 非常重要的一个命令

    netstat -t(查tcp协议) -u(查udp协议) -l(监听) -r(路由) -n(显示IP地址和端口号) -an(显示所有IP地址和端口号 ) 关于端口号:发起端口是随机的,收到端口是固定的

    netstat -rn 查看网关

    DHCP的作用:局域网内自动分配ip的服务,因此如果想使用这个服务需要确定局域网内是否有dhcp服务器来提供服务。

    setup 命令 是redhat系列linux特有的命令,作用是界面化配置网络,这种配是永久生效,配置完后需要重启系统,service network restart


    挂载命令
    mount 设备文件名 挂载点 例:mount -t iso9660 /dev/sr0 /mnt/cdrom
    关盘挂载整个过程:
    1 所有创建目录:mkdir /mnt/wdx
    2 mount [-t iso9660](若系统知道设备名或者自动识别可以省略) /dev/sr0(光盘设备名,其中sr0是一个软连接,是系统 自动指定的,因此前面的-t iso9660可以省略) /mnt/cdrom
    3 若需要卸载命令是 umount /mnt/cdrom


    关机和重启
    shutdown -h now (代表现在关机)
    shutdown -h 20:30

    shutdown -h 45 45分钟后关机

    shutdown -r now 重启
    shutdown -c 取消前一个关机命令
    推荐使用shutdown命令,这个命令是最原始的可以保存数据的命令,虽然现在也有别的命令或者工具可以达到关机的作用,但为了以 防万一,推荐使用shutdown。 关机或者重启前最好停掉服务,保护硬盘。

    其他命令:
    halt命令关机
    poweroff关机
    init 0关机
    reboot重启
    init 6重启

    系统运行级别:
    0 关机
    1 单用户,相当于安全模式,一般用于修复
    2 不完全多用户,不含nfs(文件共享服务)服务命令(由于linux对此不太安全)
    3 完全多用户,也就是完全命令行
    4 未分配
    5 图形界面
    6 重启
    修改运行级别命令 init 数字
    在cat /etc/inittab中可以看到同样的系统运行级别信息
    用runlevel查看当前的运行级别 打印两个数字 第一个数字是开机前的运行级别,第二个数字是开机时的运行级别

    logout命令 退出用户命令 做完操作后一定要退出

    文本编辑器(vim)
    vim没有菜单,只有命令,可以建立、编辑、显示文本文件。
    vim三种工作模式:命令模式、插入模式、末行模式。

    从命令模式进入插入模式:i

        重点记忆:O在光标所在行的上面插入一行  I行首 A行末 S删除光标所在的行

    从插入模式进入命令模式:ESC

             ^移动到光标所在行的行首 $移动到光标所在行的行尾

             dd删除光标所在行 ndd从光标所在行开始删除n行

             nyw复制n个字到缓冲区 nyy复制n行到缓冲区 p在光标所在位置粘贴

             r替换光标所在位置的字符  R替换光标所到之处的字符直到按ESC结束

             u 撤销上一次操作

             nG跳到文本第n行行首

             ZZ存盘退出 ZQ不存盘退出

    只能从命令模式进入末行模式:在命令模式下按冒号键:输入wq 存盘退出,输入q!不存盘强制退出vi

             set nu 设置行号

             set nonu 取消行号

             n 跳到第n行

             /关键字  查找关键字 按下n查找下一个

              ?关键字  同/

             s /a/x 将光标所在行第一个a换为x

             s /a/x/g  将光标所在行所有a换位x

    :r 文件名
    :!which ls :r !date
    自定义快捷键:map ctrl+v+p I#<esc> 表示按下ctrl+p调到行首插入#
    map ctrl+v+b 0x 表示按下ctrl+b删除首行字母
    map ctrl+v+h Iwangdexing@sina.com<esc>

    n1,n2s/^/#/g 表示在n1—n2首行加上#,并不确认
    n1,n2s/^////g 表示在n1—n2首行加上//,其中是转义符

    :ab xxxxx yyyyy 用yyyyy替换xxxxx

    这些快捷键需要写到配置文件里,在用户的家下的.vimrc

    软件包管理简介
    源码包。源代码直接开放出来的包,绝大多数c语言写的。
    二进制包(RPM包(rpm是c语言编译后的格式,相当于obj)、系统默认包)
    脚本安装包。针对源码包写了安装界面,安装过程类似windows的安装包。

    对于源码包:需要编译安装,卸载直接删除文件就行。安装过程步骤多,编译过程时间长,安装过程中一旦报错新手很难解决。
    对于二进制包:包安装、升级、查询和卸载简单,安装速度快。

    RPM包管理——rpm命令管理
    rpm包命名规则,区分包全名和包名,如果操作的是没有安装的软件包,必须使用包全名,操作的如果是已经安装好的软件包,使用包名,自动在/var/lib/rpm搜索,已经安装的包都会存在/var/lib/rpm下存在
    rpm包依赖性:最难,因此出现了yum在线管理

    rpm -ivh 包全名 安装命令
    rpm -Uvh 包全名 升级命令
    rpm -e 包名 卸载命令

    rpm查询方式:rpm -q 包名 查询包是否安装
    rpm查询软件包详细信息:rpm -qi 包名
    rpm查询未安装的包的详细信息:rpm -qp 包全名
    rpm查询软件包安装位置和列表:rpm -ql 包名
    rpm查询未安装的软件包将安装位置和列表:rpm -qlp 包名
    rpm查询系统文件名属于哪个包:rpm -qf 系统文件名
    rpm查询软件包的依赖性:rpm -qR 包名
    rpm查询未安装软件包的依赖性:rpm -qRp 包全名

    rpm包的检验和提取:
    rpm -V 包名 检验包中的文件是否被改变过
    rpm2cpio 包全名 | cpio -idv ./bin/ls

    RPM包管理——yum在线管理
    rpm命令管理需要解决依赖性的问题,yum在线管理解决了依赖性。
    yum list 查询所有可用的软件包
    yum search 关键字 搜索相当的软件包
    yum -y install 包名 (-y 自动 如果没有-y会问操作者是否安装)
    yum -y install gcc (gcc c语言linux的编译器)
    yum -y update 包名 更新
    yum -y update 如果没有加包名,是对系统所有软件更新
    yum -y remove 包名
    yum grouplist
    yum groupinstall 组名

    yum光盘作为yum源:

    源码包和Rpm包的区别
    RPM包安装的服务启动方式有两种:
    1 services httpd start(services命令是centoslinux特有的,别的linux可能性)
    2 /etc/rc.d/init.d/httpd start
    源码包是安装到自己指定的位置,RPM包安装到默认的位置,因此两种安装方式的启动不同:
    绝对路径 start

    源码包安装:
    1 安装c语言编译器——gcc
    2 下载源码包

    查看install文件,查看安装过程
    脚本安装包
    脚本安装包一般用于硬件驱动的安装

    用户配置文件
    在/etc/paawd文件,保存账号信息,共7个字段:
    文件的读写权限对root用户是没作用的。UID号是0的用户是root用户。1-499的用户是伪用户,是为系统服务的用户。500-65535普通用户。
    把x去掉,没有密码的用户远程无法登陆,只能是本地登陆。

    正常用户的shell解释器/bin/shell 如果禁止某个用户登陆将解释器改为/sbin/nologin

    在/etc/shadow文件保存用户密码串,共9个字段:
    在/etc/group文件保存组的信息
    windows下每个用户都默认是user组下的成员,linux下每个用户创建的时候会自动生成一个同名的组,并且自己处于这个组中。
    GID号是0的用户是root用户。1-499的用户是伪用户,是为系统服务的用户。500-65535普通用户。
    在/etc/gshadow在保存的是组密码

    用户的家目录
    通过进入/etc/passwd文件将用户的用户id改为0,这样这个用户就是超级用户了,但是这个用户的家目录不变,组也可以不变。

    用户的邮箱
    /var/spool/mail/用户名/
    用户模板目录
    /etc/skel/ 这个模板的作用,当每次添加新用户是,都会将这个目录的文件,拷贝到用户的家目录中,有的文件是隐藏的格式。我们自己也可以 在模板目录中加入自己的文件,这样每次创建新的用户都会有自己的文件。

    用户管理命令
    添加一个用户:useradd wdx
    passwd wdx
    查看相关配置文件:grep wdx /etc/passwd
    grep wdx /etc/shadow
    grep wdx /etc/group
    grep wdx /etc/gshadow
    ll -d /home/wdx
    ll /var/spool/mail/wdx
    为一个用户添加密码:passwd wdx
    passwd 直接回车是对自己的账户改密码,超级用户能改所有用户的密码。
    root用户,可以使用passwd -S wdx查询用户密码装填
    passwd -l wdx可以锁定一个用户,暂停一个用户,在/etc/shadow中对应的用户密码加上两个叹号
    passwd -u wdx解锁一个用户
    对于shadow文件权限是000,保存文件时应该是:wq! 感叹号的意思是强制保存
    使用字符串作为用户密码:
    echo “123” | passwd --stdin wdx 接收字符串123给wdx用户添加密码


    用户默认值文件
    /etc/default/useradd 这个文件的作用,当定义一个用户是会调用这个文件里的信息,例如家目录:文件里指定的是/home

    /etc/login.defs 这个文件的作用,对密码的相关定义

    修改用户信息usermod

    usermod -u -c -G -g -U -L 用户名
    禁用用户的方法:1 改shadow文件,将密码串前加!! 2 将passwd文件的/bin/bash 改为/sbin/nologin 3 passwd -l 用户名 4 usermod -L 用 户名

    修改用户密码状态
    change -l -d -m -M -W -I -E 用户名
    change -d 0 root 解释一下-d是修改密码最后一个修改的时间的选项,当改为0时,系统认为普通用户没有修改过密码,这样系统要求用户一登陆 就需要修改密码。

    删除用户userdel
    userdel -r 用户名 -r 删除用户的同时也删除用户家目录


    查看用户ID
    id 用户名

    切换用户身份
    su - 用户名 -号不能少,必须有,如果不加切换后环境变量没变,还是切换前的环境变量。

    exit 退回到登陆前的账户

    env 查看当前操作的操作环境变量

    su - root -c “useradd wdx” 作用不切换用户执行-c后面的命令添加一个wdx用户

    添加删除用户组
    groupadd wdx
    groupdel wdx 删除一个组里面的用户:一种有初始用户的组,这种不能删,报错 二种附加用户,这种可以删组

    修改用户组
    groupmod -n wdx cyj 将cyj组改为wdx组
    把用户添加到组或者删除组
    gpasswd -a 用户 组 (个人推荐记这种方式,先添加用户在添加组)
    也可以在/etc/gpasswd直接添加用户

    ACL权限
    所有文件只有一个用户组,用户。
    df -h 查看分区的命令
    dumpe2fs -h /dev/sda1 查看sda1分区是否支持acl权限
    mount -o remount acl 在分区内执行这条命令,可以使分区有acl权限 这是临时的
    /etc/fstab 这是硬件挂载配置文件,看到对应分区如果是default就可以了,如果默认也不可以,则default,acl保存即可 这样是永久的

    对于每个文件创建的时候都会有默认的权限,权限只有root和所有者可以更改,针对每个文件都只能有一个用户和一个组,用户自己可以更改自己的 文件权限,root用户可以更改所有文件的权限

    getfacl 文件名
    setfacl 选项 文件名
    setfacl -m u:用户:权限 目录或者文件
    setfacl -m g:组:权限 目录或文件

    最大有效权限和删除
    mask用来指定最大有效权限,任何一个用户权限都是与mask的rwx“相与”得出用户的权限
    setfacl -m mask:rx 文件或者目录 mask权限只对acl权限和所属组的权限,不影响用户自己的权限
    setfacl -x u:用户 文件或者目录 删除acl权限
    setfacl -x g:组名 文件或目录 删除组的权限
    setfacl -b 文件或目录 直接删除组和用户的权限

    递归ACL权限 只能针对目录使用
    递归权限是将目录以及目录下的所有目录和文件
    setfacl -m u:用户:权限 -R 目录 这种方式对当前所有文件都设置成对应的权限

    为了实现对未来新建的子文件都有acl权限,这个很重要的一个命令
    setfacl -m d:u:用户名:权限 文件名 只对新出现的文件

    总结一下:修改一个文件对一个用户的权限可以有两种方式,一种是将用户添加到文件所在的组中,另一种是针对用户和文件建立acl权限管理机制


    文件特殊权限
    SetUID的功能:
    SetUID的功能:只有可以执行的二进制程序才能设定SUID权限
    命令执行者要对该程序拥有x权限
    命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
    SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
    passwd命令拥有SUID权限,因此普通用户就可以利用passwd命令修改/etc/shadow文件了,因为shadow文件对于普通用户是什么权限也没有的
    这样就可以理解为什么passwd可以修改密码了,但是cat命令无法查看shadow文件,因此cat命令很明显没有SUID权限

    设定SUID的方法
    4代表用户的SUID
    chmod 4755 文件 其中的4就代表对用户权限设定了s权限
    chmod u+s 文件 同上
    chmod 755 文件 去除s权限
    chmod u-s 文件 去除s权限

    SUID权限方法一般用于针对root用户的文件,加上s权限,对于能执行这个文件的其他用户就可以在执行这个文件时有了root用户有的权限

    SetGID针对文件的作用,只有可执行的二进制程序才能设定SGID权限,命令执行者要对该程序拥有x执行权限,命令执行在执行程序时候,组身份升级 为该程序文件的属组。 例如locate命令,/usr/bin/locate是可执行的二进制程序,可以赋予SGID,执行用户lamp对/usr/bin/locate命令拥有执行
    权限,执行locate命令,组身份升级为slocate组,而slocate组队mlocate.db数据库拥有r权限,所有普通用户就可以使用locate命令查询mlocate.db
    数据库了,命令结束,lamp用户的组身份返回为原来的组。

    SetUID针对目录的作用,普通用户必须对此目录拥有r和x权限,才能进入此目录,普通用户在此目录中的有效组会变成此目录所在的组,

    设定SetUID的方法
    chmod 2755 文件
    chmod g+s 文件


    Sticky BIT文件特殊权限,SBIT黏着位目前只对目录有效。普通用户只对该目录拥有w和x权限,普通用户可以在此目录拥有写入权限,如果一个目录 有的SBIT权限,除了root用户,其他用户能在这个目录新建文件,但是不能删除别人建立的文件。
    设定SBIT方法:
    chmod 1755 目录名
    chmod o+t 目录名
    取消黏着位
    chmod 777 目录名
    chmod o-t 目录名


    chattr权限
    chattr [+-=][选项] 文件或者目录
    选项主要有i和a两个选项,针对文件付了i属性则不允许对文件进行删除和改名,也不能添加和修改数据,针对目录设置i属性,那么只能修改目录下文 件的数据,但是不允许建立和删除文件 ,这个命令对root同样适用。a属性针对文件设置是,那么只能在文件中增加数据,但是不能删除也不能修改数 据,如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除。

    lsattr 选项 文件或者目录 查看chattr属性
    选项a,查看目录或者文件的chattr属性

    sudo权限
    root把本来只能超级用户执行的命令赋予普通用户执行
    sudo的操作对象时系统命令

    命令是visudo 执行时是修改/etc/sudoers文件 root ALL=(ALL) All
    用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
    例子:在sudoers文件中加上wdx ALL=/sbin/shutdown -r now 其中的ALL相当于本机的ip 这个ip是指装有linux的服务器,也就是这个ip是被管理的 主机ip,不是来源ip,这个比较绕。
    然后su - wdx 然后不能直接使用shutdown 通过sudo -l可以查看当前用户被root赋予了什么sudo权限 如果想执行shutdown命令,
    sudo /sbin/shutdown -r now

    文件分区和文件系统
    主分区最多只能有四个,扩展分区只能有一个,主分区加上扩展分区最多有四个,但是扩展分区不能存储数据和格式化,必须在划分成逻辑分区才能使用,逻辑分区是在扩展分区中划分的,IDE硬盘,linux最多支持59个逻辑分区,scsi硬盘linux最多支持11个逻辑分区。
    此处注意一个问题:逻辑分区一般总是从sda5开始,sda1-4只能给主分区和扩展分区使用。

    centos6支持的文件系统是ext4,ext4支持的存储量大 文件操作速度快


    文件系统命令
    df查看分区情况 df -h 人性化显示
    ll查看目录是不能统计目录下所有文件的大小,只会统计当前目录所有文件名占了多少空间
    du -s 统计文件大小 并且仅是文件的大小, df统计的大小包括文件相关进程等占用的大小, 这两个大小对比,可以知道是否需要重启一下系统,重 启结束没用的进程。

    fsck[选项] 分区设备文件名 这个不需要人为使用,系统自己使用这种命令。
    dumpe2fs命令中主要看block大小(格式化产生小隔断,隔断的大小,一般是4kb) 分区是否默认有acl权限

    查询和自动挂载
    mount -l 显示系统中已经挂载的设备
    mount -a 依据配置文件/etc/fstab的内容 自动挂载仅是针对已经存在的分区重新挂载
    mount [-t 系统系统] [-L 卷标名][-o 特殊选项] 设备文件名 挂载点
    其中-o中的特殊选项中有一个是禁止这个分区执行可执行程序

    挂载光盘 mount -t iso9660 /dev/cdrom /mnt/cdrom
    卸载命令 umount 设备文件名或挂载点(注意不能在挂载点里卸载挂载点)
    挂载优盘 fdisk -l 查看U盘设备文件名 U盘的名字与当前系统硬盘的情况有关,因此需要查看当前设备
    mount -t vfat 设备 挂载点 (linux默认不支持NTFS文件系统,苹果的系统由于就是linux内核的因此苹果往往就不支持u盘移动硬盘等)

    支持NTFS文件系统
    linux系统自身有很多驱动,基本可以支持整个计算机的运行。
    要想让linux支持NTFS一种是安装ntfs驱动,这需要重新编译整个linux内核。
    另一种下载一个NTFS-3G插件,解压tar -zxvf 文件。。。。。。。

    添加硬盘,分区
    fdisk /dev/sdb
    mkfs -t ext4 /dev/sdb1

    总结一下:光盘和u盘以及移动硬盘本身已经文件系统了,插入电脑后电脑就能识别这个硬件各个分区,但是需要将各个分区挂载到linux系统中,这时对应硬盘已有的文件系统进行挂载就可以了。 对于硬盘需要先分区再格式化再挂载然后就能用了

    但是由于这种挂载电脑重启后就消失了。因此需要实现自动挂载:
    fstab文件实现分区自动挂载与修复:
    每个分区都会有一个last—found目录,这个目录的作用是分区自动备份的备份点。
    要实现自动挂载在fstab文件中按照别的分区记录格式写上就可以。
    若针对新硬盘写错了fstab,首先是按照提示进入系统,同时需要注意报错以后挂载根分区时默认是只读挂载(mount -o ro 查看mount命令的特殊选项)因此如果想修改fsatb文件需要重新挂载根分区同时指定为rw权限。


    GCC是Linux操作系统下一个非常重要的源代码编译工具,有着许多重要的选项,支持许多不同语言的编译,如C、C++、Ada、Fortran、Objective、Perl、Python、Ruby以及Java等,甚至Linux的许多内核和许多其他自由软件以及开放源码应用程序都是用C语言编写并经gcc编译而成的.

    1.编译单个源文件

    [例如]在屏幕上打印"Hello,Linux."ex

    [源代码]

    #include<stdio.h>

    #include<stdlib.h><

    int main(int argc,char **argv)

    {

    printf("Hello,Linux. ");

    exit(0);

    }

    将源文件保存为hello.c,开始进行编译

    $gcc -o hello hello.c

    编译成功完成后,在当前路径下,生成一个名std为hello的文件,然后执行

    $./hello

    在屏幕上,你将会看到打印结果:Hello,Linux.

    说明:在默认情况下,编译成功完成后,会在当前路径下,生成一个名为a.out的文件,然后执行$./a.out便可打印结果,但通常可以通过选项-o来指定自己的可执行程序名称;

    2.编译多个源文件

    3.使用外部函数库

    4.使用共享函数库和静态函数库

    5.gcc选项详细描述

  • 相关阅读:
    网络流24题
    可持久化Treap
    后缀平衡树
    bzoj2561-最小生成树
    poj3164-Command Network
    最小树形图
    hdu2121-Ice_cream’s world II
    线性处理逆元
    bzoj3992-序列统计
    JavaScript 类型转换
  • 原文地址:https://www.cnblogs.com/dongzhuangdian/p/5152330.html
Copyright © 2011-2022 走看看