第十六讲——权限管理 好像在之前的内容中设计了权限的相关命令,比较散,再总结总结,就当是巩固了。 先来一个改变用户默认shell的命令 chsh username newshell,将shell改为nologin将无法登陆。 权限管理: chown :改变文件(目录)的属主,只有管理员才能改变文件的属主。 chown username file1,file2……将文件的属主改为username -R 递归修改,修改目录及其文件属主。 – – reference = /etc/fatab file1,file2……按照指定参考文件进行修改属主属组 chown 属主:属组 file1,file2……以冒号为分隔符 chown 属主.属组 file1,file2……以点为分隔符 只修改属组时使用 chown :(.)group file1,file2…… chmod 修改文件权限 修改三类用户的权限(u属主,g属组,o其他人) chmod 755 file -R 递归修改 – -reference 指定参考文件修改权限 修改某一类权限, chmod u=rwx filename chmod g=rx filename chmod o=r filename chmod ug=rw filename chmod u=rwx,g=rw,o=r filename 修改某一类用户的某位权限 chmod u+x file 属主增加执行权限 chmod g-x file 属组减去执行权限 chmod g+wx file 可一次增加多位权限 我们普通用户能修改密码的原因: ls -l `which passwd` -rwsr-xr-x ……………………/usr/bin/passwd 在属主的权限里有特殊权限,当该程序被调用时,以属主的身份运行该程序。 手动生成一个密码字符串 openssl passwd -1 -salt ‘12345678’ #输入密码 -1为加密的方式 -salt为杂质。 umask 遮罩码 管理员默认为022 普通用户为002 创建文件时文件的权限为666-umask 创建目录时目录的权限为777-umask umask 001 可以临时设定遮罩码 如果遮罩码为055,创建文件时按道理权限应该为611,但是系统默认文件不能具有执行权限,所以执行权限位自定+1,为622. 文件的rx权限应当是成对出现,否则只有r的话能ls不能cd,只有x的话能cd但是不能ls,太不人道了…… 给自己讲linux 2016-12-16 评论 1496 次浏览
第十五讲——文件名通配 文件名通配:globbing 文件名通配并不能解决所有遇到的问题。 * 匹配任意长度的任意字符 ? 匹配任意单个字符 [] 匹配指定范围内的任意单个字符 [^] 匹配指定范围外的任意单个字符 [:字符集合:] man 7 glob 文档中有详细解释 一组字符或者某一类字符 [:space:] 空白字符 [:punct:] 所有的标点符号 [:lower:] 所有的小写字母 [:upper:] 所有的大写字母 [:alpha:] 所有的字母 [:digit:] 数字 [:alnum:] 数字和大小写字母 在字符集外加^,表示非,例如[^[:digit:]] 非数字。比较特别的是由两个中括号,内部的中括号表示一个字符集。 给自己讲linux 2016-12-15 评论 1433 次浏览
第十四讲——bash特性 bash这个玩意儿看起来好像没有怎么见过,实际上我们已经使用了很久了,是的,就是CLI,一个shell。 shell:提供用户交互接口的程序。 因为bash功能强大且开源,所以很多发型版本默认的安装版本就是bash。 shell启动于用户输入正确的用户密码后,根据/etc/passwd中的第七字段来确认用户登录后的shell环境。 如果当前用户登录了两个相同的用户,他们的shell各不相干。 bashell程序只有一个,但是一个程序可以有多个进程。 进程是程序的副本,也是程序执行的实例。 linux操作系统允许一个用户登录多次,且每个登录后的终端都是独立的。 进程名可能会相同,但是内核是通过进程号来进行管理的。 shell是一个程序,但是它自身才有很多的内置命令。 shell是有shell和子shell的概念的,即shell中还可以再打开shell,且相互独立。可使用exit退出。 对于子shell而言,它本身bin不知道还有一个sell在运行,它认为自己就是一个独立的shell,父shell也是如此,即进程间相互不能知道彼此的存在。 bashell的特性: 1.命令历史 history 2.管道重定向 | 3.命令别名 alias 4.命令行编辑 5.命令展开 {花括号展开} ~波浪线展开 6.文件名通配 7.支持变量 8.支编程(.sh)即bashell是一个脚本语言解释器,支持脚本的编写 bash命令行编辑的快捷键 命令行光标跳转 ctrl+a 跳到行首 ctrl+e 跳到行尾 ctrl+u 删除光标前的所有字符(至行首) ctrl+k 删除光标后的所有字符(至行尾) ctrl+左右键 跳跃一个单词 ctrl+l 清屏 history 命令历史查看 -c 清空命令历史 history -d 500 删除第500条命令 history -d 500 3 删除从第500条开始的3条 用户登录进去执行的命令都在内存缓冲区里面,正常退出会保存到家目录下的~/.bash.hiatory -w 保存历史命令至历史命令文件 !n 执行历史命令中的第n条命令 !-n 执行历史命令中倒数第n条命令 !! 执行上一条命令 !string 执行历史命令中最近一个以指定字符串开头的命令。 string为指定的字符串 !$ 引用上一条命令的最后一个参数 按ESC键后再按.(dot)也可以引用上一条命令的最后一个参数 ALT + . 引用上一条命令的最后一个参数。 环境变量: PATH:命令搜索路径。 HISTSIZE:历史命令缓冲区大小。默认为1000 bash中的命令补全 PATH环境变量设置正常(命令路径),按下tab键会补全命令。 路径补全,在给出打头路径下查找,不唯一时,按两次tab键可以显示路径下的内容。 命令别名:是shell的别名 alias rm=’rm -rf’ 在shell中定义的别名只是在当前shell进程中有效,永久有效需要写入配置文件,也可以是全局的。 unalias 撤销别名 命令替换: 把命令中的某个子命令替换为命令的执行结果。 echo “This dir is `pwd`” 使用反引号。 echo “This dir is $(pwd)” 使用$()引用命令。 echo执行前先执行pwd bash 支持的引号 “ 反引号,命令替换 “” 弱引用,引号内可以实现变量的替换。 ” 强引用,不完成变量的替换。 站在用户的角度shell有两种 一是登录式shell 正常通过某终端登录的shell 也可以是su – username或者su -l username 登录式shell读取配置文件的顺序: /etc/profile——>/etc/profile.d/*.sh—–>~/.bash_profile—–>~/.bashrc—–>/etc/bashrc /etc/bashrc全局的但是是最后读取的 二是非登录式shell su username 图形界面下的命令窗口 自动执行的shell脚本 非登录式shell读取配置文件的顺序: ~/.bashrc—–>/etc/bashrc—–>/etc/profile.d/*.sh 不读取环境设定 编辑完文件后重启或者重新登录生效。 bash的配置文件:按作用范围 全局配置 /etc/bashrc /etc/profile /etc/profile.d/*.sh 对所有用户生效 个人配置(家目录下) ~/.bashrc ~/.bash_profile 对相应用户生效。 profile 类文件 1.设定环境变量 2. 运行命令或者脚本 3.已登录就执行的命令,准备工作 bashrc 类文件 1.设定本地变量 2.定义命令别名 如果一个环境变量在全局上定义了,个人用户也定义了,以个人用户的为准并生效,即作用范围越小越是最终生效。 bash是shell脚本解释器 脚本时shell提供的能力 所以脚本一定是某个shell的脚本,或者某个解释器的脚本。 给自己讲linux 2016-12-14 评论 1543 次浏览
第十三讲——基础命令3 先回顾一下之前的命令。 目录管理命令: ls cd pwd mkdir rmdir tree ls:显示目录下的文件,不加参数则显示当前目录下的文件。 -l 显示详细信息 -d 显示当前目录信息 -h 人性化显示信息 cd:目录切换命令。 pwd:显示当前所在目录。 mkdir:创建新目录 -p递归创建,且可以使用花括号展开 tree:以目录树的形式展开目录,不跟参数则默认为当前目录。 文件管理命令: touch stat file rm cp mv nano(简单的文本编辑器) touch: 改变文件的时间戳,如果文件不存在则创建。 -a 改变文件的访问时间 -m 改变文件的修改时间 -c 不创建任何文件 stat: 查看 或者显示文件系统的状态。 file: 查看文件的类型。 rm 删除文件 -f 强制删除,不提醒 -r 递归删除 cp 复制文件 复制文件时,默认复制连接所指向的文件。 -p 保留文件属主属组时间戳 -a 保留文件所有属性归档存放,不改变文件任何属性,只是打包起来以后有需要时再展开。是一种备份的常用机制。 -d 保留连接属性 -R 递归复制 -L 随符号链接一起拷贝源文件。 install 复制文件并制定权限,作用目标只能是文件,在RPM包制作的时候会用到。 -d 创建目录,可创建多个(使用花括号展开) install默认复制的权限为rwxr-xr-x -m 权限指定 mv:移动文件,可直接操作文件和目录。 -f 强制覆盖(如果目录已存在) 日期时间管理: date clock hwclock cal date 时间查看命令,也可修改系统时间 date 月日时分年.秒 修改日期的格式。 clock 显示硬件时间 hwclock -w 将系统时间写入硬件 hwclock -s 读取一年时间写入系统 cal 显示日历 文本处理命令: cat more head tail cut sort uniq cat 连接并显示文件内容,可以跟多个文件连续显示 -n 显示行号 -E 显示每一行的结束符 linux 中的换行符为$ windows中的换行符为$加回车fu -v 显示行首符 -A显示所有字符 cat不跟任何参数时,将所有的标准输入进行标准输出 cat命令能使用shift+pageup/pagedown进行翻页,但是缓存有限,不一定能翻到行首。 tac 反向显示文档 more 只能向下翻页,翻至末尾会自动退出。 less man命令调用的是less命令,用法同man,空格向下翻页,B向上翻页 head 查看文档前N行 -n 指定显示的行数,默认为10行。 空白行也是一行 tail 查看文档后N行 -n 指定并显示行数,默认为10行。 -f 动态显示文件的末尾,常用于监控文件 cut 列提取命令 -d 指定分隔符 默认为一个空格,tab等不可以 -f 指定要显示的字段 -f 1,3 提取第一列和第三列 -f 1-3 提取第一列和第三列 sort:内容排序按照ANSCII码升序 sort特点:相邻并且完全一样的行才为相同行,不相邻但完全相同的行不认为是重复 -n 按数值大小排序(升序) -r 逆序排列(降序) -t 指定字段分隔符 -k 指定某一段 sort -t : -k 3 -n /etc/passwd 指定分隔符 指定第三列 按数值大小排列 -u unique 唯一的,即相同的行只显示一次 -f 忽略大小写 uniq 配合sort命令使用 -d 只显示重复的行 -D 显示所有重复的行 -c 显示重复的次数 sort -t : -k 3 -n /etc/passwd |uniq -c wc word count 统计字符、单词、行数 -l 只显示行数 -w 只显示单词书 -c 只显示字节数 -m 只显示字符数 -L 统计最长的一行包含多少个字符 tr 字符处理命令,用于转换或者删除字符 tr ‘ab’ ‘AB’ 利用管道或者重定向进行替换 对应替换遇到a替换成A,遇到b替换成B tr ‘a-z’ ‘A-Z’ 对应替换 -d 删除字符 tr -d ‘ab’ 删除字符集中出现的所有字符。 给自己讲linux 2016-12-13 评论 1390 次浏览
第十二讲——基础命令2 额……这几天迷上了一本小说,加班加点连续通宵四五天终于搞定一本小说,就当是放松了几天,回头看看好像忘了不少,悲剧了……还好是复习,要是正儿八经的从头学习的话太不应该了…… 废话就不多讲了,直接开始命令。 再废话一句,一般来说横向制表符为八个空白字符。 date 时间查看命令,在linux操作系统中有两个时间,一个是系统时间,一个是硬件时间。 date 月日时分年.秒 修改系统时间 date +”This year is %Y%nToday is %d” %n 换行 hwclock 查看硬件时间 hwclock -w 同步系统时间至硬件,将系统时间写入硬件 hwclock -s 读取硬件时间,将硬件时间写入系统。 计时是以格林尼治时间为准,因为在数据库中体现的应为精确时间而非当地时间。 配置服务器的时候操作系统时钟是非常常用的操作。 info command ,命令在线帮助文档,作为man命令的补充 cal 查看日历 echo 打印字符到屏幕 -e 支持转义字符,以下转义字符均为-e选项下,内容需要用双引号引起来。 /n 换行 /t 横向制表符 /v 纵向制表符 file : 辨识文件类型 file /bin/ls :ELF 是一种可执行文件的存储格式。可执行的,可连接的。 在windows中为PE,可移植的。 特殊文件:主设备号(major) 次设备号(minor) 一个设备要有设备文件才能被linux访问,一般来说,当插入一个新设备时会在/dev目录下自动创建。 type command,查看命令类型,是外部命令还是内建命令。 whatis command,查看命令在man中属于第几章节。 “\”,反斜杠用于转义,backslash escapes 逃逸字符 tree 查看目录树,目录展开。 mkdir -p /mnt/test/{x/m,y} 等价于mkdir -p /mnt/test/x/m /mnt/test/y 此为花括号展开的用法 -v 显示过程 cd ~username 波浪线展开,切换到用户的家目录,root用户生效。 stat 查看(显示)文件或者文件系统的状态信息。 另外关于创建文件,创建文件可以使用文本编辑器完成。我们使用的Word使用的是字处理器,除了文本里面还保存了字体大小、格式、颜色等属性。 ASCII码:共有128个不同的字符的纯文本,没有任何修饰。 计算机最小的单位为bit,但是在硬盘上的存储是以字节为单位的kb 2^16=65536 汉字由两个字节组成,可以表示65536个汉字。 汉字等文字通过我们常见的字符集(转义器)翻译 GB_18030 国标 GBK 国标 GB2132 国标 为了方便使用,避免不同的字符集翻译导致乱码,国际上采用Unicode 给自己讲linux 2016-12-12 评论 1489 次浏览
第十一讲——基础命令 额……终于把那些绕来绕去的玩意儿搞定了,接下来的工作就比较轻松愉快了,当然,只是暂时的。 我们先来回顾一下之前的命令。 1.关于用户管理的命令 useradd 添加用户 userdell -r 连用户和用户家一块儿干掉 usermod改变已添加用户的信息 passwd 修改用户密码 2.组管理命令 groupadd 添加组 groupdel 删除组 groupmod 修改组信息 gpasswd 添加组密码 3.权限管理命令 chmod 权限管理 4.目录管理命令 ls、cd、pwd、mkdir、rmdir、tree ld命令和cd命令已经做过说明,不再赘述 pwd :显示当前目录路径。 mkdir: 创建目录,如果是在当前目录下创建,则 mkdir filename即可,否则需要指定路径如mkdir /tmp/test mkdir -p /tmp/test/x/m /tmp/test/y ——>等价于mkdir -p /tmp/test/{x/m,y},称为花括号展开这是bash的一种特性。 -v 显示创建过程 -p 递归创建目录,如果有连续一个以上不存在的目录需要加次选项,例如mkdir -p /tmp/1/2/3/4/5 tree :显示目录树结构,不加参数显示当前目录下的结构,否则需指定路径,例如tree /etc rmdir :删除空目录,当目录不为空时无法删除,支持-p递归删除空目录,很少使用。 5.文件管理命令: touch、stat、file、rm、cp、mv、nano touch :touch并不是创建文件,只是如果这个文件不存在则创建,touch主要用于修改文件时间戳。 -c 不创建任何文件 -a 改变访问时间 -m 改变修改时间 -t 指定修改时间 stat: 查看文件或者文件系统的状态信息 stat filename 或者stat direct 即可查看问价或者目录的状态信息。 file :查看文件的类型 file filename rm :删除命令 -r 递归删除,常用于删除目录。 -f 强制删除,不询问,很危险,慎用。 cp :复制命令(copy) cp 源 目标 对于cp命令来说,只有最后一个是目标,其他的都是源,默认只复制文件。只能实现一个文件到一个文件,多个文件到一个目录。 -r 递归复制,产用于目录的复制,例如之前的/etc/skel 复制到家目录下并修改权限,就可以使用cp命令。 -f 强行复制,强行覆盖已存在文件,不提示。 -i 覆盖提示。 -a 保留源文件的所有属性(archive),归档存放,不改变文件的任何属性,只是打包放起来,以后需要时再展开,是一种备份的常用机制 -a的命令是 -dR的合成命令 -d 保持链接属性 -R 递归复制 -P 保持复制链接,cp复制时默认是复制链接所指向的文件 -L 随符号链接拷贝源文件 mv :移动文件(剪切文件) mv SRC(源) DEST(目标) -f 强制覆盖(如果目标已存在) nano :一个文本编辑器,非常简单,键入nano回车即可,界面上有提示,唯一注意的就是^尖括号代表的是ctrl。 另外介绍一个命令install install命令:复制一个文件并制定属性。 install SRC DEST 用法同cp -d 创建多个目录 install -d /tmp/{a,b,c} 创建a,b,c三个目录于/tmp下。 -m 权限的制定 install 作用目标盘只能是文件,在rpm包制作时会使用到。 给自己讲linux 2016-12-11 评论 1421 次浏览