Linux运维命令以及概念整理总结(2)
时间:2018-04-21 16:42 来源:网络整理 作者:墨客科技 点击:次
第四天 1、tr命令tr 转换和删除字符 tr set1 set2 选项: -c –C –complement:取字符集的补集 -d –delete:删除所有属于第一字符集的字符 -s –squeeze-repeats:把连续重复的字符以单独一个字符表示 -t –truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符 \n 换行 \r 回车 \t tab \v 垂直版tab tr ‘a-z’ ‘A-Z’ 等待你输入: 如 abcde 则显示 ABCDE tr ‘abcd’ ‘1234’ asdfasdf 1s4f1s4f tr ‘a-z’ ‘A-Z’ < anaconda-ks.cfg > f1.log 意思就是把文件anaconda-ks.cfg内容输入到tr然后通过tr把内容中的小写字母转换成大写字母在输出到文件 f1.log tr ‘abcd’ ‘1234’ abcdef 1234ef tr ‘abc’ ‘1234’ abcdef 123def tr -d ‘abc’ abdfabxxc dfxx tr -dc ‘abc’ 对’abc‘取反然后删除 23423aabc3sff 必须按CTRL+D才显示 aabc tr -s ‘abc’ 连续重复的字母压缩成一个 aaaaabbbbaaaaccccdddd abacdddd 在windows中建立文件win.txt 内容为 a b c 在linux中显示为abc怎么转换成正确格式? \r就是return回车的意思 通过hexdump -c打开文件发现比linux文件多了0d通过ASC表发现0d为10进制13代表回车 tr -d ‘\r’ < win.txt > win3.txt cat win3.txt a b c 把多个空格压缩成一个空格 tr -s ‘ ‘ < win3.txt a b c tr -s “ “ :df.log 把df.log中的空格压缩成一个并把空格替换成:号 2、单行重定向<,多行重定向<<单行重定向 < tr ‘a-z’ ‘A-Z’ > /etc/issue 该命令会把/etc/issue中的小写字符都转换成大写字符 tr -d abc < /etc/fstab删除fstab文件中的所有abc中任意字符 多行重定向《自己喜欢的任意词例如END 有时称为就地文本(heretext) mail -s “Please Call” [email protected] <<END > Hi Wang, > > Please give me a call when you get in. We may need > to do some maintenance on server1. > > Details when you’re on-site > Zhang > END cat >f2 <<E >hh > dj… >E 才结束 而且E必须单行而且不能有空格 3、管道 | 、 |tee 管道 |cmd1|cmd2 cmd1的标准输出做为cmd2的标准输入,相互利用 hostname|tr ‘a-z’ ‘A-Z’ CENTOS7.MAGEDU.COM hostname | tr ‘a-z’ ‘A-Z’ | tr -d ‘.’ CENTOS7MAGEDUCOM 如果不能保证cmd1中的内容正确例如不存在/error但是也想把错误内容输入则 ls /boot /error 2>&1 | tr ‘a-z’ ‘A-Z’ 或者 ls /boot /error |& tr ‘a-z’ ‘A-Z’ df | tr -s ‘ ‘ ‘;’ 替换df下空格为; 计算1+2+3…100 echo {1..100}|tr ‘ ‘ + |bc seq -s + 100|bc 5050 重定向到多个目标 teels | tee ls.log 即写入文件还在屏幕显示结果 ls | tee -a ls.log 在ls.log里追加ls显示结果 如果同时想把ls.log里面内容换行删除可以 ls | tee -a ls.log | tr -d ‘\n’ 注意:左边命令必须有标准输入 右边命令必须有标准输出 echo abcdef | tr ‘abcd’ ‘xyz’ xyzzef 练习 1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中 2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中 3、一个linux用户给root发邮件,要求邮件标题为”help” ,邮件正文如下: Hello, I am 用户名,The system version is here,please help me to check it ,thanks! 操作系统版本信息 4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开 5、计算1+2+3+..+99+100的总和 6、删除Windows文本文件中的‘^M’ 字符 7、处理字符串“ xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字和空格 8、将PATH变量每个目录显示在独立的一行 9、 将指定文件中0-9分别替代成a-j 10、将文件/etc/centos-release中每个单词(由字母组成)显示在独立的一行,并无空行 练习答案 1.tr ‘[:lower:]’ ‘[:upper:]’ < /etc/issue > /tmp/issue.out 2.who | tr ‘[:lower:]’ ‘[:upper:]’ > /tmp/who.out 3.mail -s “help” root <<END Hello,I am $USER,The system version is here , please help me to check it ,thanks ! OS version: `lsb_release -a` END 4.ls /root | tr ‘\n’ ‘ ‘ 5.echo {1..100} | tr ‘ ‘ ‘+’ |bc 6.tr -d ‘\r’ < win.txt > win4.txt 7.echo ‘xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4’ | tr -dc ‘[:digit:][:space:]’ 8.echo $PATH | tr ‘:’ ‘\n’ 9.tr ‘0-9’ ‘a-j’ < /data/1 10.tr -dc ‘[:alpha:][:space:]’ < /etc/centos-release | tr -s ‘ ‘ ‘\n’ 4、新增用户、用户组管理,以及用户权限管理安全机制3A Authentication 认证 Authorization 授权 Accouting|Audition 审计 令牌token,identity 登陆成功才会发token 如果想访问file则系统根据你的token判断你是否有权限访问file 系统用户就是服务进程之类的不是普通用户都是软件 linux创立一个用户名同时会创立一个同名用户组 用户能不能访问此文件不是由进程决定的,而是由此用户的安全上下文决定的 安全上下文context(运行此程序的用户身份,用户组身份) wang g1 read g2 write g3 read 累加权限 read write 主要组primary group 一个账号必须属于一个组且只有一个主组组名同用户名,且仅包含一个用户,私有组当然也可以是现有组 附加组supplementary group 一个用户可以属于0个或多个附加组 Linux安全上下文 运行中的程序:进程 (process) 以进程发起者的身份运行: root: /bin/cat mage: /bin/cat 进程所能够访问资源的权限取决于进程的运行者的身份 id命令查名和主组 主要配置文件 /etc/passwd:名称UID 主组ID /etc/group:组及其属性信息 /etc/shadow:用户密码及其相关属性 /etc/gshadow:组密码及其相关属 用命令打开后再用cat /etc/passwd就可以看到加密密码一般不推荐 pwunconv 显示加密密码 pwconv 不显示加密密码 注意 如果系统没有管理员则会变成无法启动!! /etc/passwd 格式为 login name:passwd:UID:GID:GECOS:home directory:shell 添加GECOS描述信息 chfn wan Name []:wanchangqiang Office []: IT Office Phone []:10086 Home Phone []:10000 finger wang finger 查用户信息 6需要安装 系统创建账号一般是从/etc/skel下拷贝标准配置 cp -r /etc/skel/.[^.]* /data/max 改max的shell为/bin/csh chsh -s /bin/csh wang 想让max账号没法登陆 chsh -s /sbin/nologin max 则max没法登陆 /etc/shadow 让用户密码立即过期,登陆时必须改密码 passwd -e max 等价于 chage -d 0 max 查max账户的密码修改相关信息 chage -l max 修改max账号的密码相关信息 chage max 如果希望所有新建的账户密码有效期统一为42天则可以直接修改配置文件 cat /etc/login.defs 例如创建账号Max useradd Max passwd Max 不然Max账户无法登陆 查看创建账号时的各种配置文件生成的地方 cat /etc/default/useradd UID范围只是系统默认的范围,可以人为超越这个范围 系统创建用户默认都是从/etc/skel/文件夹下复制初始配置文件到新用户的文件夹下的 所以如果想新用户带有别的文件可以直接往/etc/skel目录加文件 如果有新员工A进入公司想让他直接用已离职的B员工的用户权限,可以直接修改B员工用户名为A,再要求 A修改密码即可 就是进入/etc/passwd和/etc/shadow还有修改家目录/home/B的文件夹直接修改用户名A即可 新建用户的相关文件 /etc/default/useradd /etc/skel/* /etc/login.defs 更改加密算法 authconfig –passalo=sha256 –update 默认sha512 改成sha256 实际上是修改了一个文件/etc/login.defs 单向加密:哈希算法 md5 sha1 sha224 sha256 sha384 sha512 修改默认创建用户时会用的配置可以用命令 cat /etc/default/useradd 可以查各种用户信息 useradd -D useradd –D -s SHELL useradd –D –b BASE_DIR useradd –D –g GROUP 单个用户增加 useradd name group /etc/group文件里最后的是用户的附加组往里面加人可以把这些人也加到这些附加组里面 关于组group的信息 /etc/group / /etc/gshadow/ 注意必须保持两个文件里面的组成员信息相同,否则会出现命令异常的状况!! 给Max组加密码 gpasswd Max newgrp 临时切换主组 例如 newgrp Maxi 就是Max的主组切换为Maxi 如果用户本不属于此组则需要知道口令 vipw = vi /etc/passwd vi相对于nano有语法检查功能 改完之后运行 pwck可以检查报警 同理 vigr = vi /etc/group grpck 如果id超了范围则下一个建立账户就跟回原来的下一个id号 如果id没有超上限则会按照上一个创建的id下一个 生产中一般管理多台机子,都会指定id号这样方便管理 如果原来id号已经存在,还要强行建立相同id号的账号则用 useradd -ou 2000 name 一般不推荐这么做 useradd -G bin,root -s /bin/csh -c “Gentoo Distribution” 如果要指定账户uid,则uid范围可以人为超过指定范围 useradd -u 66666 xixi getent passwd xixi 只看/etc/passwd下与xixi相关的那行 新建账号boy让他的主组属于已存在组Maxi则 useradd -g Maxi boy 创建一个账户Max ,并添加附加信息hi useradd -c hi Max 创建一个新账号Max,让他的默认家目录在/data/Max则 useradd -d /data/Max Max 创建一个新账号nginx 让它成为一个系统账号同时设置shell类型为/sbin/nologin useradd -s /sbin/nologin -r nginx 创建一个新账号openstack 让它成为一个系统账号同时设置shell类型为/sbin/nologin同时为他设置家目录 useradd -s /sbin/nologin -r -m openstack 创建一个用户Max,同时不创建他的家目录则 useradd -M Max 创建一个用户Max,同时让他加入附加组app1,app3则 useradd -G “app1,app3” Max 创建Maxi用户,并使用户所属组为users则 useradd -N Maxi 删除Max用户同时删除其家目录 userdel -r Max 创建时邮箱信息放在/var/spool/mail下用userdel -r 会一起删除其存放的用户信息 练习 1、创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为 “Gentoo Distribution”? 2、创建下面的用户、组和组成员关系 名字为webs 的组 用户nginx 使用webs 作为附属组 用户varnish,也使用webs 作为附属组 用户mysql,不可交互登录系统,且不是webs 的成员,nginx,varnish,mysql密码都是magedu 答案 1、useradd -G bin,root -s /bin/csh -c “Gentoo Distribution” gettoo 2、 1)groupadd webs 2)useradd -G webs nginx 3)useradd -G webs varnish 4)useradd -r -s /sbin/nologin mysql 5)echo magedu > passwd –stdin nginx echo magedu > passwd –stdin varnish echo magedu > passwd –stdin mysql 给mage组加密码则 gpasswd mage Max账号加入到mage组做为其主组则 newgrp mage 如果需要批量创建用户或者批量迁移用户例如把文件从centos7迁移到centos6 可以先创建/datd/userlist.txt然后把/etc/passwd里面需要迁移的用户内容拷贝进文件里面注意重复的用户 必须删除,然后执行。 先执行远程拷贝命令scp scp userlist.txt 192.168.30.100:/data(此为centos6 ip) 如果没有写目录默认就是在/root下 然后按yes,之后输入对方密码就能传文件 newusers /data/userlist.txt 按照/data/userlist.txt批量创建用户 chpasswd 批量修改用户口令 批量修改口令可以直接创建一个文本pass.txt内容为 app1:redhat app2:oopp app3:abc app4:abc app5:redhat 然后执行 cat pass.txt | chpasswd usermod 对于已有用户需要修改用户信息则可以用usermod命令 用户Max加入到附加组root并不覆盖原有附加组bin则用 usermod -aG root Max 如果想要Max不属于任何附加组则 usermod -G “” Max 如果想修改用户名Max为Maxi则 usermod -l Maxi Max 但是家目录还是没改的需要手动更改 默认用户邮箱目录 /var/spool/mail/ 删除用户userdel userdel -r 删除用户名和用户目录 不过一般工作中不用-r以防万一需要用旧用户里面的数据 删除组用groupdel 但是当一个组是某个用户的主组的时候此组不能删除例如,存在用户Max则 groupdel Max 无法执行,因为他是用户Max的主组,如果附加组则可以直接删除 如果想删除组Max那么需要先指定用户Max的主组为其他组,让他不成为任何一个用户的主组,然后执行 删除 useradd usermod userdel -u -r -r -s -d -c -g -G id命令 -u -g -G -Gn 一般创建用户之前都用id命令先判断是否存在此用户才执行创建 id Max su切换用户 su Max 为不完整切换身份切换环境信息不切换 su – Max 为完全切换身份切换环境信息也切换 在生产环境中,推荐先用普通账户登陆等需要执行一些高级操作才切换到root比较安全 从当前账号Max切换到root以执行cat /etc/shadow完成后再退回Max账号 su – root -c ‘cat /etc/shadow’ 注意:每次执行完切换系统会有切换记录,尽量少切换,每次切换完用exit不然会有很多奇怪错误 在生产环境中,需要创建特定的gid和uid相同的账号的时候可以通过以下方法创建,例如创建id为1234的 nginx账号: groupadd -p 1234 nginx useradd -g nginx -u 1234 nginx 更改组的口令用gpasswd gpasswd -a user group1 将用户添加到指定组 gpasswd -d user group1从指定组中移除用户user gpasswd -A user1,user2… 设置有管理权限的用户列表例如 gpasswd -A Max g1 查询某个组里的成员有谁用groupmems groupmems -l -g groupname 在某个组里加人 groupmems -a username -g groupname 在某个组里删人 groupmems -d username -g groupname 查看账号属于哪个组 (责任编辑:admin) |