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
zip 选项[-r] [压缩后文件名] [文件或目录]
压缩文件或目录
-r
压缩目录
[root @192 tmp ] adding: cas (deflated 44 %) [root @192 tmp ] adding: abc/ (stored 0 %) adding: abc/yangmi/ (stored 0 %) adding: abc/zhang/ (stored 0 %)
bzip2
指令名称
语法
功能描述
bzip2
bzip2 选项[-k] [文件]
压缩文件。压缩后文件格式 .bz2
-k
产生压缩文件后保留原文件
bunzip2
指令名称
语法
功能描述
bunzip2
bunzip2 选项[-k] [压缩文件]
解压缩
-k
产生压缩文件后保留原文件
网络命令 write
指令名称
语法
功能描述
write
write <用户名>
给用户发信息,以crtl+d保存结束
[root @192 ~] ni hao yang mi aaaaa[yangmi @192 ~]$ Message from root@192.168 .88.128 on pts/0 at 08 :29 ... ni hao yang mi aaaEOF
wall
指令名称
语法
功能描述
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
ping 选项[-c指定发送次数] IP地址
测试网络连通性
ifconfig
指令名称
语法
功能描述
ifconfig
ifconfig 网卡名称 IP地址
查看和设置网卡信息
last
指令名称
语法
功能描述
last
last
列出目前与过去登录系统的用户信息
lastlog
指令名称
语法
功能描述
lastlog
lastlog
检查某特定用户上次登录的时间
traceroute
指令名称
语法
功能描述
traceroute
traceroute
显示数据包到主机间的路径
[yangmi @192 ~]$ traceroute www.baidu.com
netstat
指令名称
语法
功能描述
netstat
netstat[选项]
显示网络相关信息
-t
TCP协议
-u
UDP协议
-l
监听
-r
路由
-n
显示IP地址和端口号
[root @192 ~] [root @192 ~] [root @192 ~]
setup
指令名称
语法
功能描述
setup
setup
配置网络
[root @192 ~] 您更改了主机名。 应该现在为系统设置主机名吗? 这样可能会造成有些 X 应用程序无法正常工作。 您可能必须重新登录。 [root @192 ~] 正在关闭接口 eth0: ....
选择网络配置 选择设备配置 选择第一个网卡 设置网络信息
mount
指令名称
语法
功能描述
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赋予的重启命令