zoukankan      html  css  js  c++  java
  • Linux02(目录、文件、用户、用户组管理)

    rootfs:根文件系统

    /boot:系统启动相关的文件,如内核、initrd,以及grub(bootloader)
    /dev:设备文件
        设备文件:
        	块文件:随机访问,数据块
            字符设备:线性访问,按字符为单位
            设备号:主设备号(major)和次设备号(minor)
    /etc:配置文件
    /home:管理员的家目录
    /lib:库文件
        静态库,.a
        动态库, .dll, .so(shared object)
        /lib/modules:内核模块文件
    /media:挂在点目录,移动设备
    /mnt:额外的临时文件系统
    /opt:可选目录,第三方程序的安装目录
    /proc:伪文件系统;当系统没启动时,该文件夹时空的,当系统启动时,这个文件夹显示的是内核的映射(映像)文件
    /sys:伪文件系统;跟硬件设备相关的属性映射文件
    /tmp:临时文件
    /var:可变化的文件    
    /bin:可执行文件,用户命令
    /sbin:管理命令
    # bin,sbin下是跟系统启动相关的命令
          
    /usr(shared,read-only):全局的共享的只读文件
        /usr/bin
        /usr/sbin
        /usr/lib
        #  usr下bin、sbin在系统自身启动起来以后,为了提供一些基本功能应该具备的命令或者可执行程序
    
    /usr/local:
        /usr/local/bin
        /usr/local/sbin
    	/usr/local/lib
    
    命名规则:
    1.文件名长度不能超过255个字符;
    2.不能使用/当文件名;
    3.严格区分大小写;
    
    相对路径
    绝对路径
    
    文件管理
    目录管理
    	ls
        cd
        pwd
        mkdir:创建空目录
            -p:多级目录
            -v:显示创建多级目录的创建信息
        	# mkdir -pv /root/m/n/l
            1.如何一句命令创建/mnt/test/x/m,y?
                方法一:mkdir -pv /mnt/test/x/m /mnt/test/y
                方法二:mkdir -pv /mnt/test/{x/m,y}
            2.如何在/mnt/test2下创建a_b,a_c,d_b,d_c文件夹?
            	(a+b)(c+d)=ab+ac+bc+bd
                {a,b}_{c,d}
                方法:mkdir -pv /mnt/test2/{a,b}_{c,d}
        rmdir (remove directory)  # 删除空目录
        
        # 文件的创建何删除
        1. touch # 本不是创建文件的命令,只是歪打正着了。
        touch 文件名
        	# eg:touch a
        2. nano 文件名
        	eg: nano abb
        在Linux下在同一个文件夹下不能创建同一个名字的文件或文件夹
        
        touch: # 它是改变文件的时间戳的命令
            touch -c c  # 表示不创建文件名为c的文件
            touch -a a.txt # chang only the access time,不指定时间,默认将a.txt文件的权限时间修改成当前时间。
            touch -m # chang onlu the modification time
            touch -m -t 201810181818 a.txt  # 表示将a.txt文件的modify时间改成指定的201810181818
        stat: # 查看文件属性信息:主要是看Access Modify Change三种状态下的时间戳 
            stat 文件名 
            	eg:stat a.txt
    cp:
    	# 一个文件到一个文件,多个文件到一个目录
        cp /etc/passwd /tmp 表示将etc下的passwd文件拷贝到tmp文件夹下,并且文件名还是passwd
        cp /etc/passwd /tmp/test  # 如果test不存在,表示将etc下的passwd文件拷贝到tmp下并重命名为test;如果test存在,1:如果test是个文件,则提醒我们是否要覆盖掉test文件;如果test是个目录,则将etc下的passwd拷贝到/tmp/test文件夹下,文件名仍是passwd。
        
        # 如果源文件是多个文件,则目标必须是个目录
        cp /etc/passwd /etc/issue /etc/inittab /tmp/abc  # 这里abc必须存在,且是一个目录。
        
        cp -a  # 是把原文件或文件夹原样打包一份,归档复制,常用于备份。
        cp -L  # 拷贝原文件或者文件夹连接所指向的文件或者文件夹
        cp -d  # 只拷贝源文件或文件夹链接
    	# eg: cp /etc/{passwd,inittab,rc.d/rc.sysinit} /tmp
    
    mv: # 移动文件
    	1. mv 源文件或目录 目标文件或目录
        # 如何将一个文件或目录重命名?
        mv abc mn  # 表示将当前目录下的abc文件重命名为mn,或者当前目录下的abc目录重命名位mn目录
      	
        # mv还有一种特殊用法!!!!!!!
       2.  mv -t 目标文件或目录 源文件或目录  # 加-t与1相反
    
    install:
    	-d DIRECTORY...:创建目录
        -m 指定修改文件的权限,不指定默认有执行权限
    	install -d /tmp/install.1 /tmp/install.2 等同于 install -d /tmp/{install.1,install.2} # 可以用来创建目录,可以同时创建多个。类似mkdir
        install /etc/passwd /var/tmp/install.file # 表示将passwd文件拷贝到/var/tmp下,并重命名为install.file,但是install.file文件有了执行权限,可以通过-m指定权限。类似cp
        
        install -t DIRECTORY SRC...  # 表示将源文件或文件夹拷贝到DIRECRTORY中。类似cp
    
    du: #  显示文件或目录所占用的磁盘空间。
        -h  输出文件系统分区使用的情况,例如:10KB,10MB,10GB等
        -s 显示文件或整个目录的大小,默认单位是KB
        
        du -sh # 显示当前目录的大小
        du -sh httpd  # 显示某个目录或文件的大小
        du -sh ./*  # 显示当前目录下所有文件的大小
        du -h --max-depth=1  # 查找占用空间最大的文件与目录
    
    

    查看文件

    1. cat 
    	cat -n 文件名  # 显示文件的行号
    	cat -E /etc/issue # 对于Linux系统而言,文本文件的行结束符是$符;而windows的文本行结束符是$+enter(回车)
    2. tac 
    	tac /etc/issue  # 将issue文本逆向显示,与cat显示文本的方式相反。
    3. more  # 向后翻,向前翻到最后一行自动推出
    4. less  # 向前翻,到最后一行不会退出,按q键推出
    5. head 
    	head -n 5 /etc/passwd # 指定显示文件的前5行,不指定行数,默认显示开头的10行
    6. tail 
    	tail -n -5 /etc/passwd # 指定显示文件的后5行,不指定行数,默认显示末尾的10行
        tail -f /tmp/hello.txt  # 显示hello文本的后 行内容,并且不会退出;此时如果有其它进程往这个文本末尾追加内容,等待显示新增加内容 
    

    文本处理

    # cut join sed awk
    1. cut
    	-d # 指定字段分隔符,不指定的话,默认是空格;
        -f # 指定要显示的字段  -f1:表示显示第一个字段 -f 1,3表示显示1和3字段  -f 1-3 表示显示1到3的字段
        eg:
             cut -d : -f1 /etc/passwd
    		cut -d : -f 1,2 /etc/passwd
             cut -d : -f 1-3 /etc/passwd
    2. join
    
    

    文本排序

    # sort
    1. sort
        -n:数值排序
        -r:降序
        -t:字段分隔符
        -u:排序后相同的行只显示一次
        -f:排序时忽略字符大小写
            
    	sort 文件名  # 按照ASCII码表对行进行升序排序
        sort -n 文件名  # 按照数字大小进行升序排序
        sort -r 文件名  # 按照ASCII码表对行进行逆序排序
        sort -r -n  # 按照数字大小进行降序排序
        sort -t: -k3 /etc/passwd  # 按照第3个字段,按照ascii码进行排序
        sort -t: -k3 -n /etc/passwd # 按照第3个字段,按照数值大小进行排序
        sort -n -u sort.test
        
        
    2. uniq(report or omit repeated lines):# 报告相邻重复的行
    	uniq 文件名 # 将文件中相邻重复的行删除一行
        uniq -d 文件名 # 只显示相邻重复的行,只显示重复行当中的一行
        uniq -D 文件名 # 显示相邻重复行中的所有行
        uniq -c 文件名 # 显示相邻每一行重复的次数
    

    文本统计

    wc(word count)
    	-l:只显示行数
    	-w:只显示单词数
    	-m:只显示字符数
    	-c:只显示字节数
    	-L:表示最长的一行包含多少个字符
          
    

    字符处理命令

    tr:转换或删除字符
    tr [OPTION]... SET1 [SET2]
    	-d:删除出现在字符集中的所有字符
         tr -d 'ab'
        
    tr 'ab' 'AB'
    tr 'a-z' 'A-Z' < /etc/passwd # 将passwd文本中全部的小写字母转换成大写字母  <是重定向
    

    bash及其特性

    shell:外壳
        GUI:Gnome,KDE,Xfce
        CLI:sh(bsh),csh,ksh(商业化的产品,需要付费才能使用,后来分为社区版和商业版),bash(兼具csh,ksh,比sh更加强大),tcsh(增强版),zsh(功能更加强大,但是还不是很流行),在红帽系列和众多的发行版上使用的都是bash,所以学习bash是首选。
            
    bash:
        1.命令历史
        	bash会自动记录执行的命令,会将使用的命令放入缓冲区。
            -c:清空命令历史
            -d OFFSET [n]:
            -w:保存命令历史至文件中
            -n:
            history -d 500 # 删除第500个命令
            history -d 500 10 # 从第500个命令开始,删除10个命令
            set +o history  # 执行此命令之后,再执行其他的命令将不会被记录到.bash_history文件中
            set -o history  # 执行此命令之后,再执行其他命令将会记录到.bash_history文件中
    
            命令历史的使用技巧:
            	!n: 执行命令历史中的第n条命令
                 !-n:执行命令历史的倒数第n条命令
                 !!:执行上一条命令
                 !string:执行命令历史中最近一个以指定字符串开头的命令
                 !$:引用前一个命令的最后一个参数 # 方式1
                 	# eg:nano !$  
                 按下'ESC'键之后按'.',会自动弹出上一个变量;# 方式2
                 ALT+.  # 方式3
                 
                 输入命令的开头字母,连续两次'tab键',将显示与该字母开头的所有命令。
        2.管道、重定向
        3.命令别名
        	alias 别名='COMMAND [options] [arguments]'
            在shell 中定义的别名仅在当前shell生命周期中有效:别名的有效范围仅为当前shell进程。
            	# eg: 
                	1. alias 查看系统中已命名的别名
                    2. alias cls=clear
            取消别名:
            	unalias 别名
                	# eg: unalias cls
            如果重命名的别名与命令相同且别名后带有参数,想使用原命令,需要 CMD
            
        4.命令行编辑
    		光标跳转:
            	 ctrl+a:跳到命令行首
    			ctrl+e:跳到命令行尾
                 ctrl+u:删除光标至命令行首的内容
                 ctrl+k:删除光标至命令行尾的内容
    			ctrl+l:清屏
                
        5.命令行展开
        6.文件名统配:# 通过 man 7 glob 命令查看特殊字符的通配符
        	*:任意长度的任意字符
            ?: 任意单个字符,如果需要匹配指定个数的字符,就需要指定个数的'?'
            []: 匹配指定范围内的单个字符,eg:[abc],[a-m],[A-Z],[0-9],[a-zA-Z],[0-9a-zA-Z]
            [^]:匹配指定范围之外的任意单个字符,eg:ls [^0-9]*
            [:space:]: 空白字符
            [:punct:]: 所有的标点符号
            [:lower:]: 小写字母
            [:upper:]: 大写字母
            [:alpha:]: 大小写字母
            [:digit:]: 数字
            [:alnum:]: 数字和大小写字母
            # eg: 如何表示字母开头、字母结尾、中间有空格的文件?
            	[[:alpha:]]*[[:space:]]*[[:alpha:]]
        7.变量
        	环境变量:
            	PATH:命令搜索路径
                HISTSIZE:命令历史缓冲区大小
                SHELL:用于保存当前用户默认shell的
        8.编程
    	9.命令替换: $(COMMAND),使用反引号也是一样的 `COMMAND`
        	把命令中某个子命令替换为其执行结果的过程。
            echo 'the current directory is $(pwd)'
            touch flie-$(date +%F-%H-%M-%S).txt
            touch flie-`date +%F-%H-%M-%S`.txt
            
            bash支持的引号有3种:
            	``:命令替换
                 "":弱引用,可以实现变量的替换
                 '':强引用,不完成变量的替换
    

    用户、组、权限

    # 权限:r、w、x
    文件:
        r:可读,可以使用类似cat等命令查看文件内容;
        w:可写,可以编辑或删除此文件;
        x:可执行,executable,可以命令提示符下当作命令提交内核运行;
    目录:
    	r:可以对此目录执行ls以列出内部的所有文件;
        w:可以在此目录创建文件;
        x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;
    
            
    用户:UID,/etc/passwd
    组:GID,/etc/group
    影子口令:
    用户:/etc/shadow  # 用户密码的存放位置
    组:/etc/gshadow  # 组密码实际存放位置
    
    用户类别:
    	管理员:# UID永远为0
        普通用户:1-65535
        	系统用户:1-499,
            一般用户:500-60000
    用户组类别:
    	管理员组:
        普通组:
        	系统组:
            一般组:
    用户组类别:
    	私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组
        基本组:用户的默认组
        附加组,额外组:默认组以外的其它组
      
    # 分析passwd文件下七个字段的所代表的含义
    whatis passwd # 查看passwd有几个章节的慢文档
    man 5 passwd # 第5个章节是对配置文件的说明
    
    # /etc/passwd
    account:登录名
    password:密码  # 如果密码的位置是X,则x是一个占位符,密码真正的存放位置在shadow中
    UID:
    GID:基本组ID
    comment:注释
    HOME DIR:家目录
    SHELL:用户的默认shell
    
    # 分析shadow文件下七个字段的所代表的含义
     whatis shadow #  查看shadow有几个章节的慢文档
     man 5 shadow # 第5个章节是对配置文件的说明
    
    # /etc/shadow
    account:登录名
    encrypted password:加密的密码
    date of last password change: # 上一次修改密码的时间
    minimum password age: # 最短使用天数
    maximum password age:# 密码最长使用期限,99999天,表示永不过期
    password warning period # 离过期之前的警告时间
    password inactivity period: # 
    account expiration date:
    reserved field
    
    
    # 查看当前系统中由哪些可用的shell
    cat /etc/shells
    

    cat /etc/shadow:

    两个 !! 表示不让其登录,所以如果不想让某个用户登录可以在shadow文件中对应的用户加上两个“!!”

    $6,表示一种加密方式,其中$1是MD5加密。

    用户管理

    创建用户和添加密码

    useradd(或者adduser) 用户名 # 普通用户或者root用户都可以创建新用户,只不过普通用户没办法给新建用户添加登录的密码,这样用户就没办法登录,要想创建的账户可以登录,需要用root用户给这个用户添加密码。创建用户时,会在passwd,shadow,group,gshadow中分别增加一条记录,只有在给新建用户创建密码后,在shadow中用户的密码才从‘!!’变成加密的密码
    passwd 用户名 # 给新建用户添加密码,连续两次输入密码。
    
    useradd 
    	-u UID 用户名
    	-g GID 用户名  # 指定基本组
        -G GID,...  用户名  # 指定额外组(附加组)
        -c "COMMNET" 用户名  # 指定注释
        -d(directory) /path/to/somedirectory  # 创建用户时给用户指定家目录
        -s shell路径  用户名 # 给新建用户指定shell,最好是/etc/shells文件中已存在的shell
        -m -k   # 如果用户没有家目录,强制给用户创建家目录, -m和-k一般组合使用,在创建用户时,指定-k,会把/etc/skel下的.logout .bash_history .bashrc .bash_profile复制到用户的家目录中
        -M 用户名  # 创建用户,但不给其指定(创建)家目录(默认创建用户时,不指定家目录路径,就以用户名作为用户的家目录),这在 /etc/login.refs文件中都有配置说明,具体详细查看该文件。
        -r:添加系统用户(会从0-499随机选一个uid作为用户的id,但是不能登录,也没有家目录,即使在/etc/passwd下给了路径,在/home文件夹下没有这个用户的家目录)
            eg:useradd -r apache
    

    image-20210312182959796

    删除用户

    # id 查看用户信息
    id  # 显示当前用户的id信息
    id 用户名 # 显示此用户的id信息
    id -u  # 只显示用户的uid信息
    id -G  # 只显示用户的gid信息
    id -u -n  # 显示用户的用户名
    id -G -n  # 显示用户的组名
    
    # finger:查看用户账号信息
    finger  # 查看当前用户信息
    finger USERNAME # 查看指定用户信息
    finger -l USERNAME@host # 查看远程用户信息
    
    userdel [OPTION] USERNAME 
    userdel 用户名  # 默认是不会删除这个用户的家目录的
    		-r 用户名 # 同时删除用户的家目录
        
    
    
    

    修改用户账号属性

    usermod
    	-u: # 修改用户的UID
    	-g: # 修改用户的GID
    	-a -G: # 不使用-a选项,会覆盖此前的附加组;使用-a则在原有的附加组基础之上追加新的附加组
    	-c:
    	-d: # 给用户指定新的家目录,通常和 -m一起使用,表示即给用户指定新的家目录,还给用户的家目录下的文件一起复制到新的家目录中。
    	-s:  # 修改用户的shell
    	-l:  # 修改用户的登录名
    	-L(Lock):  # 锁定用户账号,锁定之后这个用户就不能登录了。
    	-U(Unlock):  # 解锁账号
    
    chsh(chageshell): # 修改用户的shell
        chsh 用户名
      
    chfh(change finger): # 修改账户注释信息(/etc/passwd7个字段中的comment)
        chfh 用户名
    


    用户密码管理

    passwd 用户名
    	--stdin #  接收标准输入的。Linux的哲学思想是:尽量避免与用户交互
    	-l(lock):
    	-u(unlock)
    	-d(delete):# 删除用户密码,用户就不能登录了。
    
            
    pwck: # 检查用户账号完整性
    

    组管理

    创建组

    # cat /ect/group
    用户组名:
    用户密码:
    GID:
    以这个组为附加组的用户列表:
    
    # 创建组
    groupadd 组名 # 不指定组id,默认是从500以后的上一个组加1.
    	-g GID
    	-r: 添加一个系统组
            eg:groupadd -r nginx
    	-n groupname
    

    image-20210312235135090

    删除组

    groupdel
    

    给组加密码

    gpasswd:为组添加密码,一般在切换组的时候使用。
    newgrp 组名(必须是当前用户已经有的附加组): # 给当前用户切换组,第一次需要输入密码;如果再次切换为原来的组,直接exit退出即可。
    

    组和用户联系题

    1. change:修改用户密码的过期信息

      -d:  最近一次的修改时间
      -E:  过期时间
      -I: 非活动时间
      -m:  最短使用期限
      -M: 最长使用期限
      -W: 警告时间
      

      用户权限管理

      三类用户:
      u:属主(owner)
      g:属组(group)
      o:其他用户(other)
      '''
      每一类用户的权限都有8中权限的变化形式,有权限就加上对应权限,没有权限就用-代替,就是0-7的8进制位表示。
      '''
      chown:改变文件属主(只有管理员可以使用此命令)
      # chown USERNAME file...
      	-R(recursive):修改目录及其内部文件的属主
      	--reference=/path/to/somefile file,... # 将flie的属主和属组设置的和/path/to下的somefile一样(设定新文件和参考文件一样)
      
      # chown也可以同时修改属主和属组    
      chown USERNAME:GRPNAME file...  # 即改属主又改属组
      chown :GRPNAME file...  # 表示只改属组
      chown USERNAME: file... # 和chown USERNAME:GRPNAME file... 效果一样
      chown USERNAME:GRPNAME file... # 还支持-R选项,改变文件夹及其内部文件的属主和属组
      chown USERNAME.GRPNAME flie...  # 效果和:是一样的,都是同时改变属主和属组  
      chown -R   USERNAME:GRPNAME Directory # 递归同时修改文件夹下的所有文件及文件夹的属组和属主
          
      chgrp(修改文件或者文件夹属组):只有管理员才能使用此命令;
      	chgrp 组名(已存在) flie...
      	-R:默认只修改指定文件或文件夹的属组,如果要修改文件夹及其内部文件或文件夹的属组,要加-R选项。
      	--reference=/path/to/somefile file... # 和chown用法一样	
      


    文件权限管理

    chmod: 修改文件的权限
    	1.修改三类用户的权限:
        chmod 75 /tmp/abc.txt # 如果给的位数不够,会从前面补0,变成075
        chmod 5 /tmp/abc.txt # 如果给的位数不够,会从前面补0,变成005
    	-R: # 同chown和chgrp,也支持-R
    	--reference=/path/to/somefile file...  # 同chown和chgrp,也支持reference
        
        2.修改某类用户或某些类用户权限:
        u(user),g(group),o(other),a(all)
        chmod 某类用户类别=MODE file...
        chmod u=rwx /tmp/abc # 不支持的写法:chmod u=7 /tmp/abc
        chmod g=rw /tmp/abc  # 等同于 chmod g=rw- /tmp/abc
        chmod o=rx /tmp/abc  # 等同于 chmod o=r-x /tmp/abc
    
        chmod g=r,o=r /tmp/abc  # 同时修改两类用户只有读权限,等同于 chmod go=r /tmp/abc
        chmod go=rw /tmp/abc # 表示修改g,o两类用户同时有读写权限
    	chmod g=rx,o= /tmp/abc  # 给g用户读和执行的权限,o用户无权限。
        
        
        3.修改某类用户的某位或某些位权限:
        u,g,o,a
        chmod 用户类别+|-MODE file...
        
        chmod u-x /tmp/abc  # 表示给u用户去掉执行权限
        chmod u+x,g-x /tmp/abc # 同时给多类用户修改某一类权限,中间用逗号隔开
        chmod a+x /tmp/abc  # 将abc文件的3类用户都加上执行权限
    

    小练习1:

    1、新建一个没有家目录的用户openstack;
    	# useradd -M openstack
    2、 复制/etc/skel为/home/openstack
    	# cp -r /etc/skel /home/openstack
    3、 改变/home/openstack及其内部文件的属主属组均为openstack;
    	# chown -R openstack:openstack /home/openstack
    4、 /home/openstack及其内部的文件,属组和其他用户没有任何访问权限;
    	# chmod -R go= /home/openstack
    
    su - openstack
    

    小练习2:

    手动添加用户hive,基本组为hive(5000),附加组为(mygroup)。
    1. nano /etc/group
    2. nano /etc/passwd
    3. nano /etc/shadow
    4. cp -r /etc/skel/ /home/hive
    5. chown -R hive.hive /home/hive  # 修改属主(root)和属组(root)为hive
    6. chmod -R go= /home/hive
    
    # 经过以上6个步骤,用户hive还不能登录,只能通过管理员su过去,现在需要在/etc/passwd文件中hive用户对应的字段添加密码。
    7. 
    	方式1:passwd  # 直接使用passwd命令生成
         方式2:openssl passwd # 使用openssl命令生成md5形式的密码
    8. 用openssl输入的明文密码登录
    
    
    bc是一个计算器,可以进行数字运算 # 默认是没有保留小数位的精度的,可以在命令行打开bc之后,通过scale在命令行直接设置,比如:scale=2表示保留两位小数。
    


    管理员与普通用户创建文件夹和文件的权限

    管理员用户:
    	创建的目录权限:755
    	创建的文件权限:644
    普通用户:
    	创建的目录权限:775
    	创建的文件权限:664
    
    umask[遮罩码(用户创建文件或目录用到的遮罩码)]:
        创建文件:666-umask
        创建目录:777-umask
        root用户的umask:022
        普通用户的umask:002
    '''
    所以root用户和普通用户创建文件和目录的权限是以上的权限。。。。
    '''
    umask:命令显示遮罩码
    umask 遮罩码 :可以用来设置遮罩码
    	eg:在普通用户下设置其遮罩码和root用户一样,均为022; 
        	umask o22
            之后再次创建文件的权限就是644,创建目录的权限就是755
    
    umask:023
        文件:666-023=643
        目录:777-023=754
        '''
        实际用023的遮罩码在创建目录的权限符合我们设置的754,但是创建文件的权限没有变成643(3:写和执行权限),而是644;
        得出结论:文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限加1;
        '''
        
    umask:027  # 如果自己创建的文件或目录不想让别人看到,就使用027
    

    修改普通用户的遮罩码和root用户一样,则创建的文件权限就是644,创建的目录权限就是755了。。。。如下图:


    用户登录

    站在用户登录角度来说,SHELL的类型:

    # 登录式shell:
        1. 正常通过某终端登录;
        2. su - USERNAME; # 加 - 是完全切换
        3. su -l USERNAME;
    # 非登录式shell:
        1. su USERNAME; # 不加 - 是半切换
        2. 图形终端下打开命令窗口;
        3. 自动执行的shell脚本;
    
    bash的配置文件:
    	全局配置:
        	/etc/proflie,/etc/profile.d/*.sh,/etc/bashrc
    	个人配置:
        	~/.bash_profile, ~/.bashrc, ~/.bash_logout, .~/.bash_history
    '''
    如果想设置一个环境变量对所有的用户都生效,可以在/etc/proflie文件中定义,或者在/etc/profile.d/文件夹下创建一个以.sh结尾的文件,在这个文件中定义也可以。
    如果只对当前用户生效,可以在当前用户的.bash_profile文件中添加这个环境变量。。。
    '''
    profile类的文件:
    	设定环境变量
    	运行命令或脚本(一般是用户登录前的一些准备工作,在用户登录时,在这个文件中定义执行某个脚本)
    bashrc类的文件:
    	设定本地变量
    	定义命令别名
    
    登录式shell如何读取配置文件的顺序?
    	/etc/proflie  --> /etc/profile.d/*.sh  --> ~/.bash_profile  --> ~/.bashrc --> /etc/bashrc
        
    非登录式shell如何读取配置文件?
    	~/.bashrc -->  /etc/bashrc -->  /etc/profile.d/*.sh
    

    加密方法

    对称加密:加密和解密使用同一个密码
    公钥加密:每个密码成对儿出现,一个为私钥(secret key),一个为公钥(public key)
    单项加密,散列加密(由明文到密文,不可解密):提取数据特征码,常用于数据完整性校验
    	1. 雪崩效应 :初始条件微小改变,可能会引起结果的巨大变化(防止暴力破解)
        2. 定长输出
        	MD5:Message Digest:128位的定长输出
            SHA1:Secure Hash Algorithm(安全的hash算法),160位的定长输出。
    
    w:  # 看的是你以哪个用户登录进来,而不是当前你切换到的用户
    who: # 看的没有w详细
    users: # 查看当前有哪些用户登录
    groups 用户名: # 显示用户所属的基本组和附加组
    last:  # 查看之前有哪些用户登录过
    lastlog:  # 查看每一个用户的最近登录状态
    
    [root@server0 ~]# whatis passwd
    passwd: nothing appropriate.     # 如果查看帮助提示这个,请执行mandb重建帮助文档索引
    [root@server0 ~]# mandb
    Processing manual pages under /usr/share/man...
    Updating index cache for path `/usr/share/man/man4'. Wait...mandb: can't open /usr/share/man/man/man4/crontabs.4: No such file or directory
    mandb: warning: /usr/share/man/man4/run-parts.4.gz: bad symlink or ROFF `.so' request
    Updating index cache for path `/usr/share/man/man8'. Wait...mandb: warning: /usr/share/man/man8/fsck.fat.8.manpage-fix.gz: ignoring bogus filename
    mandb: warning: /usr/share/man/man8/numad.8.gz: whatis parse for numad(8) failed
    Updating index cache for path `/usr/share/man/mann'. Wait...done.
    Checking for stray cats under /usr/share/man...
    Checking for stray cats under /var/cache/man...
    Processing manual pages under /usr/share/man/cs...
    Updating index cache for path `/usr/share/man/cs/man8'. Wait...done.
    Checking for stray cats under /usr/share/man/cs...
    Checking for stray cats under /var/cache/man/cs...
    Processing manual pages under /usr/share/man/da...
    Updating index cache for path `/usr/share/man/da/man8'. Wait...done.
    Checking for stray cats under /usr/share/man/da...<----省略若干行--->
    Checking for stray cats under /var/cache/man/local...
    102 man subdirectories contained newer manual pages.
    7346 manual pages were added.
    0 stray cats were added.
    0 old database entries were purged.
    [root@server0 ~]# whatis mandb
    mandb (8)            - create or update the manual page index caches
    

    权限、文件管理可参考博客:https://www.cnblogs.com/miaocbin/articles/11740305.html

    设备管理
    软件管理
    进程管理
    网络管理

    命令小结:

    目录管理:
    ls/cd/pwd/mkdir/rmdir/tree
    文件管理:
    touch/stat/file/rm/cp/mv/nano
    
    日期时间:
    date/clock/hwclock/cal
    
    文本处理:
    cat/more/less/head/tail/cut/sort/uniq/grep
    
  • 相关阅读:
    如何在VS2013中进行Boost单元测试
    C++项目中的extern "C" {}(转)
    C/C++语言中NULL、'’和0的区别
    关于C++“加、减机制”的整理
    C++继承中的public/protected/private
    Systemc在VC++2010安装方法及如何在VC++2010运行Noxim模拟器
    Testbench(转)
    Java高级特性之泛型
    Java高级特性之反射
    Java 输入输出流
  • 原文地址:https://www.cnblogs.com/zhangchaocoming/p/14526884.html
Copyright © 2011-2022 走看看