centos下载地址:centos6.8 、 centos7 书籍推荐: 鸟哥的linux私房菜-第四版
linux各目录的作用
目录名
目录作用
/bin/
存放系统命令的目录,普通用户和超级用户都可以执行。不过放在/bin下的命令在单用户模式下也可以执行。
/sbin/
保存和系统环境设置相关的命令,只有超级用户可以使用这些命令进行系统环境设置,但是有些命令可以允许普通用户查看。
/usr/bin/
存放系统命令的目录,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行。
/usr/sbin/
存放根文件系统不必要的系统管理命令,例如多数服务程序。只有超级用户可以使用。大家其实可以注意到Linux的系统,在所有sbin目录中保存的命令只有超级用户可以使用,bin目录中保存的命令所有用户都可以使用。
/boot/
系统启动目录,保存系统启动相关的文件,如内核文件和启动引导程序(grub)文件等。
/dev/
设备文件保存位置,Linux中所有内容以文件形式保存,包括硬件。这个目录是用来保存所有硬件设备文件的。
/etc/
配置文件保存位置。系统内所有采用默认安装方式(rpm安装)的服务的配置文件全部都保存在这个目录当中,如用户账户和密码,服务的启动脚本,常用服务的配置文件等。
/home/
普通用户的家目录。建立每个用户时,每个用户要有一个默认登录位置,这个位置就是这个用户的家目录,所有普通用户的家目录就是在/home下建立一个和用户名相同的目录。如用户user1的家目录就是/home/user1。
/lib/
系统调用的函数库保存位置。
/lost+found/
当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,例如/lost+found就是根分区的备份恢复目录,/boot/lost+found就是/boot分区的备份恢复目录。
/media/
挂载目录。系统建议是用来挂载媒体设备的,例如软盘和光盘。
/mnt/
挂载目录,早期 Linux中只有这一个挂载目录,并没有细分。现在这个目录系统建议挂载额外设备,如U盘,移动硬盘和其他操作系统的分区。
/misc/
挂载目录。系统建议用来挂载NFS服务的共享目录。我们在刚刚已经解释了挂载,童鞋们应该知道只要是一个已经建立的空目录就可以作为挂载点。那么系统虽然准备了三个默认挂载目录/media、/mnt、/misc,但是到底在哪个目录中挂载什么设备都可以由管理员自己决定。例如老哥接触 Linux的时候,默认挂载目录只有/mnt一个,所以养成了在/mnt下建立不同目录挂载不同设备的习惯。如/mnt/cdrom挂载光盘,/mnt/usb挂载U盘,这都是可以的。
/opt/
第三方安装的软件保存位置。这个目录就是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录当中。不过还是更加习惯把软件放置到/usr/local/目录当中,也就是说/usr/local/目录也可以用来安装软件。
/proc/
虚拟文件系统,该目录中的数据并不保存到硬盘当中,而是保存到内存当中。主要保存系统的内核,进程,外部设备状态和网络状态灯。如/proc/cpuinfo是保存CPU信息的, /proc/devices是保存设备驱动的列表的,/proc/filesystems是保存文件系统列表的, /proc/net是保存网络协议信息的。
/sys/
虚拟文件系统。和/proc目录相似,都是保存在内存当中的,主要是保存于内核相关信息的。
/root/
超级用户的家目录。普通用户家目录在/home下,超级用户家目录直接在/下。
/srv/
服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据。
/tmp/
临时目录。系统存放临时文件的目录,该目录下所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空。
/usr/
系统软件资源目录。注意usr不是user的缩写,而是Unix Softwre Resource的缩写,所以不是存放用户数据,而是存放系统软件资源的目录。系统中安装的软件大多数保存在这里。
/var/
动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件。
服务器注意事项
远程服务器不允许关机,只能重启。
重启时应该关闭服务。
不要在服务器访问高峰运行高负载命令。
远程配置防火墙时不要把自己踢出服务器。
指定合理的密码规范并定期更新。
合理分配权限。
定期备份重要数据和日志。
命令格式 命令格式: 命令 [-选项] [参数] 例如: ls -la /etc
说明:
个别命令使用不遵循此格式
当有多个选项时,可以写在一起
简化选项与完整选项 -a 等于 –all
tab tab接在一串命令的第一个字段后面,则为【命令补全】。tab接在一串命令的第二个字段后面,则为【文件补全】。
ctrl+c 中断目前程序。
ctrl+d键盘输入结束,相当于exit。
shift + page up向上翻页。
shift + page down向下翻页。
常用命令 rm
指令名称
语法
功能描述
rm
rm -rf [文件或目录]
删除文件
-r
删除目录
-f
强制执行
[root @192 ~] rm :是否删除普通文件 "grub.conf" ?y[root @192 ~] rm : 无法删除"/root/test" : 是一个目录[root @192 ~] rm :是否进入目录"/root/test" ? yrm :是否删除目录 "/root/test/test02" ?yrm :是否删除目录 "/root/test/test01" ?yrm :是否删除目录 "/root/test" ?y[root @192 ~] [root @192 ~]
cp
指令名称
语法
功能描述
cp
cp -rp [原文件或目录] [目标目录]
复制文件或目录
-r
复制目录
-p
保留文件或属性
[root @192 /] [root @192 /] [root @192 /] -rw-r--r-- . 1 root root 46478 12 月 2 05 :31 /root/install.log[root @192 /] -rw-r--r-- . 1 root root 46478 12 月 3 10 :17 /tmp/install.log[root @192 /] [root @192 /] -rw-r--r-- . 1 root root 46478 12 月 2 05 :31 /root/install.log[root @192 /] -rw-r--r-- . 1 root root 46478 12 月 2 05 :31 /tmp/install.log[root @192 /]
mv
指令名称
语法
功能描述
mv
mv [原文件与目录] [目标目录]
剪切文件、改名
[root @192 /] [root @192 /] [root @192 ~]
ls
指令名称
语法
功能描述
ls
ls 选项[-ald] [文件或目录]
显示目录文件
-a
显示所有文件,包括隐藏文件
-l
详细信息显示
-d
查看目录属性
-h
显示文件大小
-i
显示节点信息
[root @192 ~] [root @192 ~] [root @192 ~] [root @192 ~] -rw------- . 1 root root 1455 12 月 2 05 :31 anaconda-ks .cfg-rw-r--r-- . 1 root root 46478 12 月 2 05 :31 install.log[root @192 ~] -rw------- . 1 root root 1.5 K 12 月 2 05 :31 anaconda-ks .cfg-rw-r--r-- . 1 root root 46 K 12 月 2 05 :31 install.log[root @localhost ~] -rw------- . 1 root root 0 8 月 23 06 :31 /tmp/yum.log [root @192 ~] drwxr-xr-x . 118 root root 12288 12 月 3 07 :35 /etc [root @192 ~] 803911 anaconda-ks .cfg 786436 install.log.syslog 803987 模板 803991 图片 803986 下载 803985 桌面786435 install.log 803988 公共的 803992 视频 803989 文档 803990 音乐
mkdir
指令名称
语法
功能描述
mkdir
mkdir -p [目录名]
创建新目录
-p
递归创建
[root @192 ~] [root @192 ~] mkdir: 无法创建目录"/tmp/mysql/sbin" : 没有那个文件或目录 [root @192 ~] [root @192 ~]
cd
指令名称
语法
功能描述
cd
cd [目录名]
切换目录
[root @192 ~] [root @192 test3 ] [root @192 tmp ] [root @192 tmp ]
pwd
rmdir
指令名称
语法
功能描述
rmdir
rmdir [目录名]
删除空目录
[root @192 /] [root @192 /] rmdir : 删除 "/tmp" 失败: 目录非空
touch
指令名称
语法
功能描述
touch
touch [文件名]
创建空文件
[root @192 tmp ] [root @192 tmp ] [root @192 tmp ] [root @192 tmp ]
cat
指令名称
语法
功能描述
cat
cat [文件名]
显示文件内容
-n
显示行号
[root @192 ~] [root @192 tmp ] CentOS release 6.8 (Final) Kernel \r on an \m [root @localhost tmp ] 1 CentOS release 6.8 (Final) 2 Kernel \r on an \m 3
tac
指令名称
语法
功能描述
tac
tac [文件名]
显示文件内容(反向显示)
[root @localhost tmp ] Kernel \r on an \m CentOS release 6.8 (Final)
more
指令名称
语法
功能描述
more
more [文件名]
分页显示文件内容
(空格)或f翻页
Enter换行
q或Q退出
回车键一行一行翻
一页一页翻
less
指令名称
语法
功能描述
less
less [文件名]
分页显示文件内容
(空格)或f翻页
Enter换行
q或Q退出
page up上翻
page down下翻
/ 搜索此时按
n 可以往下找
head
指令名称
语法
功能描述
head
head [文件名]
显示文件前面几行
-n
指定行数
[root @192 tmp ] [root @192 tmp ]
tail
指令名称
语法
功能描述
tail
tail [文件名]
显示文件后面几行
-n
指定行数
-f
动态显示文件末尾内容
默认动态显示末尾10行,并没有回到命令行,常用来查看日志文件
链接命令 ln
指令名称
语法
功能描述
ln
ln -s [原文件] [目标文件]
生成链接文件
-s
创建软链接
软连接特征:类似windows快捷方式
lrwxrwxrwx , l开头软链接, 3个rwx ,软链接权限不决定原文件权限,实际由原文件权限决定
文件很小,只是符号链接
箭头指向原文件
硬链接特征:
拷贝 cp -p +同步更新
通过 i 节点识别
不能跨分区
不能针对目录使用
[root @192 ~] [root @192 ~] [root @192 ~] -rw-r--r-- . 2 root root 47 5 月 19 2016 /etc/issue[root @192 ~] lrwxrwxrwx. 1 root root 10 12 月 4 07 :18 /tmp/issue.soft -> /etc/issue [root @192 ~] -rw-r--r-- . 2 root root 47 5 月 19 2016 /tmp/issue.hard [root @192 ~] CentOS release 6.8 (Final) Kernel \r on an \m [root @192 ~] [root @192 ~] CentOS release 6.8 (Final) Kernel \r on an \m www.abc.com [root @192 ~] CentOS release 6.8 (Final) Kernel \r on an \m www.abc.com [root @192 ~] CentOS release 6.8 (Final) Kernel \r on an \m www.abc.com [root @192 ~] [root @192 ~] rm :是否删除普通文件 "/etc/issue" ?y[root @192 ~] cat : /tmp/issue.soft: 没有那个文件或目录[root @192 ~] CentOS release 6.8 (Final) Kernel \r on an \m www.abc.com [root @192 ~] lrwxrwxrwx. 1 root root 10 12 月 4 07 :18 /tmp/issue.soft -> /etc/issue [root @192 ~] [root @192 tmp ] [root @192 tmp ] [root @192 tmp ] 787926 issue.bank 787926 issue.bank.hard 787927 issue.bank.soft[root @192 tmp ] ln: 创建硬链接"/boot/issue.bank.hard" => "/tmp/issue.bank" : 无效的跨设备连接 [root @192 tmp ] [root @192 ~] ln: "/tmp" : 不允许将硬链接指向目录 [root @192 ~]
权限管理命令 chmod
指令名称
语法
功能描述
chmod
chmod [{ugoa}{+-=}{rwx}] [文件或目录]
改变文件或目录权限
-R
递归修改
数字类型改变文件权限
r:4 w:2 x:1 数字累加
chmod 777 test.txt ==>[-rwxrwxrwx] owner = rwx = 4+2+1 = 7 , group = rwx = 4+2+1 = 7, other = 4+2+1 = 7 chmod 770 test.txt ==>[-rwxrwx—] owner = rwx = 4+2+1 = 7 , group = rwx = 4+2+1 = 7, other = 0+0+0 = 0 chmod 664 test.txt ==>[-rw-rw-r–] owner = rwx = 4+2+0 = 6 , group = rwx = 4+2+0 = 6, other = 4+0+0 = 4 chmod 644 test.txt ==>[-rw-r–r–] owner = rwx = 4+2+0 = 6 , group = rwx = 4+0+0 = 4, other = 0+0+0 = 0 chmod 754 test.txt ==>[-rwxr-xr–] owner = rwx = 4+2+1 = 7 , group = rwx = 4+0+1 = 5, other = 4+0+0 = 4
符号类型改变文件权限
u = user 拥有者 g = group 用户组 o = other 其他人 a = all 全部
+ 加入
-移除
=设置
chmod u=rwx,go=rx test.txt ==>[-rwxr-xr-x] chmod u=rwx,g=rx,o=r text.txt ==>[-rwxr-xr–] chmod a+w text.txt ==>则[-rwxr-xr-x] 变为 [-rwxrwxrwx] chmod a-x text.txt ==>则[-rwxr-xr-x] 变为 [-rw-rw-rw-]
文件目录权限总结:
代表字符
权限
对文件的含义
对目录的含义
r
读权限
可以查看文件内容
可以列出目录中的内容
w
写权限
可以修改文件内容
可以在目录中创建、删除文件
x
执行权限
可以执行文件
可以进入目录
[root @192 tmp ] -rw-r--r-- . 1 root root 0 12 月 3 10 :57 Japanlovestory.list[root @192 tmp ] [root @192 tmp ] -rwxr--r-- . 1 root root 0 12 月 3 10 :57 lovestory.list[root @192 tmp ] [root @192 tmp ] -rwxrw---- . 1 root root 0 12 月 3 10 :57 lovestory.list[root @192 tmp ] [root @192 tmp ] -rwxrwx--- . 1 root root 0 12 月 3 10 :57 lovestory.list[root @192 tmp ] [root @192 tmp ] -rw-r----- . 1 root root 0 12 月 3 10 :57 lovestory.list[root @192 tmp ] [root @192 tmp ] [root @192 tmp ] drwxrwxrwx. 3 root root 4096 12 月 4 11 :36 /tmp/a [root @192 tmp ] drwxrwxrwx. 2 root root 4096 12 月 4 11 :36 /tmp/a/b
chown
指令名称
语法
功能描述
chown
chown [用户] [文件或目录]
改变文件或目录的所有者
[root @localhost tmp ] [root @localhost tmp ] [root @localhost tmp ] [root @localhost tmp ] -rw-r--r-- . 1 liming root 0 8 月 24 02 :41 test.log
chgrp
指令名称
语法
功能描述
chgrp
chgrp [用户组] [文件或目录]
改变文件或目录的所属组
[root @localhost tmp ] [root @localhost tmp ] [root @localhost tmp ] -rw-r--r-- . 1 liming lambrother 0 8 月 24 02 :41 test.log
umask
指令名称
语法
功能描述
umask
umask [-S]
显示、设置文件的缺省权限
-S
以rwx形式显示新建文件缺省权限
0022 默认访问权限 0特殊权限 022 — -w- -w-
777 rwx rwx rwx 022 — -w- -w- 逻辑与(减法)
755 rwx r-x r-x 目录 rw- r– r– 文件 (文件默认没有x权限)
umask 077
777 rwx rwx rwx 077 — rwx rwx 逻辑与(减法)
700 rwx — — 目录 rw- — — 文件
[root @192 tmp ] u=rwx,g=rx,o=rx [root @192 tmp ] [root @192 tmp ] drwxr-xr-x . 2 root root 4096 Dec 7 08 :46 lamp [root @192 tmp ] [root @192 tmp ] -rw-r--r-- . 1 root root 0 Dec 7 08 :47 fanbingbing [root @192 tmp ] 0022 [root @192 tmp ] [root @192 tmp ] [root @192 tmp ] -rw------- . 1 root root 0 Dec 7 09 :19 ab[root @192 tmp ] [root @192 tmp ] drwx------ . 2 root root 4096 Dec 7 09 :19 bv [root @192 tmp ] u=rwx,g=,o=
文件搜索命令 find
指令名称
语法
功能描述
find
find [搜索范围] [匹配条件]
文件搜索
find /etc -name init find / size +204800 在根目录下查找大于100MB的文件 +n大于 -n小于 n等于 find /home -user shenchao 在根目录下查询所有者为shencaho的文件 -group 根据所属组查找 find /etc -cname -5 在/etc 下查找5分钟内被修改过属性的文件和目录 【-amin 访问时间access】、【-cname 文件属性change】、【-mmin 文件内容modify】 find /etc -size +163840 -a -size -204800 在etc下查找大于80MB小于100MB的文件 -a 两个条件同时满足 -o 两个条件满足任意一个即可 find /etc -name inittab -exec ls -l {} ; 在/etc下查找inittab文件并显示其详细信息 -exec/-ok命令 {};对搜索结果执行操作 -type 根据文件类型查找 f文件,d目录,l软链接文件 -inum 根据i节点查找
[root @192 tmp ] [root @192 tmp ] [root @192 tmp ] [root @192 tmp ] [root @192 tmp ] [root @192 tmp ] [root @192 tmp ] [root @192 ~] [root @192 ~] [root @192 ~] [root @192 ~] [root @192 ~] [root @192 ~] [root @192 ~] [root @192 ~] [root @192 ~] [root @192 ~]
locate
指令名称
语法
功能描述
locate
locate 文件名
在文件资料库中查找文件
[root @192 ~] [root @192 ~] /var/lib/mlocate/mlocate.db [root @192 ~] [root @192 ~] [root @192 ~] /root/yangmi [root @192 ~] [root @192 ~] [root @192 ~] [root @192 ~]
which
指令名称
语法
功能描述
which
which 命令
搜索命令所在目录及别名信息
[root @192 ~] alias cp ='cp -i' /bin/cp [root @192 ~] /usr/sbin/useradd [root @192 ~] alias rm ='rm -i' /bin/rm
whereis
指令名称
语法
功能描述
whereis
whereis [命令名称]
搜索命令所在目录及帮助文档路径
[root @192 ~] useradd: /usr/sbin/useradd /usr/share/man /man8/useradd.8 .gz [root @192 ~] rm : /bin/rm /usr/share/man /man1p/rm .1 p.gz /usr/share/man /man1/rm .1 .gz
grep
指令名称
语法
功能描述
grep
grep -iv [指定字串] [文件]
在文件中搜索字串匹配的行并输出
-i
不区分大小写
-v
排除指定字串
[root @192 ~] [root @192 ~] [root @192 ~]
帮助命令 man
指令名称
语法
功能描述
man
man [命令或配置文件]
获得帮助信息
whatis 命令 查看命令简短信息 apropos 配置文件 查看配置文件的信息 命令 –help info
在man page中的一些常用的按键:
按键
进行工作
空格键页
向下翻一页
page down
向下翻一页
page up
向上翻一页
home
去到第一页
end
去到最后一页
/string
向下查找string这个字符串,如果要查找vbird的话,就输入 /vbird
?string
向上查找string这个字符串
n,N
利用n,N来查找字符串时,可以用 n 来继续下一个查找(不论是 / 或 ?),可以用 N 来进行反向查找
q
结束这次man page
[root @192 ~] [root @192 ~] [root @192 ~] passwd: /usr/bin/passwd /etc/passwd /usr/share/man /man5/passwd.5 .gz /usr/share/man /man1/passwd.1 .gz [root @192 ~] [root @192 ~] [root @192 ~] [root @192 ~] [root @192 ~]
help
指令名称
语法
功能描述
help
help 命令
获得Shell内置命令的帮助(Shell内置命令是用whereis找不到的命令)
用户管理命令 useradd
指令名称
语法
功能描述
useradd
useradd 用户名
添加新用户
passwd
指令名称
语法
功能描述
passwd
passwd 用户名
设置用户密码
[root @192 ~] [yangmi @192 ~]$ passwd
who
指令名称
语法
功能描述
who
who
查看登录用户信息
[root @192 ~] root tty1 2020 -12-08 07 :40 (:0 ) root pts/0 2020 -12-08 07 :40 (192.168 .XX.1 ) yangmi pts/1 2020 -12-08 08 :56 (192.168 .XX.1 )
w
指令名称
语法
功能描述
w
w
查看登录用户详细信息
[root @192 ~] 09 :06 :40 up 1 :26 , 3 users, load average: 0.00 , 0.04 , 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 :0 07 :40 1 :26 m 1.85 s 1.85 s /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-MTkNaE /database -no root pts/0 192.168 .XX.1 07 :40 0.00 s 0.26 s 0.10 s w yangmi pts/1 192.168 .XX.1 08 :56 4 :57 0.02 s 0.02 s -bash [root @192 ~] 09 :08 :44 up 1 :28 , 3 users, load average: 0.02 , 0.05 , 0.05
压缩解压命令 gzip
指令名称
语法
功能描述
gzip
gzip 文件
压缩文件,压缩后文件格式:.gz
[root @192 ~] [root @192 tmp ] [root @192 tmp ] [root @192 tmp ] 总用量 128 -rw-r--r-- . 1 root root 127220 12 月 8 09 :19 test.gz[root @192 tmp ] [root @192 tmp ] [root @192 tmp ] gzip: a is a directory -- ignored
gunzip
指令名称
语法
功能描述
gunzip
gunzip [压缩文件]
解压缩.gz的压缩文件
[root @192 tmp ] [root @192 tmp ] 总用量 628 -rw-r--r-- . 1 root root 641020 12 月 8 09 :19 test.txt[root @192 tmp ] [root @192 tmp ] 总用量 628 -rw-r--r-- . 1 root root 641020 12 月 8 09 :19 test
tar
指令名称
语法
功能描述
tar
tar 选项[-zcf] [压缩后的文件名] [目录]
打包目录
-c
打包
-v
显示详细信息
-f
指定文件名
-z
打包同时压缩
tar命令解压缩语法: -x 解包 -v 显示详细信息 -f 指定压缩文件 -z 解压缩
压缩后文件格式: .tar .gz
[root @192 tmp ] [root @192 tmp ] [root @192 tmp ] test/ test2/test3/ test2/test4/ test2/test5/ [root @192 tmp ] a boduo japan japan.tar [root @192 tmp ] [root @192 tmp ] a boduo japan japan.tar.gz [root @192 tmp ] [root @192 tmp ] [root @192 tmp ] [root @192 tmp ] a abc abc.tar.gz boduo japan japan.tar.gz [root @192 tmp ] tar: 从成员名中删除开头的“/” [root @192 tmp ] a abc abc.tar.gz boduo etc.tar.gz japan japan.tar.gz [root @192 tmp ] [root @192 tmp ] a abc.tar.gz boduo etc.tar.gz japan japan.tar.gz [root @192 tmp ] abc/ abc/yangmi/ abc/zhang/ [root @192 tmp ] a abc abc.tar.gz boduo etc.tar.gz japan japan.tar.gz
zip
指令名称
命令英文原意
指令所在路径
执行权限
语法
功能描述
zip
/usr/bin/zip
所有用户
zip选项[-r] [压缩后文件名] [文件或目录]
压缩文件或目录
-r
压缩目录
[root @192 tmp ] [root @192 tmp ] a abc abc.tar.gz boduo boduo.zip cas etc.tar.gz japan japan.tar.gz [root @192 tmp ] adding: cas (deflated 44 %) [root @192 tmp ] a abc abc.tar.gz boduo boduo.zip cas cas.zip etc.tar.gz japan japan.tar.gz [root @192 tmp ] adding: abc/ (stored 0 %) adding: abc/yangmi/ (stored 0 %) adding: abc/zhang/ (stored 0 %) [root @192 tmp ] a abc abc.tar.gz abc.zip boduo boduo.zip cas cas.zip etc.tar.gz japan japan.tar.gz
bzip2
指令名称
命令英文原意
指令所在路径
执行权限
语法
功能描述
bzip2
/usr/bin/bzip2
所有用户
bzip2 选项[-k] [文件]
压缩文件。压缩后文件格式 .bz2
-k
产生压缩文件后保留原文件
[root @192 tmp ] [root @192 tmp ] a abc abc.tar.gz abc.zip boduo boduo.bz2 boduo.zip cas cas.zip etc.tar.gz japan japan.tar.gz [root @192 tmp ] [root @192 tmp ] a abc abc.tar.gz abc.zip boduo boduo.bz2 boduo.tar.bz2 boduo.zip cas cas.zip etc.tar.gz japan japan.tar.gz
bunzip2
指令名称
命令英文原意
指令所在路径
执行权限
语法
功能描述
bunzip2
/usr/bin/bunzip2
所有用户
bunzip2 选项[-k] [压缩文件]
解压缩
-k
产生压缩文件后保留原文件
[root @192 tmp ] [root @192 tmp ] a abc abc.tar.gz abc.zip boduo boduo.bz2 boduo.zip cas cas.zip etc.tar.gz japan japan.tar.gz [root @192 tmp ] [root @192 tmp ] a abc abc.tar.gz abc.zip boduo boduo.bz2 boduo.tar.bz2 boduo.zip cas cas.zip etc.tar.gz japan japan.tar.gz [root @192 tmp ] [root @192 tmp ] a abc.tar.gz abc.zip boduo boduo.tar.bz2 boduo.zip cas cas.zip etc.tar.gz japan.tar.gz
网络命令 write
指令名称
指令所在路径
执行权限
语法
功能描述
write
/usr/bin/write
所有用户
write <用户名>
给用户发信息,以crtl+d保存结束
[root @192 ~] ni hao yang mi aaaaa[root @192 ~] [yangmi @192 ~]$ Message from root@192.168 .88.128 on pts/0 at 08 :29 ... ni hao yang mi aaaEOF
wall
指令名称
命令英文原意
指令所在路径
执行权限
语法
功能描述
wall
write all
/usr/bin/wall
所有用户
wall [message]
发广播信息
[root @192 ~] [root @192 ~] Broadcast message from root@192.168 .88.128 (pts/0 ) (Wed Dec 9 08 :37 :34 2020 ): yangmi nihao! [yangmi @192 ~]$ Broadcast message from root@192.168 .88.128 (pts/0 ) (Wed Dec 9 08 :37 :34 2020 ): yangmi nihao!
ping
指令名称
指令所在路径
执行权限
语法
功能描述
ping
/bin/ping
所有用户
ping 选项[-c指定发送次数] IP地址
测试网络连通性
ifconfig
指令名称
命令英文原意
指令所在路径
执行权限
语法
功能描述
ifconfig
interfate configure
/sbin/ifconfig
root
ifconfig 网卡名称 IP地址
查看和设置网卡信息
last
指令名称
指令所在路径
执行权限
语法
功能描述
last
/usr/bin/last
所有用户
last
列出目前与过去登录系统的用户信息
lastlog
指令名称
指令所在路径
执行权限
语法
功能描述
lastlog
/usr/bin/lastlog
所有用户
lastlog
检查某特定用户上次登录的时间
traceroute
指令名称
指令所在路径
执行权限
语法
功能描述
traceroute
/bin/traceroute
所有用户
traceroute
显示数据包到主机间的路径
[yangmi @192 ~]$ traceroute www.baidu.com
netstat
指令名称
指令所在路径
执行权限
语法
功能描述
netstat
/bin/netstat
所有用户
netstat[选项]
显示网络相关信息
-t
TCP协议
-u
UDP协议
-l
监听
-r
路由
-n
显示IP地址和端口号
[root @192 ~] [root @192 ~] [root @192 ~]
setup
指令名称
指令所在路径
执行权限
语法
功能描述
setup
/usr/bin/setup
root
setup
配置网络
[root @192 ~] 您更改了主机名。 应该现在为系统设置主机名吗? 这样可能会造成有些 X 应用程序无法正常工作。 您可能必须重新登录。 [root @192 ~] 正在关闭接口 eth0: ....
选择网络配置 选择设备配置 选择第一个网卡 设置网络信息
mount
指令名称
指令所在路径
执行权限
语法
功能描述
mount
/bin/mount
所有用户
mount[-t文件系统]设备文件名挂载点
挂载命令
[root @localhost ~] [root @localhost ~] lrwxrwxrwx. 1 root root 3 12 月 9 08 :18 /dev/cdrom -> sr0 [root @localhost ~] mount : block device /dev/sr0 is write-protected , mounting read-only mount : /dev/sr0 already mounted or /mnt/cdrom busymount : according to mtab, /dev/sr0 is already mounted on /mnt/cdrom[root @localhost ~] [root @localhost ~] mount : block device /dev/sr0 is write-protected , mounting read-only [root @localhost ~] [root @localhost cdrom ] CentOS_BuildTag EULA images Packages repodata RPM-GPG-KEY-CentOS-Debug-6 RPM-GPG-KEY-CentOS-Testing-6 EFI GPL isolinux RELEASE-NOTES-en-US .html RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Security-6 TRANS.TBL [root @localhost cdrom ] umount: /mnt/cdrom: device is busy. (In some cases useful info about processes that use the device is found by lsof(8 ) or fuser(1 )) [root @localhost cdrom ] [root @localhost ~]
关机重启命令 shuttdown
指令名称
指令所在路径
执行权限
语法
功能描述
shutdown
shutdown [选项] 时间
关机命令
-c
取消前一个关机命令
-h
关机
-r
重启
[root @localhost ~] [root @localhost ~] [root @localhost ~] [root @localhost ~] [root @localhost ~]
其他关机命令 [root @localhost ~] [root @localhost ~] [root @localhost ~]
其他重启命令 [root @localhost ~] [root @localhost ~]
系统运行级别
指令名称
指令描述
0
关机
1
单用户
2
不完全多用户,不含NFS服务
3
完全多用户
4
未分配
5
图形界面
6
重启
[root @localhost ~] id:5 :initdefault: [root @localhost ~] N 5 [root @localhost ~]
logout [root @localhost ~] Connection closing...Socket close. Connection closed by foreign host. Disconnected from remote host(192.168 .88.128 ) at 22 :24 :14 . Type `help' to learn how to use Xshell prompt.
文本编辑器vim 常用操作 Vim是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,他的作用是建立、编辑、显示文本文件。Vim没有菜单,只有命令。
工作模式
插入
命令
作用
命令
作用
a
在光标所在字符后插入
A
在光标所在行尾插入
i
在光标所在字符前插入
I
在光标所在行行首插入
o
在光标下插入新行
O
在光标上插入新行
定位
命令
作用
命令
作用
:set nu
设置行号
:set nonu
取消行号
gg
到第一行
G
到最后一行
nG
到第n行
:n
到第n行
$
移至行位
0
移至行首
删除
命令
作用
命令
作用
x
删除光标所在处字符
nx
删除光标所在处后n个字符
dd
删除光标所在行,ndd删除n行
dG
删除光标所在行到文件末尾内容
D
删除光标所在处到行尾内容
:n1,n2d
删除指定范围的行
复制和剪切
命令
作用
命令
作用
yy
复制当前行
nyy
复制当前行以下n行
dd
剪切当前行
ndd
剪切当前行以下n行
p
粘贴在当前光标所在行下(小写p)
P
粘贴在当前光标所在行上(大写p)
替换和取消
命令
作用
命令
作用
r
取代光标所在处字符
R
从光标所在处开始替换字符,按ESC取消
u
取消上一步操作
搜索和搜索替换
命令
作用
命令
作用
/string
搜索指定字符串,搜索时忽略大小写:set ic
n
搜索指定字符串的下一个出现位置
:%s/old/new/g
全文替换指定字符串
:n1,n2s/old/new/g
在指定范围内替换指定字符串,/c 替换时有询问操作,/g替换时无询问操作
保存和退出
命令
作用
命令
作用
:w
保存修改
:w new_filename
另存为指定文件
:wq
保存修改并退出
ZZ
快捷键,保存修改并退出
:q!
不保存修改退出
:wq!
保存修改并退出(文件所有者及root可使用)
使用技巧
命令
作用
:r 文件名
导入指定文件内容到当前所编辑的文件之中(光标所在处),例如导入/etc/issue文件内容到当前所编辑的文件中 :r /etc/issue
:!which 命令
在不退出vim的情况下找到命令所在路径,按Enter继续
:r !命令
把一个命令的执行结果导入到当前编辑的文件中(光标所在处),例如导入当前时间 :r !date
:map 快捷键 触发命令
定义快捷键,例如当按快捷键ctrl+p的时候在一行的行首添加注释,可以这样写 :map ^P I#<ESC>,其中 ^P 需要同时按CTRL+V+P,I#表示在行首插入#,<ESC>表示按ESC结束,
快捷键:map ^B 0x 表示定义快捷键ctrl+B删除行首的第一个字符,其中 ^B 需要同时按ctrl+V+B,快捷键:map ^H test@cntaiping.com<ESC> 表示定义快捷键CTRL+H,在光标所在处插入邮箱地址
:n1,n2s/^/#/g
连续行注释,例如注释1-4行可以这样写:1,4s/^/#/g ,去掉1-4行注释可以这样写:1,4s/^#//g,在1-4行行首添加//双斜杠注释可以这样写:1,4s/^/\/\//g,其中\/表示转义字符
替换ab
ab mymail test@test.com 当输入mymail时按回车会自动替换为 test@test.com,重启之后快捷键会失效,可以在.vimrc下定义快捷键,永久有效,普通用户路径:/home/username/.vimrc,root用户路径/root/.vimrc
软件包管理
软件包分类
源码包:脚本安装包
二进制包(RPM包、系统默认包)
源码包
源码包的优点
开源,如果有足够的能力,可以修改源代码。
可以自由选择所需的功能。
软件是编译安装,所以更加适合自己的系统,更加稳定,效率也更高。
卸载方便。
源码包的缺点
安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误。
编译过程时间较长,安装比二进制安装时间长。
因为是编译安装,安装过程中一旦报错新手很难解决。
RPM包
二进制包的优点
包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载。
安装速度比源码包安装快的多。
二进制包的缺点
经过编译,不再可以看到源代码。
功能选择不如源码包灵活。
依赖性。
rpm命令 rpm包命名规则
httpd-2.2.15-15.el6.centos.l.i686.rpm 包全名 httpd 软件包名 2.2.15 软件版本 15 软件发布的次数 el6.centos 适合的linux平台 i686 适合的硬件平台 rpm rpm包扩展名
rpm包路径:CentOS-6.3-i386-bin-DVD1.iso\Packages 目录下
rpm包依赖性
树形依赖:a–>b–>c
环形依赖:a–>b–>c–>a
模块依赖:模块依赖查询网站www.rpmfind.net
rpm安装升级与卸载 包名与包全名
包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径。
包名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm中的数据库
RPM安装
命令
作用
选项
作用
rpm -ivh 包全名
rpm安装
-i(install)
安装
-v(verbose)
显示详细信息
-h(hash)
显示进度
--nodeps
不检测依赖性
[root @localhost ~] [root @localhost ~] [root @localhost ~] [root @localhost Packages ]
RPM包升级
命令
作用
选项
作用
rpm -Uvh 包全名
rpm升级
-U
升级
RPM包卸载
命令
作用
选项
作用
rpm -e 包全名
rpm卸载
-e(erase)
卸载
--nodeps
不检测依赖性
查询是否安装
命令
作用
选项
作用
rpm -q 包名
查询包是否安装
-q
查询(query)
-a
所有(all)
[root @localhost Packages ] httpd-2 .2.15 -53 .el6.centos.x86_64 [root @localhost Packages ] package httpdfda is not installed [root @localhost Packages ] cdrdao-1 .2.3 -4 .el6.x86_64 ibus-table-additional-1 .2.0 .20100111 -5 .el6.noarch .....
查询软件包详细信息
命令
作用
选项
作用
rpm -qi 包名
查询软件包详细信息
-i
查询软件信息(information)
-p
查询未安装包信息(package包全名)
[root @localhost Packages ] [root @localhost Packages ]
查询包中文件安装位置
命令
作用
选项
作用
rpm -ql 包名
查询包中文件安装位置
-l
列表(list)
-p
查询未安装包信息(package包全名)
[root @localhost Packages ] [root @localhost Packages ]
查询文件系统属于哪个RPM包
命令
作用
选项
作用
rpm -qf 系统文件名
查询文件系统属于哪个RPM包
-f
查询系统文件属于哪个软件包(file)
[root @localhost Packages ] httpd-2 .2.15 -53 .el6.centos.x86_64
查询软件包的依赖性
命令
作用
选项
作用
rpm -qR 包名
查询软件包的依赖性
-R
查询软件包的依赖性(requires)
-p
查询未安装包信息(package包全名)
[root @localhost Packages ] [root @localhost Packages ]
RPM包校验
命令
作用
选项
作用
rpm -V 已安装的包名
RPM包校验
-V
校验指定RPM包中的文件(verify)
验证内容中的8个信息的具体内容如下:
选项
作用
选项
作用
S
文件大小是否改变
M
文件的类型或文件的权限(rwx)是否被改变
5
文件MD5校验和是否改变(可以看成文件内容是否改变)
D
设备的中,从代码是否改变
L
文件路径是否改变
U
文件的属主(所有者)是否改变
G
文件的属组是否改变
T
文件的修改时间是否改变
文件类型:
选项
作用
选项
作用
c
配置文件( config file)
d
普通文档( documentation)
g
“鬼”文件( ghost file),很少见,就是该文件不应该被这个RPM包包含
l
授权文件( license file
r
描述文件( read me)
RPM包中文件提取 rpm2cpio 全包名 | cpio -idv . 文件绝对路径
rpm2cpio 将rmp包转换为cpio格式的命令
cpio是一个标准工具,他用于创建软件档案文件和从档案文件中提取文件
命令
作用
选项
作用
cpio 选项<文件或设备>
-i
copy-in模式,还原
-d
还原时自动新建目录
-v
显示还原过程
[root @localhost ~] coreutils-8 .4 -43 .el6.x86_64 [root @localhost ~] [root @localhost ~] -bash : ls : command not found[root @localhost ~] ./bin/ls 25240 块[root @localhost ~]
yum在线管理 IP地址配置和网络yum源 [root @192 ~] [root @localhost ~] DEVICE=eth0 HWADDR=00 :0 c:29 :b3:fb:29 TYPE =EthernetUUID=742 f9267-2297-45d1-b7ad-cd00f88779d6 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168 .88.128 NETMASK=255.255 .255.0 GATEWAY=192.168 .1.1 DNS1=202.106 .0.20 USERCTL=no PEERDNS=yes IPV6INIT=no [root @localhost ~] [root @localhost ~] [root @192 ~]
选择网络配置 选择设备配置 选择第一个网卡 设置网络信息
网络yum源
选项
作用
[base]
容器名称,一定要放在[]中
name
容器说明,可以自己随便写
mirrorlist
镜像站点,这个可以注释掉
baseurl
我们的yum源服务器的地址。默认是CentOS的官方的yum源服务器,是可以使用的,如果觉得慢可以改成你喜欢的yum镜像源地址
enabled
此容器是否生效,如果不写或者写成enable=1都是生效的,写成enable=0就是不生效
gpgcheck
如果1是指RPM的数字证书生效,如果是0则不生效
gpgkey
数字证书的公钥文件保存位置。不用修改
[root @192 ~] [root @192 yum.repos.d ] CentOs-Base .repo CentOS-Base .repo CentOS-Debuginfo .repo CentOS-fasttrack .repo CentOS-Media .repo CentOS-Vault .repo [root @192 yum.repos.d ] [base ] name=CentOS-$releasever enabled=1 failovermethod=priority baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever /os/$basearch / gpgcheck=1 gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7 [updates ] name=CentOS-$releasever enabled=1 failovermethod=priority baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever /updates/$basearch / gpgcheck=1 gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7 [extras ] name=CentOS-$releasever enabled=1 failovermethod=priority baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever /extras/$basearch / gpgcheck=1 gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7 [root @192 yum.repos.d ] [1 ]+ Stopped less CentOs-Base .repo
查询所有可用软件包列表
命令
作用
yum list
查询所有可用软件包列表
[root @iZuf64m2pjj5o9ggzbg1wxZ yum.repos.d ]
搜索软件包
命令
作用
yum search [关键字(包名)]
搜索服务器上所有和关键字相关的包
[root @iZuf64m2pjj5o9ggzbg1wxZ yum.repos.d ]
安装软件包
命令
作用
选项
作用
yum -y install [包名]
install
安装软件包
-y
自动回答yes
[root @iZuf64m2pjj5o9ggzbg1wxZ yum.repos.d ] [root @iZuf64m2pjj5o9ggzbg1wxZ yum.repos.d ]
升级软件包
命令
作用
选项
作用
yum -y update [包名]
update
升级软件包
-y
自动回答yes
卸载软件包
命令
作用
选项
作用
yum -y remove [包名]
remove
卸载软件包
-y
自动回答yes
软件包列表
命令
作用
yum grouplist
列出所有可用的软件组列表
yum groupinstall 软件组名
安装指定软件组,组名可以由grouplist查询出来,如果组名之间有空格,用双引号扩起来
yum groupmove 软件组名
卸载指定软件组
[root @iZuf64m2pjj5o9ggzbg1wxZ ~]
光盘yum源搭建 [root @localhost ~] mount : block device /dev/sr0 is write-protected , mounting read-only [root @192 ~] [root @192 yum.repos.d ] CentOS-Base .repo CentOS-Debuginfo .repo CentOS-fasttrack .repo CentOS-Media .repo CentOS-Vault .repo [root @192 yum.repos.d ] [root @192 yum.repos.d ] [root @192 yum.repos.d ] [root @192 yum.repos.d ] [root @192 yum.repos.d ] CentOS-Base .repo.bak CentOS-Debuginfo .repo.bak CentOS-fasttrack .repo.bak CentOS-Media .repo CentOS-Vault .repo.bak [root @192 yum.repos.d ] [c6 -media ] name=CentOS-$releasever - Media baseurl=file:///mnt/cdrom/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg /RPM-GPG-KEY-CentOS-6
源码包管理 源码包和RPM包的区别
区别 安装之前的区别:概念上的区别 安装之后的区别:安装位置不同
RPM包默认安装路径,是安装在默认位置中
RPM包默认安装路径
/etc/
配置文件安装目录
/usr/bin/
可执行的命令安装目录
/usr/lib/
程序所使用的函数库保存位置
/usr/share/doc/
基本的软件使用手册保存位置
/usr/share/man/
帮助文件保存位置
源码包安装位置 安装在指定位置当中,一般是/usr/local/软件名/
安装位置不同带来的影响 RPM包安装的服务可以使用系统服务管理命令(service)来管理,而源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理,例如RPM包安装的Apache的启动方法是:
[root @192 ~] [root @192 init.d ] abrt-ccpp certmonger httpd messagebus oddjobd rpcgssd snmptrapd abrtd cpuspeed ip6tables netconsole portreserve rpcidmapd spice-vdagentd abrt-oops crond iptables netfs postfix rpcsvcgssd sshd acpid cups irqbalance network psacct rsyslog sssd atd dnsmasq kdump NetworkManager quota_nld sandbox sysstat auditd firstboot killall nfs rdisc saslauthd udev-post autofs functions lvm2-lvmetad nfslock restorecond single wdaemon avahi-daemon haldaemon lvm2-monitor ntpd rngd smartd wpa_supplicant bluetooth halt mdmonitor ntpdate rpcbind snmpd ypbind [root @192 init.d ] 正在启动 httpd: [root @192 init.d ] 停止 httpd: [确定] 正在启动 httpd: [确定]
源码包安装过程
安装准备
[root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ ~] gcc-4 .8.5 -44 .el7.x86_64
下载源码包http://mirror.bit.edu.cn/apache/httpd/,下载httpd-2.4.46.tar.gz
安装注意事项
源码包保存位置:/usr/local/src
软件安装位置:/usr/local
如何确定安装过程报错:安装过程停止,并出现error,warning或者no提示,即发生错误
安装
使用winscp上传httpd-2.4.46.tar.gz
解压下载到源码包
[root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ httpd -2.4 .46 ] ABOUT_APACHE BuildAll.dsp configure.in include LICENSE README test acinclude.m4 BuildBin.dsp docs INSTALL Makefile.in README.cmake VERSIONING Apache-apr2 .dsw buildconf emacs-style InstallBin.dsp Makefile.win README.platforms Apache.dsw CHANGES httpd.dep LAYOUT modules ROADMAP apache_probes.d CMakeLists.txt httpd.dsp libhttpd.dep NOTICE server ap.d config.layout httpd.mak libhttpd.dsp NWGNUmakefile srclib build configure httpd.spec libhttpd.mak os support
./config软件配置与检测
定义需要的功能选项。
检测系统环境是否符合安装要求
把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑。
[root @iZuf6fhk4slpwaz2668zqyZ httpd -2.4 .46 ] [root @iZuf6fhk4slpwaz2668zqyZ httpd -2.4 .46 ] [root @iZuf6fhk4slpwaz2668zqyZ httpd -2.4 .46 ] [root @iZuf6fhk4slpwaz2668zqyZ httpd -2.4 .46 ]
启动后访问:
安装报错APR not found解决办法
[root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ apr -1.4 .5 ] [root @iZuf6fhk4slpwaz2668zqyZ apr -1.4 .5 ] [root @iZuf6fhk4slpwaz2668zqyZ apr -1.4 .5 ] [root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ apr -util -1.3 .12 ] [root @iZuf6fhk4slpwaz2668zqyZ apr -util -1.3 .12 ] [root @iZuf6fhk4slpwaz2668zqyZ apr -util -1.3 .12 ] [root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ pcre -8.10 ] [root @iZuf6fhk4slpwaz2668zqyZ pcre -8.10 ] [root @iZuf6fhk4slpwaz2668zqyZ pcre -8.10 ]
安装报错pcre-config for libpcre not found 执行以下命令:
[root @iZuf6fhk4slpwaz2668zqyZ ~]
此次安装的文件如下
脚本安装包与软件包选择
脚本安装包
脚本安装包并不是独立的软件包类型,常见安装的是源码包。
是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。
非常类似于Windows下软件的安装方式
Webmin的作用 Webmin是一个基于Web的 Linux系统管理界面。您就可以通过图形化的方式设置用户帐号、 Apache、DNS、文件共享等服务。
Webmin安装过程
下载地址:https://sourceforge.net/projects/webadmin/files/webmin/,下载webmin-1.962.tar.gz
使用winscp上传到/root/目录下
安装
[root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ ~] [root @iZuf6fhk4slpwaz2668zqyZ webmin -1.962 ] Web server port (default 10000 ): Login name (default admin): admin Login password: Password again: The Perl SSLeay library is not installed. SSL not available.
阿里云安全组规则中新增入方向为10000/10000
登录
用户管理 用户信息文件/etc/passwd
越是对服务器安全性要求高的服务器,越需要建立合理的用户权限登记制度和服务器操作规范,在Linux中主要是通过用户配置文件来查看和修改用户信息
/etc/passwd
[root @192 ~] [root @192 ~] root:x:0 :0 :root:/root:/bin/bash vcsa:x:69 :69 :virtual console memory owner:/dev:/sbin/nologin tcpdump:x:72 :72 ::/:/sbin/nologin
passwd配置文件分为七个字段:root:x:0:0:root:/root:/bin/bash
第一个字段:用户名称
第二个字段:密码标志 x代表用户有密码,真正的密码放在/etc/shadow里,它里面进行了SHA512加密,如果没有x,代表没有密码,只能进行本地登陆,远程登陆会被禁止,SHA协议禁止
第三个字段:UID(用户ID)
用户id
说明
0
超级用户
1-499
系统用户(伪用户)
500-65535
普通用户
第四个字段:GID(用户初始组ID)
初始组:就是指用户一登陆就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组 附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个
第五个字段:用户说明
第六个字段:家目录
普通用户:/home/用户名/ 超级用户:/root/
第七个字段:登陆之后的Shell
Shell就是Linux的命令解释器,在/etc/passwd当中,除了标准Shell是/bin/bash之外。还可以写如/sbin/nologin,普通用户全为/sbin/nologin。/bin/bash为可以登陆,/sbin/nologin为禁止登陆,修改之后便可以禁止普通用户登陆
影子文件/etc/shadow [root @192 ~] root:$6 $fSPFTuqP4WOQ2DKs $BYsNI13 /ZsDqCm9/qy9rVb4LUCBD7Ur7gzpBT5Ei3iP5ZqjZZiIu4NdBLlV1Ac4wUcIqizy1qPKQe3HAQjBiB/:18597 :0 :99999 :7 ::: bin:*:15980 :0 :99999 :7 ::: daemon:*:15980 :0 :99999 :7 ::: pulse:!!:18597 ::::::
Shadow配置文件分为个字段:
第一个字段:用户名
第二个字段:加密算法 加密算法升级为SHA512散列加密算法,如果密码是!!或者0代表没有密码,不能登陆,可以用感叹号禁用用户密码
第三个字段:密码最后一次修改日期 使用1970年1月1日作为标准时间,每过一天时间戳加1
时间戳换算:date -d “1970-01-01 [时间戳] days”
日期换算时间戳:echo $(($(date –date=“年/月/日” +%s)/[时间戳]+1))
[root@192 ~]# date -d "1970-01-01 16066 days" #时间戳换算日期 16066是时间戳 2013年 12月 27日 星期五 00:00:00 CST [root@192 ~]# echo $(($(date --date="2014/01/06" +%s)/86400+1)) # 日期换算时间戳 16076
第四个字段:两次密码的修改时间间隔时间(和第三个字段相比)
第五个字段:密码有效期(和第三个字段相比)
第六个字段:密码修改到期前的警告天数(和第五个字段相比)
第七个字段:密码过期后的宽限天数(和第五个字段相比) 0:代表密码过期后立即失效 -1:代表密码永远不会失效
第八个字段:账号失效时间 要用时间戳表示
第九个字段:保留
组信息文件/etc/group [root @192 ~] root:x:0 : bin:x:1 :bin,daemon daemon:x:2 :bin,daemon sys:x:3 :bin,adm adm:x:4 :adm,daemon
组文件信息配置文件分4个字段:
第一个字段:组名 第二个字段:组密码标志 第三个字段:GID 第四个字段:组中附加用户
组密码文件/etc/gshadow [root @192 ~] root::: bin:::bin,daemon daemon:::bin,daemon sys:::bin,adm adm:::adm,daemon tty:::
组密码文件配置文件分4个字段:
第一个字段:组名 第二个字段:组密码 第三个字段:组管理员用户名 第四个字段:组中附加用户
用户管理相关文件 用户的家目录/home/ [root @192 ~] 总用量 24 drwx------ . 2 root root 16384 12 月 2 05 :14 lost+found drwx------ . 4 yangmi yangmi 4096 12 月 8 10 :13 yangmi [root @192 ~] dr-xr-x--- . 34 root root 4096 12 月 21 08 :52 /root/
普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700 超级用户:/root/,所有者和所属组都是root用户,权限是550 普通用户变为超级用户家目录不会变
用户的邮箱/var/spool/mail/ [root @192 ~] [root @192 mail ] root rpc yangmi
用户模板目录/etc/skel [root @192 yangmi ] [root @192 skel ] [root @192 skel ] . .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla warning.txt [root @192 skel ] [root @192 skel ] [root @192 skel ] [root @192 user1 ] . .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla warning.txt
在/etc/skel里创建了文件的话,在创建新用户时会自动出现在新用户家目录的默认隐藏信息里(用于写警告信息)
用户管理 添加新用户useradd
语法
说明
选项
选项说明
useradd [选项] 用户名
添加新用户
-u UID
手工指定用户的UID号
-d 家目录
手工指定用户的家目录
-c 用户说明
手工指定用户的说明
-g 组名
手工指定用户的初始组
-G 组名
指定用户的附加组
-s shell
手工指定
用户的登陆shell。默认是/bin/bash,passwd,shadow,group,gshadow,home,mail里面都有新用户信息
[root @192 ~] [root @192 ~] [root @192 ~] user:x:503 :504 ::/home/user:/bin/bash [root @192 ~] user:$6 $XSmOILya $2F0UXlwx54wJerNRNz6xY0quG5ou2gGocowLGli71Dqy1N .4 iGJDMa/XfiFxQrV1.MVSsweHOVStQug3pgeg60:18617 :0 :99999 :7 ::: [root @192 ~] user:x:504 : [root @192 ~] user:!:: [root @192 ~] drwx------ . 4 user user 4096 12 月 21 10 :27 /home/user/ [root @192 ~] -rw-rw---- . 1 user mail 0 12 月 21 10 :27 /var/spool/mail/user[root @192 ~] [root @192 ~] liming:x:666 :666 :test user:/liming:/bin/bash [root @192 ~] drwx------ . 4 liming liming 4096 12 月 24 04 :04 /liming
/etc/default/useradd里面定义了建立用户的默认信息
说明
GROUP=100
用户默认组
HOME=/home
用户家目录
INACTIVE=-1
密码过期宽限天数(shadow文件第七个字段)
EXPIRE=
密码失效时间(shadow文件第八个字段)
SHELL=/bin/bash
默认shell
SKEL=/etc/skel
模板目录
CREATE_MALL_SPOOL=yes
是否建立邮箱
[root@192 ~]# vim /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
/etc/login.defs
说明
PASS_MAX_DAYS 99999
密码有效期(shadow文件第五个字段)
PASS_MIN_DAYS 0
密码修改间隔(shadow文件第四个字段)
PASS_MIN_LEN 5
密码最小5位(PAM)现在为PAM生效,5位密码不生效
PASS_WARN_AGE 7
密码到期警告(shadow文件第六个字段)
UID_MIN 500
最小UID范围
GID_MAX 60000
最大UID范围
ENCRYPT_METHOD SHA512
加密模式
修改用户密码passwd
语法
说明
选项
说明
passwd [选项] 用户名
修改用户密码
-S
查询用户密码的密码状态。仅root用户可以
-l
暂时锁定用户。仅root用户可用
-u
解锁用户。仅root用户可用
–stdin
可以通过管道符(|)输出的数据作为用户的密码
passwd 用户名 root用户给普通用户修改密码
普通用户自己修改密码,例如使用liming用户登录修改密码,直接使用passwd,需要先确认密码后才能修改密码
passwd -S 用户名 查询用户密码的密码状态,例如下面的查询,用户密码设定时间(2020-12-23),密码修改时间间隔(0),密码有效期(99999),警告时间(7),密码不失效(-1),实际显示的就是/etc/shadow文件信息
[root@192 ~]# passwd -S liming liming PS 2020-12-23 0 99999 7 -1 (密码已设置,使用 SHA512 加密。) [root@192 ~]# cat /etc/shadow | grep liming liming:$6$0w2tQQRH$Eyjew7YZWX/s5s3XDrjpxkbbsnVBbulByFaZ7bfkSuuC/uPH9HfR.2lfmvRymMa3Z6vdvNTxsp8isr.0ip6.c/:18619:0:99999:7:::
passwd -l 用户名 锁定用户,查看shadow文件可以看出密码前有!!,表示这个用户被锁定了
[root@192 ~]# passwd -l liming # 锁定用户 liming 的密码 。 passwd: 操作成功 [root@192 ~]# vim /etc/shadow liming:!!$6$0w2tQQRH$Eyjew7YZWX/s5s3XDrjpxkbbsnVBbulByFaZ7bfkSuuC/uPH9HfR.2lfmvRymMa3Z6vdvNTxsp8isr.0ip6.c/:18619:0:99999:7:::
passwd -u 用户名 解锁用户,查看shadow文件可以看出密码前的!!被删除了,表示这个用户被解锁了
[root@192 ~]# passwd -u liming 解锁用户 liming 的密码 。 passwd: 操作成功 [root@192 ~]# vim /etc/shadow liming:$6$0w2tQQRH$Eyjew7YZWX /s5s3XDrjpxkbbsnVBbulByFaZ7bfkSuuC/uPH9HfR.2lfmvRymMa3Z6vdvNTxsp8isr.0ip6.c/:18619:0:99999:7:::
echo "123" | passwd —stdin [用户名] 使用字符串作为用户的密码
echo "123" | passwd —stdin liming
修改用户信息usermod
语法
说明
选项
说明
usermod [选项] 用户名
修改用户信息
-u UID
修改用户的UID号
-c 用户说明
修改用户的说明信息
-G 组名
修改用户的附加组
-L
临时锁定用户(Lock)
-U
解锁用户锁定(Unlock)
以下例子修改用户liming的用户说明为my user,加入root附加组,修改的uid号为550
[root@192 ~]# cat /etc/passwd liming:x:666:666:test user:/liming:/bin/bash [root@192 ~]# usermod -c "my user" -G root -u 550 liming [root@192 ~]# cat /etc/passwd liming:x:550:666:my user:/liming:/bin/bash
锁定liming用户,此时/etc/shadow 文件liming用户密码前多一个!
[root@192 ~]# usermod -L liming [root@192 ~]# vim /etc/shadow liming:!$6$0w2tQQRH$Eyjew7YZWX/s5s3XDrjpxkbbsnVBbulByFaZ7bfkSuuC/uPH9HfR.2lfmvRymMa3Z6vdvNTxsp8isr.0ip6.c/:18619:0:99999:7:::
解锁liming用户,此时/etc/shadow 文件liming用户密码前的!被删除
[root@192 ~]# usermod -U liming [root@192 ~]# vim /etc/shadow liming:$6$0w2tQQRH$Eyjew7YZWX/s5s3XDrjpxkbbsnVBbulByFaZ7bfkSuuC/uPH9HfR.2lfmvRymMa3Z6vdvNTxsp8isr.0ip6.c/:18619:0:99999:7:::
修改用户密码状态chage
语法
说明
选项
说明
chage [选项] 用户名
修改用户密码状态
-l
列出用户的详细密码状态
-d 日期
修改密码最后一次更新时间(shadow文件第三个字段)
-m 天数
两次修改密码间隔(shadow文件第四个字段)
-M 天数
密码有效期(shadow文件第五个字段)
-W 天数
密码过期前警告天数(shadow文件第六个字段)
-I 天数
密码过期后宽限天数(shadow文件第七个字段)
-E 日期
账号失效时间(shadow文件第八 个字段)
例子重要用法:chage -d 0 [用户名]这个命令其实是把密码修改日期归0了,这样用户一登陆就要修改密码(学校,公司身份系统修改初始密码)
删除用户userdel
语法
说明
选项
说明
userdel [-r] 用户名
删除用户
-r
删除用户的同时删除用户家目录
查看用户ID id 用户名 以下例子查询liming用户的用户ID
[root@192 ~]# id liming uid=550(liming) gid=666(liming) 组=666(liming),0(root)
用户切换命令su
语法
说明
选项
说明
su [选项] 用户
用户切换命令
-
选项只使用“-”代表连带用户的环境变量一起切换
-c
仅执行一次命令,而不切换用户身份
env查看用户环境变量
普通用户liming切换成超级用户root
[liming@192 ~]$ su - root
不切换成root,但是执行useradd命令添加user1用户
[root@192 ~]# su - root -c "useradd user1"
用户组管理命令 添加用户组
语法
说明
选项
说明
groupadd [选项] 组名
添加用户组
-g GID
指定组ID
添加用户组tg,可以在/etc/group下查看组信息
[root@quan ~]# groupadd tg [root@quan ~]# vi /etc/group tg:x:1000:
修改用户组
语法
说明
选项
说明
groupmod [选项] 组名
修改用户组
-g GID
修改组ID
-n 新组名
修改组名
把用户组tg修改为新组名lampgroup,可以在/etc/group下查看组名被修改了
[root@quan ~]# groupmod -n lampgroup tg [root@quan ~]# vi /etc/group lampgroup:x:1000:
删除用户组
语法
说明
选项
说明
groupdel 组名
删除用户组
删除组lampgroup,如果用户组有初始用户,需要先删除初始用户,然后才能删除用户组
[root@quan ~]# groupdel lampgroup
用户添加入组、从组中删除
语法
说明
选项
说明
gpasswd 选项 组名
把用户添加入组或者从组中删除
-a 用户名
把用户加入组
-d 用户名
把用户从组中删除
把用户user1和user2添加进root组,在/etc/group中可以看到用户user1和user被加入了root组
[root@iZuf6fhk4slpwaz2668zqyZ ~]# gpasswd -a user1 root Adding user user1 to group root [root@iZuf6fhk4slpwaz2668zqyZ ~]# gpasswd -a user2 root Adding user user2 to group root [root@quan ~]# vi /etc/group root:x:0:user1,user2
把用户user1从root用户组中删除,在/etc/group中可看到只剩下user2用户
[root@iZuf6fhk4slpwaz2668zqyZ ~]# gpasswd -d user1 root Removing user user1 from group root [root@quan ~]# vi /etc/group root:x:0:user2
ACL权限 ACL权限简介与开启
ACL权限是为了解决所有者,所属组,其他人三个权限用户身份分配不足的问题
查看分区ACL权限是否开启
dumpe2fs命令是查询指定分区详细文件系统信息的命令
语法
说明
选项
说明
dumpe2fs -h [分区]
查看分区ACL权限是否开启
-h
仅显示超级块中信息,而不显示磁盘块组的详细信息
先使用df命令来检查linux服务器的文件系统的磁盘空间占用情况
[root@192 ~]# df -h 文件系统 容量 已用 可用 已用%% 挂载点 /dev/sda5 17G 3.0G 13G 19% / tmpfs 504M 100K 504M 1% /dev/shm /dev/sda1 194M 27M 158M 15% /boot /dev/sda2 2.0G 35M 1.8G 2% /home /dev/sr0 3.5G 3.5G 0 100% /media/CentOS_6.3_Final
可以看到Default mount options: user_xattr acl 选项默认开启ACL权限
[root@192 ~]# dumpe2fs -h /dev/sda5 dumpe2fs 1.41.12 (17-May-2010) Filesystem volume name: <none> Last mounted on: / Filesystem UUID: c366cfac-a7b2-4c81-821e-0cdb30c41189 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 1105920 Block count: 4423168 Reserved block count: 221158 Free blocks: 3579940 Free inodes: 1010371 First block: 0 Block size: 4096 Fragment size: 4096 Reserved GDT blocks: 1022 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 8192 Inode blocks per group: 512 Flex block group size: 16 Filesystem created: Sat Dec 19 03:08:34 2020 Last mount time: Fri Dec 25 03:05:23 2020 Last write time: Thu Dec 24 03:57:47 2020 Mount count: 7 Maximum mount count: -1 Last checked: Sat Dec 19 03:08:34 2020 Check interval: 0 (<none>) Lifetime writes: 4944 MB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 28 Desired extra isize: 28 Journal inode: 8 First orphan inode: 262644 Default directory hash: half_md4 Directory Hash Seed: 1d093332-fd3e-4c87-9037-c6723db0036e Journal backup: inode blocks Journal features: journal_incompat_revoke 日志大小: 128M Journal length: 32768 Journal sequence: 0x00000dc1 Journal start: 1
临时开启分区ACL权限mount -o remount,acl / 重新挂载根分区,并挂载加入acl权限
永久开启分区ACL权限
在UUID=c366cfac-a7b2-4c81-821e-0cdb30c41189 / ext4 defaults 1 1在defaults加,acl 成为
UUID=c366cfac-a7b2-4c81-821e-0cdb30c41189 / ext4 defaults,acl 1 1
然后输入:mount -o remount / 重新挂载文件系统或重启系统,使修改生效。.Linux现在一般所有分区全部默认开启ACL,不用修改配置
[root@192 ~]# vim /etc/fstab UUID=c366cfac-a7b2-4c81-821e-0cdb30c41189 / ext4 defaults 1 1 UUID=3e401044-f7fb-4d49-82db-407777070199 /boot ext4 defaults 1 2 UUID=dc8ad216-0bf7-43ee-8ec4-b72f355b8b3b /home ext4 defaults 1 2 UUID=89afb8d7-db25-4bd2-9ffe-8df3df50bf21 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
ACL权限查看与设定 查看ACL权限
语法
说明
选项
说明
getfacl 文件名
查看ACL权限
设定ACL权限
语法
说明
选项
说明
setfacl [选项] 文件名
设定ACL权限
-m
设定ACL权限
-x
删除指定的ACL权限
-b
删除所有的ACL权限
-d
设定默认的ACL权限
-k
删除默认ACL权限
-R
递归设定ACL权限
给用户设置acl权限
[root@192 ~]# mkdir /project # 创建目录/project [root@192 ~]# useradd bimm # 添加用户bimm [root@192 ~]# useradd cangls # 添加用户cangls [root@192 ~]# groupadd tgroup # 创建组tgroup [root@192 ~]# gpasswd -a bimm tgroup # 把用户bimm添加进组tgroup Adding user bimm to group tgroup [root@192 ~]# gpasswd -a cangls tgroup # 把用户cangls添加进组tgroup Adding user cangls to group tgroup [root@192 ~]# cat /etc/group # 查看组中用户是否添加成功 tgroup:x:667:bimm,cangls [root@192 ~]# chown root:tgroup /project # 改变目录/project所有者为root用户,所属组为tgroup [root@192 ~]# chmod 770 /project/ # 改变文件权限为770 rwxrwx--- [root@192 ~]# ll -d /project/ drwxrwx---. 2 root tgroup 4096 12月 25 04:27 /project/ [root@192 ~]# useradd st # 创建用户st,用户st是一个临时用户,在所有者,所属组,其他人之外的临时用户 [root@192 ~]# passwd st # 设置用户st 密码 [root@192 ~]# setfacl -m u:st:rx /project/ # 设置用户st的acl权限为rx [root@192 ~]# ll -d /project/ # 这里可以看到权限后面多了一个+号 rwxrwx---+ drwxrwx---+ 2 root tgroup 4096 12月 25 04:27 /project/ [root@192 ~]# getfacl /project/ # 查看目录的acl权限 getfacl: Removing leading '/' from absolute path names # file: project/ # owner: root # group: tgroup user::rwx # 文件所有者权限 rwx user:st:r-x # 用户st的acl权限 r-x group::rwx # 文件所属组权限 rwx mask::rwx other::--- # 其他人权限 rwx
给用户组设定ACL权限
[root@192 ~]# groupadd tgroup2 # 创建用户组tgroup2 [root@192 ~]# setfacl -m g:tgroup2:rwx /project # 给用户组设置rwx权限 [root@192 ~]# getfacl /project/ # 查看目录的acl权限 getfacl: Removing leading '/' from absolute path names # file: project/ # owner: root # group: tgroup user::rwx user:st:r-x group::rwx group:tgroup2:rwx # 用户组 tgroup2 的 acl 权限 mask::rwx other::---
最大有效权限 mask是用来指定最大有效权限的。如果给用户赋予了ACL权限,是需要和mask 的权限“相与”才能得到用户的真正权限
A
B
and
r
r
r
r
-
-
-
r
-
-
-
-
以下例子设定mask最大有效权限为rx,加注释的effective表示现在拥有的权限
[root@192 ~]# setfacl -m m:rx /project [root@192 ~]# getfacl /project/ getfacl: Removing leading '/' from absolute path names # file: project/ # owner: root # group: tgroup user::rwx user:st:r-x group::rwx #effective:r-x group:tgroup2:rwx #effective:r-x mask::r-x other::---
删除ACL权限 [root@192 ~]# setfacl -x g:tgroup2 /project/ # 删除tgroup2的acl权限,setfacl -x u:用户名 文件名 删除指定用户的ACL权限 [root@192 ~]# getfacl /project/ getfacl: Removing leading '/' from absolute path names # file: project/ # owner: root # group: tgroup user::rwx user:st:r-x group::rwx mask::rwx other::--- [root@192 ~]# setfacl -b /project/ # 删除目录下所有acL权限 [root@192 ~]# getfacl /project/ getfacl: Removing leading '/' from absolute path names # file: project/ # owner: root # group: tgroup user::rwx group::rwx other::--- [root@192 ~]# ll -d /project/ drwxrwx---. 2 root tgroup 4096 12月 25 04:27 /project/
递归ACL权限 递归ACL权限,递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限。 命令:setfacl -m u:用户名:权限 -R 目录名
[root@192 ~]# setfacl -m u:st:rx /project [root@192 ~]# cd /project/ [root@192 project]# touch abc [root@192 project]# touch bcd [root@192 project]# setfacl -m u:st:rx /project/ [root@192 project]# ll -d /project/ drwxrwx---+ 2 root tgroup 4096 12月 27 04:38 /project/ [root@192 project]# setfacl -m u:st:rx -R /project/ #给project目录下的所有文件都设置acl权限 [root@192 project]# ll 总用量 8 -rw-r-xr--+ 1 root root 0 12月 27 04:38 abc -rw-r-xr--+ 1 root root 0 12月 27 04:38 bcd
默认ACL权限 默认ACL权限的作用是如果给父目录设定默认ACL权限,那么父目录中所有新建的子文件和子目录都会继承父目录的ACL权限 命令:setfacl -m d:u:用户名:权限 目录名 可以在权限后面加-R来进行递归
[root@192 project]# setfacl -m d:u:st:rx -R /project/ # 设置默认acl权限 [root@192 project]# touch cde # 新创建的文件也具备了acl权限 [root@192 project]# ll 总用量 12 -rw-r-xr--+ 1 root root 0 12月 27 04:38 abc -rw-r-xr--+ 1 root root 0 12月 27 04:38 bcd -rw-rw----+ 1 root root 0 12月 27 04:45 cde
文件特殊权限 SetUID
只有可以执行的二进制程序才能设定SUID权限,普通文件或者目录没有意义
命令执行者要对该程序拥有x(执行)权限
命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码
[root@192 ~]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd
cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容
[root@192 ~]# ll /bin/cat -rwxr-xr-x. 1 root root 47976 6月 22 2012 /bin/cat
设定SetUID的方法 4代表SUID权限
chmod 4755 文件名 7代表所有者权限,5代表所属组权限,5代表其他人
[root@192 tmp]# touch test # 创建空文件test [root@192 tmp]# ll test # test文件默认权限 rw-r--r-- -rw-r--r--. 1 root root 0 12月 29 05:35 test [root@192 tmp]# chmod 4755 test # 设定SUID权限 [root@192 tmp]# ll test # 文件权限变为rwsr-xr-x,其中s代表SUID权限 -rwsr-xr-x. 1 root root 0 12月 29 05:35 test
chmod u+s 文件名 如果用户对文件没有执行权限,就会报错,此时给他加特殊权限,就会显示大S
[root@192 tmp]# chmod u+s test [root@192 tmp]# ll test -rwSr--r--. 1 root root 0 12月 29 05:35 test
取消SetUID的方法 chmod 755 文件名chmod u-s 文件名
[root@192 tmp]# chmod 644 test #取消SetUID权限,把权限指回去就行 [root@192 tmp]# ll test -rw-r--r--. 1 root root 0 12月 29 05:35 test
危险的SetUID
关键目录应当严格控制写权限。比如:“/”,“/usr”等
用户的密码设置要严格遵守密码三原则
对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限
SetGID
SetGID针对文件的作用
只有可以执行的二进制程序才能设定SGID权限
命令执行者要对该程序拥有x(执行)权限
命令执行在执行程序的时候,组身份升级为该程序文件的所属组
SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效
locate 命令拥有SetGID权限,所以普通用户可以使用locate来查询。
/usr/bin/locate是可执行二进制程序,可以赋予SGID
执行用户lamp对/usr/bin/locate命令拥有执行权限
执行/usr/bin/locate命令时,组身份会升级为 slocate组,而 slocate对/var/lib/mlocate/mlocate.db数据库拥有r权限,所以普通用户可以使用 locate命令查询 locate.db数据库
命令结束,lamp用户的组身份返回为lamp组
[root@192 tmp]# whereis locate # 查找locate命令所在位置 locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz [root@192 tmp]# ll /usr/bin/locate # 组中s代表SetGID权限 -rwx--s--x. 1 root slocate 35612 8月 24 2010 /usr/bin/locate [root@192 tmp]# ll /var/lib/mlocate/mlocate.db -rw-r-----. 1 root slocate 2435463 12月 27 05:24 /var/lib/mlocate/mlocate.db
SetGID针对目录的作用
普通用户必须对此目录拥有r和x权限,才能进入此目录
普通用户在此目录中的有效组会变成此目录的所属组
若普通用户对此目录拥有w权限时,新建的文件的默认所属组是这个目录的所属组
设定SetGID的方法 2代表SGID权限
chmod 2755 文件名 chmod g+s 文件名
[root@192 tmp]# mkdir test # 在/tmp目录下创建目录test [root@192 tmp]# chmod 2777 test # 设定SGID权限 [root@192 tmp]# ll -d test # s代表SGID权限 drwxrwsrwx. 2 root root 4096 12月 29 06:08 test [root@192 tmp]# su - sc # 切换为普通用户sc [sc@192 tmp]$ touch bv # 普通用户创建文件bv,文件的所属组是sc [sc@192 tmp]$ ll 总用量 68 -rw-rw-r--. 1 sc sc 0 12月 29 06:14 bv [sc@192 ~]$ cd /tmp/test/ [sc@192 test]$ touch abc # 使用普通用户创建的文件在/tmp/test目录下所属组是root [sc@192 test]$ ll 总用量 0 -rw-rw-r--. 1 sc root 0 12月 29 06:10 abc
取消SetUID的方法 chmod 755 文件名chmod g-s 文件名
Sticky BIT SBIT粘着位作用
设定粘着位的方法 1代表粘着位
chmod 1755 目录名chmod o+t 目录名
[root@192 ~]# mkdir /test [root@192 ~]# ll -d /test/ drwxr-xr-x. 2 root root 4096 12月 29 06:41 /test/ [root@192 ~]# chmod 1755 /test/ [root@192 ~]# ll -d /test/ # t代表SBIT drwxr-xr-t. 2 root root 4096 12月 29 06:41 /test/
取消粘着位的方法 chmod 755 目录名chmod o-t 目录名
文件系统属性chattr权限
命令:chattr [+ - =] [选项] 文件名或者目录名
+增加权限 -删除权限 =等于某权限
i: 如果对文件设置i属性,那么不允许对文件进行删除,改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但是不允许建立和删除文件
a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除或者修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除文件
查看文件系统属性
lsattr [选项] 文件名
-a:显示所有文件和目录
-d:若目标是目录,仅列出目录本身的属性,而不是子文件的
[root@192 tmp]# touch test.txt # 创建test.txt空文件 [root@192 tmp]# chattr +i test.txt # 给test.txt文件增加i权限 [root@192 tmp]# lsattr -a test.txt # 查看test.txt文件权限 ----i--------e- test.txt [root@192 tmp]# echo 111 >> test.txt # root超级管理员也不能写入内容 -bash: test.txt: 权限不够 [root@192 tmp]# rm -rf test.txt # root超级管理员也不能删除文件 rm: 无法删除"test.txt": 不允许的操作 [root@192 tmp]# mkdir test # 创建test目录 [root@192 tmp]# touch /test/test.text # 在test目录目录下创建test.text文件 [root@192 tmp]# chattr +i /test/ # 给test目录增加i权限 [root@192 tmp]# lsattr -a /test/ # 查看test目前权限 -------------e- /test/test.text --------------- /test/.. ----i--------e- /test/. [root@192 tmp]# echo 222 >> /test/test.text # 可以在test.text文件中写入内容 [root@192 tmp]# rm -rf /test/test.text # 不能删除test目录下的内容 rm: 无法删除"/test/test.text": 权限不够 [root@192 tmp]# touch /test/test.yml # 不能在test目录下新增文件 touch: 无法创建"/test/test.yml": 权限不够 [root@192 tmp]# chattr -i /test/ # 删除test目录i权限 [root@192 tmp]# rm -rf test # test目录此时可以删除
系统命令sudo权限
sudo权限
root把本来只能超级用户执行的命令赋予普通用户执行
sudo的操作对象是系统命令
sudo使用
visudo 实际修改的是/etc/sudoers文件
root ALL=(ALL) ALL 用户名 被管理主机的地址=(可使用身份) 授权命令(绝对路径)
%wheel ALL=(ALL) ALL %组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
被管理主机的地址:本机IP或者ALL,限制的不是来源IP,而是访问IP
[root@192 tmp]# visudo # 授权用户sc可以可以重启服务器 sc ALL=/sbin/shutdown -r now [root@192 ~]# su - sc # 切换为sc用户 [sc@192 ~]$ sudo -l # 查看可用的sudo命令 [sudo] password for sc: Matching Defaults entries for sc on this host: requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User sc may run the following commands on this host: (root) /sbin/shutdown -r now [sc@192 ~]$ sudo /sbin/shutdown -r now # 普通用户sc执行sudo赋予的重启命令