Linux的文件命令和文件权限
文件常用命令
- 创建文件
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 //强制删除文件
文件查看命令
- 查看文件信息
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 命令
软连接、硬链接
硬链接:
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位库文件 |
- 路径切换
- 创建目录
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 查询详细信息,每一处代表什么意思呢
- 权限
- 文件权限
- 目录的权限:
修改权限
- chmod 修改 拥有者 和 所属组 的权限
- 数字法:r=4,w=2, x=1
chomd 777 123
// 123的拥有者、所属组、其他人的权限为 rwx-rw-rw-
- 加减法
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:查看当前用户的创建文件和目录的默认权限
创建文件和目录时,会默认拿走文件的 x 权限
- 临时修改默认权限
umask 000
//创建文件和目录时,文件rw-rw-rw-,目录rwxrwxrwx
- 永久改默认权限(不推荐)
特殊权限
drwxrwxrwt. 14 root root 4096 10月23 19:32 / tmp/
rwsr- xr-x .1 root root 27832 6月10 2014 /usr/bin/ passwd
- SUID
执行的时候,暂时的拥有SUID权限
- SGID
1、针对文件
2、针对目录
- SBIT
- 修改特殊权限
数字法: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文件权限
- 设置文件的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
文件系统隐藏属性
一把锁 防止root用户在内的用户,对文件误操作
- 设置文件隐藏属性chattr
chattr +i 文件名/目录名
chattr -i 文件名/目录名
chattr =i 文件名/目录名
- 查看文件隐藏属性lsattr
lsattr
参数
-a:显示所有文件和目录
-d:若目标是目录,只显示目录本身,不是子文件
sudo权限
关机命令只能root用户使用,但是root用户太忙,可以赋予普通用户使用
- 查看被赋予的权限
sudo -l
- 设置sudo
visudo //实际修改的是/etc/sudoers文件
- 例子
visudo
SC ALL= /sbin/shutdown -r now //给sc用户赋予重启权限
sudo /sbin/ shutdown -r now //普通用户执行被赋予的权限