这些命令都是笔者学习Linux的学习笔记.
一.文件处理命令
1.命令格式与目录处理命令
ls –a【查看隐藏文件】ls –l【查看文件信息长格式显示】ls –d【查看指定目录的详细信息】ls –h【显示容量大小】ls –i【查看任何文件的I 节点】ll 文件名【查看一个文件的详细信息】
2.目录处理命令
mkdir –p【递归创建目录】
cd【切换指定目录】
pwd【显示当前目录】
rmdir【删除空目录】
cp【复制文件到某个目录下】
cp –r【复制目录】
cp –p【保留文件属性】
mv【剪切文件、改名】
rm【删除文件】
rm –r【删除目录】
rm –f【强制执行】
3.文件处理命令
touch【创建空文件】
cat【查看文件内容】
cat –n【显示行号】
tac【显示文件内容(反向列示)】
more【分页显示文件内容(空格或f[翻页], Enter[换行], q或Q[退出])】
less【分页显示文件内容(可向上翻页),填写/可搜索关键词,n等于next,PageUp和PageDown】
head【显示文件前面几行】
head -n【指定行数,head –n 20 /etc/services】
tail【显示文件后面几行】
tail –n【指定行数】
tail –f【动态显示文件末尾内容】
4.链接命令
ln【生成链接文件,类似拷贝,可以同步更新】
ln –s【创建软链接,相当于快捷方式】
二. 权限管理命令
1.权限管理命令
chmod【改变文件或目录权限,u=所有者;g=所有组;o=其他人;a=全部,[{ugoa}{+-=}{rwx}],chmod u+x,o-r或640 文件名,r—4;w—2;x—1,rwx—7(4+2+1)】
chmod –R【递归修改,子目录的权限也修改】
2.其他权限管理命令
chown【改变文件或目录的所有者,chown 用户 文件或目录】
chgrp【改变文件或目录的所属组】
umask【显示,设置文件的缺省权限】
三. 文件搜索命令
1.文件搜索命令
find【文件搜索,find 搜索范围 匹配条件】
find 搜索范围 -name或-iname(不区分大小写) 匹配条件【根据文件名称搜索,匹配条件(abcd)=*bc*=ab??,*=匹配任意字符,?=匹配单个字符】
find 搜索范围 -size +n/-n/n(n代表文件的大小)【根据文件的大小搜索】
find 搜索范围 -size +163840 -a/-o -size -204800【查找(-a=大于80M小于100M的文件,-o=两个条件满足一个即可)】
find 搜索范围 -user 用户名【根据用户名搜索文件,搜索范围=/home】
find 搜索范围 -group 所属组名【根据所属组名搜索文件】
find 搜索范围 -cmin/-amin/-mmin -5【查找5分钟内被修改过(-cmin=文件属性,-amin=访问时间,-mmin=文件内容)的文件】
find 搜索范围 -type f/d/l【根据文件类型查找,f=文件,d=目录,l=软链接文件】
find 搜索范围 -inum n【根据i节点查找,n=i节点数】
以上搜索结果命令加(find /tmp -name *aaaa*) -exec/-ok 命令(ls -l[显示详细信息]) {} \;【对搜索结果执行命令操作】
2.其他搜索命令
locate -i 文件名【在文件资料库中查找文件,-i=不区分大小写】updatedb【更新文件资料库,tmp目录不在更新范围内】
which 命令(ls)【搜索命令所在目录及别名信息】
whereis 命令(ls)【搜索命令所在目录及帮助文档路径】
grep -i/-v mysql /root/install.log【在文件中搜索字符匹配的行并输出,-i=不区分大小写,-v=排除指定字串(^#=排除#带头的行)】
四. 帮助命令
man 命令或配置文件【获取帮助信息】
info 命令【获取帮助信息,显示和man不同】
whatis 命令【获取该命令的简介信息】
apropos 配置文件名称【只查看配置文件的信息】
命令 --help【获取该命令的选项信息】
help 内置命令【查看Shell内置命令的帮助信息】
五. 用户管理命令
useradd 用户名【添加新用户】
passwd 用户名【设置用户密码】
who【查看登录用户信息,tty本地登录,pts远程终端】
w【查看登录用户的详细信息,全】
六. 压缩解压命令
gzip 文件【压缩文件,压缩后的格式:.gz】
gunzip 文件【解压.gz的压缩文件】
tar -zcf temp.tar.gz temp【打包目录,-c:打包,-v:显示详细信息,-f:指定文件名,-z:打包同时压缩,temp:文件名】
tar -zxf temp.tar.gz【解压目录,-x:解包,-v:显示详细信息,-f:指定文件名,-z:解包同时解压,temp:文件名】
zip -r temp.zip temp【压缩问价或目录,-r:压缩目录,temp:文件名】
unzip temp【解压.zip的压缩文件,temp:文件名或目录】
bzip2 -k temp【压缩文件,-k:产生压缩文件后保留原文件,temp:文件名】
bunzip2 -k temp【解压文件,-k:解压缩后保留原文件,temp:文件名】
tar -cjf temp.tar.bz2 temp【压缩】
tar -xjf temp.tar.bz2【解压】
七. 网络命令
write 用户名【给在线用户发信息,以Ctrl+D保存结束】
wall 信息【发广播信息】
ping -c 4 IP地址【测试网络连通性,-c:指定发送次数为4次】
ifconfig eth0 192.168.0.169【查看和设置网卡信息】
mail 用户名【查看发送电子邮件,以Ctrl+D保存结束,help查看信息】
last【列出目前与过去登入系统的用户信息】
lastlog -u 502【检查某特定用户上次登录的时间】
traceroute 网址【显示数据包到主机间的路径 IP等等】
netstat -t/-u/-l/-r/-n【显示网络相关信息,-t:TCP协议,-u:UDP协议,-l:监听,-r:路由,-n:显示IP地址和端口号】
netstat -tlun【查看本机监听的端口】
netstat -an【查看本机所有的网络】
netstat -rn【查看本机路由表】
mount【挂载命令---详细找百度吧】
mount /dev/sr0 /mnt/cdrom/【挂载光盘】
umount /dev/sr0【卸载挂载点】
八.关机重启命令
shutdown -h now【现在关机,-h:关机,now:现在】
shutdown -h 20:30【定时关机,-h:关机】
shutdown -r now【现在重启,-r:重启,now:现在】
shutdown -r 20:30【定时重启,-r:重启】
shutdown -c【取消前一个定时关机命令】
init 0:关机/1:关机/2:不完全多用户/不含NFS服务/3:完全多用户/4:未分配/5:图形界面/6:重启【系统运行级别】
cat /etc/inittab【修改系统默认运行级别】
runlevel【查询系统运行级别,默认是N 3,N:代表上一次的系统级别】
logout【退出登录命令——注意一定记得退出登录】
九.文本编辑器常用命令
1).vim常用操作
vim 文件名【进入或新建--进入命令模式】
i/a/o【进入插入模式,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【删除光标所在处到行尾内容】
:n,nd【删除指定范围的行】
yy【复制当前行------------推荐】
nyy【复制当前行一下n行】
dd【剪切当前行】
ndd【剪切当前行以下n行】
p/P【粘贴在当前光标所在行下(p)或行上(P)--------推荐】
r【取代光标所在处字符】
R【从光标所在处开始替换字符,按ESC结束】
u【取消上一步操作,撤销----------推荐】
/string【搜索指定字符串,string:字符串,n:搜索指定字符串的下一个出现位置】
:set ic【搜索时忽略大小写】
:set noic【取消搜索时忽略大小写】
:%s/old/new/g【全文替换指定字符串,冒号指全文替换,%s:全文搜索,old:要替换的字符串,new:替换的新的字符串,g:不询问确认】
:n,ns/old/new/c【在一定范围内替换指定字符串,(n,ns:起始行,终止行s),c:询问确认】
:w【保存修改------推荐】
:w /tmp/temp.txt【另存为指定文件】
:wq【保存退出---------推荐】
:q!【不保存退出】
ZZ【快捷键,保存修改并退出】
:wq!【保存修改并退出(文件所有者及root可使用)】
按ESC【退出模式,进入命令模式】
2).vim使用技巧
:r /tmp/temp.txt(被导入的文件)【把temp.txt的内容导入到光标处】
:r !date(命令)【可以在不退出vim的情况下,执行相应的操作命令,date:系统时间命令】
:map ^P I#<ESC>【定义快捷键:map,^P:按ctrl+v+p(快捷键按Ctrl+p),注释该行】
:map ^B 0x【定义快捷键:map,^B:按ctrl+v+b(快捷键按Ctrl+b),取消注释该行】
:1,4s/^/#//g【多行注释,把1到4行的行首添加#】
:1,4s/^#//g【取消多行注释,把1到4行的行首的#去掉】
:1,4s/^/\/\//g【多行注释,把1到4行的行首添加//】
:1,4s/^\/\//g【取消多行注释,把1到4行的行首的//去掉】
:ab mymail [email protected]【替换,在编辑时填写mymail回车时就会被替换成邮箱】
#快捷键或编辑模式命令 在重启后会失效,必须在/root/.vimrc或/home.vimrc目录下才会被永久保存---注意填写时不用填写:了
========================================================================================================
一、软件包管理简介
1.软件包分类
源码包---脚本安装包
二进制包(RPM包、系统默认包)---常见
二、RPM包管理-rpm命令管理
01.RPM包命令原则
http-2.2.15-15.e16.centos.1.i686.rpm
httpd------------软件包名
2.2.15-----------软件版本
15---------------软件发布的次数
e16.centos-------适合的Linux平台
i686-------------适合的硬件平台
rpm--------------rpm包扩展名
02.RPM包依赖性
树形依赖:a->b->c
环形依赖:a->b->c->a
模块依赖:模块依赖查询网站www.rpmfind.net
03.包全名与包名
包全名:操作的包是没有安装的软件包时,使用包全名,而且要注意路径
包名:操作已经安装的软件包时,使用包名,是搜索/var/lib/rpm/中的数据库
04.RPM安装
rpm -ivh 包全名【-i:安装,-v:显示详细信息,-h:显示进度,--nodeps:不检测依赖性】05.RPM包升级
rpm -Uvh 包全名【-U:升级】06.卸载
rpm -e 包名【-e:卸载,--nodeps:不检测依赖性】07.查询是否安装
rpm -q 包名【查询包是否安装,-q:查询】rpm -q | grep 包名【查询包是否安装,-q:查询,grep:管道符--查询与包名相关的包】
rpm -qa【查询所有已经安装的RPM包,-a:所有】
08.查询软件包详细信息
rpm -qi 包名【-i:查询软件信息,-p:查询未安装包信息(包全名)】09.查询包中文件安装位置
rpm -ql 包名【-l:列表,-p:查询未安装包信息(包全名)】10.查询系统文件属于哪个RPM包
rpm -qf 系统文件名【-f:查询系统文件属于哪个软件包】11.查询软件包的依赖性
rpm -qR 包名【-R:查询软件包的依赖性,-p:查询未安装包信息】12.RPM包校验
rpm -V 已安装的包名【-V:校验指定RPM包中的文件】1).验证内容中的8个信息的具体内容如下
S:文件大小是否改变M:文件类型或文件的权限(rwx)是否被改变
5:文件MD5校验和是否改变(可以看成文件内容是否改变)
D:设备的中,从代码是否改变
L:文件路径是否改变
U:文件属主(所有者)是否改变
G:文件的数组是否改变
T:文件的修改时间是否改变
2).文件类型
c:配置文件d:普通文件
g:"鬼"文件,很少见,就是该文件不应该被这个RPM包包含
l:授权文件
r:描述文件
13.RPM包中文件提取
rpm2cpio 包全名 | \ cpio -idv .文件绝对路径【rpm2cpio:将rpm包转换为cpio格式的命令,cpio:是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件】cpio 选项 <[文件设备]【-i:copy-in模式,还原,-d:还原时自动新建目录,-v:显示还原过程】
三、RPM包管理-yum在线管理
01.IP地址配置和网络yum源
1).IP地址配置
setup【配置网络】vim /etc/sysconfig/network-script/ifcfg-eth0【进去vim编辑器模式,把ONBOOT="no"改成ONBOOT="yes"】
service network restart【重启网络服务】
2).网络yum源
vim /etc/yum.repos.d/CentOS-Base.repo【进入vim编辑器模式】[base]---------容器名称,一定要放在[]中
name-----------容器说明,可以自己随便写
mirrorlist-----镜像站点,这个可以注释掉
baseurl--------我们的yum源服务器的地址.默认是CentOS官方的yum源服务器,是可以使用的,如果你觉得慢可以改成你喜欢的yum源地址
enabled--------此容器是否生效,如果不写或写出enable=1都是生效,写成enable=0就是不生效
gpgcheck-------如果是1是指RPM的数字证书生效,如果是0则不生效
gpgkey---------数字证书的公钥文件保存位置.不用修改
02.yum命令
1.常用yum命令
1).查询软件包
yum list【查询所有可用软件包列表】yum search 关键字【搜索服务器上所有和关键字相关的包】
2).安装
yum -y install 包名【install:安装,-y:自动回答yes】3).升级
yum -y update 包名【update:升级,-y:自动回答yes==[建议别用,注意:yum -y update(升级全部,包括liunx内核也会被升级,用当机的可能,慎用!)]】4).卸载
yum -y remove 包名【remove:卸载,-y:自动回答yes===[建议别用]】2.YUM软件组管理命令
yum grouplist【列出所有可用的软件组列表】yum groupinstall 软件组名【安装指定软件组,组名可以由grouplist查询出来,如果软件包名有空格用""括起来】
yum groupremove 软件组名【卸载指定软件组】
03.光盘yum源搭建
1.光盘yum源搭建步骤
1).挂载光盘
mount /dev/cdrom /mnt/cdrom/2).让网络yum源文件失效
cd /etc/yum.repos.d【进入yum源目录】mv CentOS-Base.repo CentOS-Base.repo.bak【网络yum源默认读取.repo结尾的,现在把网络yum源名字加上.bak,这样网络yum源失效,就会让光盘yum源生效】
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak
cp CentOS-Media.repo CentOS-Media.repo.bak【这个是光盘yum源,这里备份一个】
3).修改光盘yum源文件
vim /etc/yum.repos.d/CentOS-Media.repo【进入vim编辑器模式,把内容更改成如下,在操作(yum list)命令查询是否成功,注意注释#不要乱写】[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom/
#地址为你自己的光盘挂载地址--file:///mnt/cdrom/
# file:///media/CentOS/
# file:///media/cdrom/
# file:///media/cdrecorder/
#注释这三个不存在的地址
gpgcheck=1
enabled=1
#把enable=0改成enable=1,让这个yum源配置文件生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
四、源码包管理
1.源码包和RPM包的区别
1).区别
安装之前的区别:概念上的区别安装之后的区别:安装位置不同
2).RPM包安装位置
是安装在默认位置中RPM包默认安装路径
/etc/-------------配置文件安装目录
/usr/bin/---------可执行的命令安装目录
/usr/lib/---------程序所使用的函数库保存位置
/usr/share/doc/---基本的软件使用手册保存位置
/usr/share/man/---帮助文件保存位置
3).安装在指定位置当中,一般是/usr/local/软件吗/
4).安装位置不同带来的影响
>RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法是:/etc/rc.d/init.d/httpd start或service httpd start【开启服务】
service httpd stop【停止服务】
>而源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中,所以只能用绝对路径进行服务的管理,如:
/usr/local/apache2/bin/apachectl start
2.源码包安装过程
1).安装准备
安装C语言编译器下载源码包http://mirror.bit.edu.cn/apache/httpd/
2).安装注意事项
源代码保存位置:/usr/local/src/软件安装位置:/usr/local/
如何确定安装过程报错:
安装过程停止
并出现error、warning或no的提示
3).源码包安装过程
下载源码包解压缩下载的源码包
进入解压缩目录
(./configure)软件配置与检测
定义需要的功能选项
检测系统环境是否符合安装要求(检测系统是否安装gcc[c语言编译器]等等)
把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑
./configure --prefix=/usr/local/apache2
make【编译】
make clean【如果以上两个步骤有错误,就执行清空临时文件命令,没有错误就不用执行】
make install【编译安装】
4).源码包的卸载
不需要卸载命令,直接删除安装目录即可.不会遗留任何垃圾文件五、脚本安装包与软件包选择
1.脚本安装包
#脚本安装包并不是独立的软件包类型,常见安装的是源码包#是认为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装
#非常类似于Windows下软件的安装方式
2.Webmin的作用
#Webmin是一个基于Web的Linux系统管理界面.您就可以通过图形化的方式设置用户帐号、apache、DNS、文件共享等服务.3.Webmin安装过程
#下载软件http://sourceforge.net/projects/webadmin/files/webmin/#解压缩,并进入加压缩目录
#执行安装脚本(./setup.sh)
#卸载(/etc/webmin/uninstall.sh)
#安装完了注意先把防火墙关了(service iptables stop),不然外界不能访问
六、用户和用户组管理
1.用户配置文件
1).用户信息文件/etc/passwd
①.用户管理简介
◆所以越是对服务器安全性要求高的服务器,越是要建立合理的用户权限等级制度和服务器操作规范◆在Linux中主要是通过用户配置文件来查看和修改用户信息
②./etc/passwd
第一字段:用户名称第二字段:密码标志
第三字段:UID(用户ID)--0:超级用户,1-499:系统用户(伪用户),500-65535:普通用户
第四字段:GID(用户初始组ID)
第五字段:用户说明
第六字段:家目录--普通用户:/home/用户名/,超级用户:/root/
第七字段:登录之后的Shell
③.初始组和附加组
初始组:就是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组.附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个.
④.Shell是什么
Shell就是Linux的命令解释器在/etc/passwd当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin
2).影子文件/etc/shadow
1.字段的解释
第一字段:用户名第二字段:加密密码
加密算法升级为SHA512散列加密算法
如果密码位是"!!"或"*"代表没有密码,不能登录
第三字段:密码最后一次修改日期
使用1970年1月1日作为标准时间,每过一天时间戳加1
第四字段:两次密码的修改间隔时间(和第三字段相比)
第五字段:密码有效期(和第三字段相比)
第六字段:密码修改到期前的警告天数(和第五字段相比)
第七字段:密码过期后的宽限天数(和第五字段相比)
0:代表密码过期后立即生效
-1:则代表密码永久不会生效
第八字段:帐号失效时间
要用时间戳表示
第九字段:保留字段
2.时间戳换算
把时间戳换算为如期date -d "1970-01-01 16066 days"
把日期换算为时间戳
echo $(($(date --date="2015/8/31" +%s)/86400+1))
3).组信息文件/etc/gtoup和组密码文件/etc/gshadow
1.组信息文件/etc/group
第一字段:组名第二字段:组密码标志
第三字段:GID
第四字段:组中附加用户
2.组密码文件/etc/gshadow
第一字段:组名第二字段:组密码
第三字段:组管理员用户名
第四字段:组中附加用户
2.用户管理相关文件
1).用户的家目录
普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700超级用户:/root/,所有者和所属组都是root用户,权限是500
2).用户的邮箱
/var/spool/mail/用户名/3).用户模板目录
/etc/skel/3.用户管理命令
1).用户添加命令useradd
①.useradd命令格式
-u UID:手工指定用户的UID号-d 家目录:手工指定用户的家目录
-c 用户说明:手工指定用户的说明
-g 组名:手工指定用户的初始组
-G 组名:指定用户的附加组
-s shell:手工指定用户的登录Shell,默认是/bin/bash
2).修改用户密码passwd
①.passwd命令格式
-S:查询用户密码的密码状态.仅root用户可用-l:暂时锁定用户.仅root用户可用
-u:解锁用户.仅用户可用
--stdin:可以通过管道符输出的数据作为用户的密码
3).修改用户信息usermod,修改用户密码状态chage
①.修改用户信息usermod
-u UID:修改用户的UID号-c 用户说明:修改用户的说明信息
-G 组名:修改用户的附加组
-L:临时锁定用户
-U:解锁用户锁定
②.修改用户密码状态chage
-l:列出用户的详细密码状态-d 日期:修改密码最后一次更改日期(shadow3字段)
-m 天数:两次密码修改间隔(4字段)
-M 天数:密码有效期(5字段)
-W 天数:密码过期前警告天数(6字段)
-I 天数:密码过后宽限天数(7字段)
-E 日期:帐号失效时间(8字段)
4).删除用户userdel,用户切换命令su
①.删除用户userdel
-r:删除用户的同时删除用户家目录②.查看用户ID
id 用户名③.切换用户身份su(su - 用户名)
-:选项只使用"-"代表连带用户的环境变量一起切换,["-"必须加上]-c 命令:仅执行一次命令,而不切换用户身份
4.用户组管理命令
1).添加用户组
groupadd 组名【-g GID:指定组ID】2).修改用户组
groupmod 组名【-g GID:修改组ID,-n 新组名:修改组名】3).删除用户组
groupdel 组名4).把用户添加入组或从组中删除
gpasswd 选项 组名【-a 用户名:把用户加入组,-d 用户名:把用户从组中删除】七、权限管理
1.ACL权限
1).ACL权限简介与开启
②.查看分区ACL权限是否开启
dumpe2fs -h /dev/sda3【dumpe2fs命令是查询指定分区详细文件系统信息的命令,-h:仅显示超级块中信息,而不显示磁盘块组的详细信息】③.临时开启分区ACL权限
mount -o remount,acl /【重新挂载根分区,并挂载加入acl权限】④.永久开启分区ACL权限
vim /etc/fstab【进入编辑模式,UUID=asdqq-qweqwe-qweqwe-qweqew-qweqwe2131123 / ext4 defaults,acl 1 1(加入acl)】mount -o remount /【重新挂载文件系统,使修改生效】
2).查看与设定ACL权限
①.查看ACl命令
getfacle 文件名【查看acl权限】②.设定ACL权限的命令(setfacl 选项 文件名)
-m:设定ACl权限(u:用户名:权限)-x:删除指定的ACl权限
-b:删除所有的ACl权限
-d:设定默认ACL权限
-k:删除默认ACL权限
-R:递归设定ACL权限
3).最大有效权限与删除ACL权限
①.最大有效权限mask
mask是用来指定最大有效权限的.如果我给用户赋予了ACL权限,是需要和mask的权限"相与"才能得到用户的真正权限setfacl -m m:rx 文件名【修改最大有效权限,设定mask权限为r-x.使用"m:权限"格式】
②.删除ACL权限
setfacl -x u:用户名 文件名【删除指定用户的ACl权限】setfacl -x g:组名 文件名【删除指定用户组的ACl权限】
setfacl -b 文件名【会删除文件的所有的ACL权限】
4).默认ACL权限和递归ACL权限
①.递归ACL权限
递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACl权限setfacl -m u:用户名:权限 -R 文件名
②.默认ACL权限
默认ACl权限的作用是如果给父目录设定了默认ACl权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限.setfacl -m d:u:用户名:权限 文件名
2.文件特殊权限
1).SetUID
①.SetUID的功能
>只有可以执行的二进制程序才能设定SUID权限>命令执行者要对该程序拥有x(执行)权限
>命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
>SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效.
>passwd命令拥有SetUID权限,所以普通可以修改自己的密码[ll /usr/bin/passwd]
>cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件[ll /bin/cat]
②.设定SetUID的方法
>4代表SUID[chmod 4755 文件名,chmod u+s 文件名]③.取消SetUID的方法
>chmod 755 文件名>chmod u-s 文件名
④.危险的SetUID
>关键目录应严格控制写权限.比如"/"、"/usr"等>用户的密码设置要严格遵守密码的三原则
>对系统中默认应该具有SetUID权限的文件做一列表,定时检查有没有这之外的文件被设置了SetUID权限.
2).SetGID
①.SetGID针对文件的作用
>只有可执行的二进制程序才能设置SGID权限>命令执行者要对该程序拥有x(执行)权限
>命令执行在执行程序的时候,组身份升级为该程序文件的属组.
>SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效.
>/usr/bin/locate是可执行二进制程序,可以赋予SGID.
>执行用户lamp对/usr/bin/locate命令拥有执行权限.
>执行/usr/bin/locate命令时,组身份会升级为slocate组,而slocate组对/var/lib/mlocate/mlocate.db数据库拥有r权限,所以普通用户可以使用locate命令,查询 mlocate.db数据库.
>命令结束,lamp用户的组身份返回为lamp组.
②.SetGID针对目录的作用
>普通用户必须对此目录拥有r和x权限,才能进入此目录.>普通用户在此目录中的有效组会变成此目录的属组.
>若普通用户对此目录拥有w权限时,新建的文件默认属组是这个目录的属组.
③.设定SetGID
>2代表SGID[chmod 2755 文件名,chmod g+s 文件名]④.取消SetGID
>chmod 755 文件名>chmod g-s 文件名
3).Sticky BIT
①.SBIT粘着位作用
>粘着位目录只针对目录有效>普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限.
>如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件.一但赋予了粘着位,除了root可以删除所有文件,普通用户 就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件.
②.设置与取消粘着位
>设置粘着位
chmod 1775 目录名chmod o+t 目录名
>取消粘着位
chmod 777 目录名chmod o-t 目录名
3.文件系统属性chattr权限
1).chattr命令格式
chattr [+-=][选项] 文件或目录名【+:增加权限,-:删除权限,=:等于某权限】选项:>i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和 删除文件.
>a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是 不允许删除.
2).查看文件系统属性
lsattr 选项 文件名【-a:显示所有文件和目录,-d:若目标是目录,仅列出目录本身的属性,而不是子文件的】4.系统命令sudo权限
1).sudo权限
>root把本来只能超级用户执行的命令赋予普通用户执行.>sudo的操作对象是系统命令.
2).sudo使用
>visudo【实际修改的是/etc/sudoers文件】
root ALL=(ALL) ALL#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
%whell ALL=(ALL) ALL