主要侧重下日常常用的命令,然后是基本的使用,并不涉及完整的功能,用到高级功能还是要去搜索啊….
有些命令是redhat系列专有的…写的有点混乱
用户管理
增加一个用户:useradd 用户名
设置当前用户的密码(后面可跟用户名设置指定用户密码):passwd 密码
删除用户(加-r参数 删除用户目录):userdel 用户
创建用户组:groupadd 组名
修改用户名:usermod -l 新用户名 旧用户名
修改用户的组:usermod -g 要加入的组名 用户名
添加附属组:gpasswd -a userName groupName
锁定用户( -u 解锁账户 -d 无密码登陆):passwd -l 用户名
切换用户,root可省略用户名:su userName
显示当前登陆用户名:whoami
显示用户信息:id name
显示组信息:groups name
用户的密码都加密存在/etc/passwd
,格式类似:root:x:0:0:root:/root:/bin/bash
[用户名]:密码:UID:GID:身份描述:主目录:登录shell
网络操作
查看网络状态 :netstat
[-tuln 监听 -an全部]
登出:logout
查看路由:netstat -rn
DNS查询:nslookup
端口探测(远程登陆不安全):telnet ip 端口
路由跟踪:traceroute addrs
下载:wget 下载文件URL
抓包:tcpdump -i eth0 -nnX port 21
([nn:ip端口显示;X:16进制拆分数据包;port:只查看21端口的)
启动ftp服务:service vsftpd start
下载文件(远程机用户名@IP:路径 本地路径)scp [-r] name@ip:src locaSrc
上传文件scp [-r] file name@ip:src
setup命令可以配置一些常见配置,如ip,图形化界面,redhead系列特有
手动配置IP看这里
包管理
已安装的软件都在/var/lib/rpm/
中的数据库中
安装命令:rpm -ivh 包全名
(参数:安装、详细信息、显示进度)
其他参数:
-U 升级跟包全名
-e 卸载
-q 查询包信息
-qa 全部的已安装包
-qi 查询详细信息
-qip 未安装包
-ql 安装的文件
-qf 文件属于那个包
-V 校验
上面的是手动安装,碰到依赖很多的包是很烦人的,所以就有了yum:
yum list
yum search 关键字
yum -y install name
yum -y update [xxname]
yum -y remove name
yum clean (清缓存)
源码包一般放在 /usr/local/src/name
安装在 /usr/local/name
权限管理
u-用户 g-组 o-其他
权限(读写执行)对应:r=4 、w=2(不包括删除) 、x=1
权限是对下一层的描述,文件的权限就是对文件中数据的描述,目录权限是对文件的描述
常用:最高权限:777,一般文件:644,可执行文件:755
目录最高权限:w 文件最高权限:x
目录有效权限:0、5、7
命令:chmod [-R]chmod u+x,g-x,o=rw xxx
[a=all]
修改所有者:chown user file
修改用户组 :chgrp group file
chown命令也可以:chown user:group
除了用:
,,
、 .
都可以
umask 用来查看默认权限 第一个是特殊权限(写在后面)
文件默认权限是 666 目录是 777;在/etc/profile
中定义
PS:配合下面的 sudo 权限,使用:chmod u+s xxName
命令可以让某个可执行文件在运行时拥有 root 权限,在运行完毕后撤销 root 权限
ACL权限
用来解决用户身份不够的问题,可以针对单一用户或组来设置特定的权限,递归时会导致权限溢出,尽量少用
查看分区ACL权限是否开启(挂载了ACL):dumpe2fs -h /dev/sda
显示:Default mount options: user_xattr acl
即为可用
dumpe2fs命令是查询指定分区详细文件系统信息的命令
-h:仅显示超级块中信息,而不显示磁盘块组的详细信息
临时开启分区ACL权限:
重新挂载根分区,并挂在加入ACL权限:mount -o remount,acl /
永久开启ACL权限:
修改文件/etc/fstab
在默认文件系统后加上acl即可
UUID=24f28fc6-717e-4bcd-a5f7-32b959024e26 / ext4 defaults,acl 0 1
重新挂载:mount -o remount /
查看(带+的是有ACL权限的):getfacl fileName
设定:setfacal -m u:name:rx [-R] file
[m:设定,u:给用户设定,g:给组设定]
添加默认ACL权限:setfacal -m d:u:name:rx [-R] file
mask 最大有效权限,设定的权限和它做逻辑与运算得到的结果是实际权限
修改mask:-m m:rx fileName
-x 删除
-b 删除所有
sudo权限
root把只能超级用户执行的权限赋予普通用户执行
sudo的操作对象是系统命令
设置sudo,权限:visudo
实际修改的是 /etc/sudoers
格式:root ALL=(ALL) ALL
root:指定个那个用户赋予sudo,前面加%就是给用户组设置
第一个ALL:被管理的电脑IP(可以在那台电脑运行sudo命令)
第二个ALL:可切换的身份,ALL就是可切换为任意用户,可省略
第三个ALL:可以执行的命令,绝对路径,如:/sbin/;写的越详细越安全,参数也限制,可使用通配符!
之类,多个条件以,
分隔sudo -l
查看可以执行的sudo命令
文件特殊权限
不要自己去设置,系统会用到
SUID/SetUID
必须是可执行文件 拥有X权限
SUID权限是第一个,代号s,数字表示4,其他操作和其他权限(基本权限rwx)类似
执行此程序会变成文件的所有者SGID/SetGID
对于文件,要求和SUID一样
权限显示S是无限的权限,有效权限是小s=S+x
执行文件时,组身份变成文件的所属组
赋予:g+s或者2755
对于目录,必须拥有r和x,在目录中创建文件所属组都是上级目录的组,而不是登陆用户的组SBIT/sticky BIT
只能是目录,其他人需要有最高权限
赋予:o+t 或者1755,普通用户只能删自己的文件chattr(不可改变位权限)
chattr +i
(insert) 被锁定,不能任何修改(对于目录就是不能新建和删除)。root也不可以
chattr +a
(append) 不能删,只能增加。增加只能用输出重定向>>
不能用vi
查看权限:lsattr -a 查看所有文件和目录 -d 查看目录权限
计划任务crontab
服务是否启动 service crond status
查看当前用户任务列表: crontab -l
服务大部分后面会加个d,如果没有安装,安装命令:yum install vixie-cron
yum install crontabs
添加任务(当前用户):crontab -e
[-e -u:指定给用户添加]/[-l -u:查看某个用户任务]
系统级计划任务在/etc/crontab
;用户的配置文件在/var/spool/cron/root
或者/var/spool/cron/tabs/root
执行crontab -e
实际上是修改/var/spool/cron/root
下面对应当前账号的文件。
系统服务crond会每分钟从配置文件刷新定时任务、执行
它还存在白名单和黑名单(都是对用户来说):
crontab .allow 白名单(优先,默认不存在)
crontab .deny 黑名单(默认存在)
格式:* * * * * cmd
分钟 小时 日期 月份 星期 命令0-59 0-23 1-31 1-12 0-7 *
就是每分钟、小时、、、
多个使用逗号分割 ;范围使用-
*/2
每隔 2 分钟;1-59/2 从 1 开始每隔 2 分钟(奇数)*
就是所有时间都匹配
除了使用crontab -e
进行添加,还可以将脚本复制到/etc/cron.{daily.weekly...}
中的任意一个文件夹下,分别每天、周、月执行【推荐】
这种方式其实是使用的anacron,它会检测/etc/cron.{daily.weekly...}
和/etc/crontab
中的文件是否在系统关机的过程中错过的定时任务,通过命令添加的是不会进行检测的。
/var/spool/anacron/con.{daily.weekly…}
内存着最后一次crontab的时间,如果当前时间到记录的时间差大于指定的差值,证明有命令漏执行,就会被anacron进行随机延迟执行,配置文件在/etc/anacrontab
可以设置延迟的最大时间,所以这种方式有个缺点就是不知道什么时候执行
所有定时任务的日志保存在/var/log/cron
定时任务at
总体和crontab差不多,只不过它是只执行一次的,首先也是看服务有没有运行,服务名是atd
同样存在白名单和黑名单:
at.allow 白名单(优先,默认不存在)
at.deny 黑名单 (默认存在)
at now +5 minutes
然后输入执行的命令就行了,ctrl + d 退出
atq 查询at -c id
查看具体内容
atrm 删除
服务管理
runlevel 是系统运行级别
init X 是设置系统级别
查看系统自启服务 RPM包服务 (cent6):chkconfig --list
CentOS7之后 ,chkconfig命令已经被systemctl命令取代
其他命令:ps aux
/netstat -tuln -an
既然能查看就能修改:chkconfig (--level 2345) httpd on/off
括号内的可省略
添加自启动另一种方法:修改/etc/rc.d/rc.local
文件【推荐】
以及图形化界面ntsysv,只能修改5等级
启动服务 server xx start/stop/status/restart
(/etc/init.d/xxx start)
对于源码包,启动服务的server (redhat系列)、chkconfig都是没效果的,想要支持server命令需要创建一个软连接:ln -s xxx /etc/init.d/
,也就是说server读取的就是/etc/init.d/
目录下的文件(实际目录是/etc/rc.d/init.d/
)
想要被 chkconfig 识别:修改 init.d 文件中的软连接的脚本,增加:
第一行定义运行级别、启动顺序、关闭顺序,顺序号只要不冲突即可
第二行是描述信息
# chkconfig:345 86 76
# description:source package apache
然后执行chkconfig --add xxx
即可
PS:/etc/rc3.d/
下面的文件是运行级别3时 系统开启与关闭分别要执行的服务文件,启动顺序与关闭顺序不能和现有的冲突,k开头的是关闭,s开头是开启
centos系列可以使用图形化界面管理,命令setup;然后再补充下系统运行级别:
0 停机,关机
1 单用户,无网络连接,不运行守护进程,不允许非超级用户登录
2 多用户,无网络连接,不运行守护进程
3 多用户,正常启动系统
4 用户自定义
5 多用户,带图形界面
6 重启
一些常用操作
修改计算机名
查看计算机名:hostname
至于修改关键是/etc/hosts
文件和/etc/sysconfig/network
文件
然后重启reboot或shutdown -r now
(-c取消)
设置默认语言
临时设置:export LANG="zh_CN.UTF-8"
永久生效:修改/etc/sysconfig/i18n
英文是:en_US.UTF-8
设置提示忽略大小写
编辑~/.inputrc
(没有的话,就新建一个),在最后加一行:set completion-ignore-case on
管道符
;
连接多个命令,无逻辑 如果报错也还是会继续执行下个命令1&&2
1正确执行才会执行21||2
1如果不正确执行2;如果1正确2不会执行1|2
1的执行结果是2的参数
目录解释
/ 根目录
/bin 命令保存目录(普通用户就可以读取的命令)
/boot 启动目录,启动相关文件
/dev 设备文件保存目录
/etc 配置文件保存目录
/home 普通用户的家目录
/lib 系统库保存目录
/mnt 系统挂载目录
/media 挂载目录
/root 超级用户的家目录
/tmp 临时目录
/sbin 命令保存目录(超级用户才能使用的目录)
/proc 直接写入内存
/sys
/usr 系统软件资源目录
/usr/bin/ 系统命令(普通用户
/usr/sbin/ 系统命令(超级用户)
/var 系统相关文档内容配置文件一般都在 etc下用户名
杂项
shell连接:ssh name@ip
创建文件:touch
创建文件夹:mkdir
统计字符:wc [-c 字节 ;-w 单词; -l 行]
分屏显示:more
查询字符串:grep 可配合管道符|
筛选使用[-i:忽略大小写;-w:搜索整个词汇],如$grep -i hAL /etc/passwd
不断显示文件的最后几行:tail -f fileName
;比如:tail -3 temp
是查看最后三行
查看文件内容:cat
查看硬盘信息:df
创建一个软连接:ln -s [原文件] [目标文件]
评论框加载失败,无法访问 Disqus
你可能需要魔法上网~~