Linux的文件命令和文件权限
- 文件常用命令
- 文件查看命令
- 查找、替换文件内容
- 软连接、硬链接
- 目录常用命令
- 文件和目录的权限
- 查询权限
- 修改权限
- 默认权限
- 特殊权限
- ACL文件权限
- 文件系统隐藏属性
- sudo权限
文件常用命令
- 创建文件
touch
- 复制文件
cp file1 file2 //复制 file1 在同一目录下,命名 file2
cp file1 file2 dir //复制 file1 file2 到 dir 目录下
cp -p //移动文件,并保存原来的所有信息
- 移动(重命名)文件
mv a b //移动到本地,并改名
mv a b dir //把 a,b 移动到 dir 目录
- 删除文件
rm a b c //删除普通文件
rm -f a b c //强制删除文件
普通账户的 rm 删除不会提示,
root 管理员删除有提示,y是n否
除非 -f 强制删除,谨慎使用
文件查看命令
- 查看文件信息
ls //查看当前目录下的文件
ls -l //查看详细文件
ls -i //查看文件编号
ls -lh //查看文件大小
ls -a //显示所有文件
ls -ld //查看目录本身
- 查看文件类型
d //表示目录
- //表示文件
1 //表示连接文件
b //表示设备文件,提供存储的接口设备
c //表示设备文件。提供串行的接口设备--键盘,
- 查看文件内容
- cat
cat file //正序查看文件内容
tac file //倒序查看文件内容
cat -b file //文件内容显示行号
cat -A file
//查看隐藏内容:换行符、空格、特殊符号
- nl
nl -ba //无论是否有空行,都列出行号
nl -bt //如果有空行,则不列出行号
- less
/ 查找字符
:f 显示文件名和行数
b 翻到第一页
空格 向下翻动一页
pagedown 向下翻动一页
pageup 向上翻动一页
q 退出
- head、tail
head file //显示文件前十行
tail file //显示文件末尾几行,一般查看日志(动态)
参数
-n:显示几行(默认十行)
-f:动态显示文件末尾内容
- wc
wc -l 文件名 //显示行数
wc -c 文件名 //显示字节
查找、替换文件内容
grep只能用于查找文件中的内容
grep
参数
-i :不区分大小写
-v :排除指定字符串
sed可以查找,然后替换或者插入想要的内容
字符 | 代表含义 |
a | 新增,a的后面可以接字串,而这些字串会在新的一行出现(目前的下一行) |
d | 删除,因为是删除啊,所以d后面通常不接任何东西的; |
i | 插入,i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); |
p | 列印,亦即将某个选择的资料印出。通常p会与参数sed. |
s | 取代,可以直接进行取代的工作! |
- 查找文件 find
用法:find[路径][命令参数][表达式]
参数:
-name “文件名”:查找指定名称文件;
-user:查找指定用户拥有的文件;
-group:查找指定组拥有的文件;
-mtimen:查找在N天前被修改过的文件;
-atimen:查找在N天前被访问过的文件;
-type d/t/b/1/p:查找指定类型的又件;
-empty:查找为空的文件;
-size:按容量大小查找;
-perm mode:查找指定属性的文件;
-exec command{} \:查找指定的文件并执行指定的命令;
-newer文件名:查找比指定文件新的文件
find * //全部字符
find ? //单个字符
- 查找目录 which
which 命令
软连接、硬链接
硬链接:
- 和cp -p一样的含义,不过 硬链接 可以同步更新
- 不能对目录进行硬链接,
- 不能分区
ln
ln -l
软连接
ln -s:软连接
目录常用命令
- 系统目录
目录名 | 作用 |
/boot | 系统启动目录,Liunx启动时,需要的文件如:内核文件和启动引导程序文件 |
/dev | 设备文件,硬件文件 |
/etc | 配置文件,脚本文件 |
/home | 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示 |
/root | 管理员家目录 |
/proc | 虚拟文件系统保存到内存中。保存系统的内核,进程,外部设备状态和网络状态灯。如/proc/cpuinfo是保存CPU信息的,/proc/devices是 保存设备驱动的列表的,/proc/filesystems是保存文件系统列表的,/proc/net是 保存网络协议信息的 |
/sys | 虚拟文件系统。和/proc 目录相似,都是保存在内存当中的,主要是保存于内核相关信息的 |
/srv | 服务数据目录。- -些系统服务启动之后,可以在这个目录中保存所需要的数据 |
/tmp | 临时目录。系统存放临时文件的目录,该目录下所有用户都可以访问和写入 |
/usr | 系统软件资源目录。是“Unix SoftwreResource”的缩写,是存放系统软件资源的目录。系统中安装的软件大多数保存在这里, |
/var | 动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件 |
/media | 挂载目录。系统建议是用来挂载媒体设备的,例如软盘和光盘 |
/mnt | 挂载目录,早期Linux中只有这一一个挂载目录,并没有细分。现在这个目录系统建议挂载额外设备,如U盘,移动硬盘和其他操作系统的分区 |
/opt | 第三方安装的软件保存位置。这个目录就是放置和安装其他软件的位置,我手工安装的源码包软件都可以安装到这个目录当中。不过我还是更加习惯把软件放置到/usr/loca1/目录当中,也就是说/usr/local/目录也可以用来安装软件 |
/run | 进程文件 |
/bin | 存放系统命令的目录,普通用户和超级用户都可以执行。不过放在/bin’下的命令在单用户模式下也可以执行 |
/ sbin | 保存和系统环境设置相关的命令,只有超级用户可以使用这些命令进行系统环境设置,但是有些命令可以允许普通用户查看 |
/usr/bin | 存放系统命令的目录,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行 |
/usr/sbin | 存放根文件系统不必要的系统管理命令,例如多数服务程序。只有超级用户可以使用。大家其实可以注意到Linux的系统,在所有“sbin"目录中保存的命令只有超级用户可以使用,“bin” 目录中保存的命令所有用户都可以使用 |
/usr/lib | 32位库文件 |
/usr/lib64 | 64位库文件 |
- 路径切换
cd
cd / :切换到根目录
cd …:返回上一层目录
cd ~:返回到所在的家目录
cd -:返回上一级的目录
- 创建目录
mkdir a //创建 a 目录
mkdir -p dir1/dir2/a //若没有 dir 目录,则 -p 自动创建
- 复制目录
cp -r dir1 dir2 //复制 dir1 在同一目录下,命名 dir2
cp -r dir1 dir2 dir3 //复制 dir1 dir2 到 dir3 目录下
- 移动目录
mv dir1 dir2 //如果 dir2 不存在,相当于 dir1 重命名 dir2
mv dir1 dir2 dir3 //如果 dir3 存在,dir1 和 dir2 移动到 dir3
- 删除目录
rm -r a //删除 a 目录
rm -rf a b c //强制删除包含的文件和目录
文件和目录的权限
查询权限
ls -l 查询详细信息,每一处代表什么意思呢
- 权限
rwx,读、写、执行,没有权限就是 -
第一个组 rwx : 文件 所有者 的权限
第二个组 rwx : 文件 所属组 的权限
第三个组 rwx : 文件 其他人 的权限
- 文件权限
文件的拥有者该用户,没有w权限也可以强制写入!。所属组和其他人不行。
r:查看文件内容
w:可写
x:可以 vim 编辑
- 目录的权限:
用户对一个目录没有w的权限,可以编辑该目录中拥有者是自己的文件
r:查看目录下有哪些文件
w:
- 可以在该目录下新建新的文件和目录
- 可以删除已经存在的文件和目录
- 将已经存在的文件和目录重命名
- 移动该目录内的文件和目录的位置
x:是否可以进入该目录
修改权限
- chmod 修改 拥有者 和 所属组 的权限
- 数字法:r=4,w=2, x=1
chomd 777 123
// 123的拥有者、所属组、其他人的权限为 rwx-rw-rw-
- 加减法
拥有者/所属组/其他人 ,u / g / o , + / - / =,r / w / x
chomd u=rx 123// 123的拥有者权限为 rx
chomd u+w 123 // 123的拥有者权限为 rwx
- chown 修改拥有者
chown root abc //修改 abc 的拥有者为 root
chown -R root abc //递归修改 abc 的拥有者为 root
//abc 目录包含的所有拥有者均改为 root
- chgrp 修改所属组
groupadd 组名 //新建组
gpasswd -a 用户 组名 //田间用户进组
chgrp root abc //修改 abc 的所属组为 root
chgrp -R root abc //递归修改 abc 的所属组为 root
//abc 目录包含的所有所属组均改为 root
默认权限
- umask:查看当前用户的创建文件和目录的默认权限
0022:代表的是拿走了的权限
第一个0:代表特殊权限
022:rwxr-xr-x
创建文件和目录时,会默认拿走文件的 x 权限
- 临时修改默认权限
umask 000
//创建文件和目录时,文件rw-rw-rw-,目录rwxrwxrwx
- 永久改默认权限(不推荐)
/etc/bashre //修改里面的值
特殊权限
drwxrwxrwt. 14 root root 4096 10月23 19:32 / tmp/
rwsr- xr-x .1 root root 27832 6月10 2014 /usr/bin/ passwd
当s出现在拥有者的 x 权限位置时候,表示拥有者有SUID的权限(Set UID)
当s出现在所属组的 x 权限位置时候,表示所属组有SGID的权限(Set GID)
当t出现在其他人的 x 权限位置时候,表示其他人有SBIT的权限(Sticky Bit)
- SUID,临时获取文件拥有者的权限一只能针对文件
- SGID,即使可以作用于目录,也可以作用于文件
作用于文件: SUID一样
作用于目录:继承仪集目录一目录会不停的继承- SBIT指的是,只有文件的拥有者才能删除、修改该目录下的文件.
只能针对目录
并且只能在其他人的位置上修改S和T都有大写和小写之分
大写说明:没有x权限
小写说明:有x权限.
- SUID
- 只有可以执行的二进制程序才能设定SUID权限
- 命令执行者要对该程序拥有x (执行)权限命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
- SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
执行的时候,暂时的拥有SUID权限
- SGID
1、针对文件
- 只有可执行的二进制程序才能设置SGID权限
- 命令执行者要对该程序拥有x执行权限
- 命令执行在执行程序的时候,组身份升级为该程序文件的属组
- SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效
2、针对目录
- 普通用户必须对此目录拥有和x权限,才能进入此目录
- 普通用户在此目录中的有效组会变成此目录的属组
- 若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组
- SBIT
- 粘着位目前只对目录有效
- 普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限
- 如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。但赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件
- 修改特殊权限
数字法:SUID=4 SGID=2 SBIT=1
chomd 4777 文件名
chomd 2777 文件名
chomd 1777 目录名
chmod u+s 文件名
chmod g+s 文件名
chmod o+t 目录名
- 删除特殊权限
chmod 777 文件名
chmod u-s 文件名
ACL文件权限
如果系统中某个用户向对某个文件有写入的权限,但是该用户是属于other,就只能够开放 other 的权限。但是一旦开放 other 的权限,每一个 other 都能够访问该文件,
文件ACL权限就很好的解决了这个问题
acl: 针对单一使用者,设置单一文件或目录来进行rwx的权限修改
- 设置文件的acl权限setfacl
setfacl -m u:账户名: rwx 文件名/目录名
//对此文件/目录 加入了acl权限,有了一个特定账户
setfacl -m g: 组名: rwx 文件名/目录名
setfacl -m m: rwx //修改mask值
参数
-m:配置acl参数
-x:删除单个文件的acl
-b:删除acl的配置
-R:递归配置ac参数
- 删除acl
setfacl -x u:账户名 文件名/目录名
setfacl -x g:账户名 文件名/目录名
setfacl -b 文件名/目录名 //删除该文件所有的 acl权限
- 递归ACL权限
setfacl -m u:账户名: rwx -R 目录名
- 默认ACL权限
setfacl -m d:u:账户名: rwx 目录名
- 查看文件的acl权限getfacl
getfacl 文件名/目录名
- 最大有效权限mask
mask的定义,acl权限上限
1、mask为 设置的 acl文件/目录 的最大有效权限
2、需要和设置 acl权限 相与 得到得权限,才是文件/目录真正的 acl权限
文件系统隐藏属性
一把锁 防止root用户在内的用户,对文件误操作
i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。
a:
如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除
- 设置文件隐藏属性chattr
chattr +i 文件名/目录名
chattr -i 文件名/目录名
chattr =i 文件名/目录名
- 查看文件隐藏属性lsattr
lsattr
参数
-a:显示所有文件和目录
-d:若目标是目录,只显示目录本身,不是子文件
sudo权限
关机命令只能root用户使用,但是root用户太忙,可以赋予普通用户使用
- root把本来只能超级用户执行的命令赋予
- 普通用户执行。sudo的操作对象是系统命令,系统命令也是一个文件
- 查看被赋予的权限
sudo -l
- 设置sudo
visudo //实际修改的是/etc/sudoers文件
- 例子
visudo
SC ALL= /sbin/shutdown -r now //给sc用户赋予重启权限
sudo /sbin/ shutdown -r now //普通用户执行被赋予的权限