当前位置: 首页 > news >正文

linux-base-end

Linux基础

1. Linux基础命令

命令本质是指定是Linux路径下的一个可执行程序 /usr/bin

commandfunctionadditional
adduser username新建用户
passwd username设置密码
userdel -r username删除用户
clear清空屏幕
alt + Enter全屏/退出全屏
pwd查看当前进程工作目录
cd path更改工作目录
cd ~进入家目录
cd -进入最近一次所处的路径
mkdir director
mkdir -p director
创建目录
递归的创建目录
rmdir director删除空目录
rm -rf file /dir递归强制的删除指定目录或文件
whoami显示当前用户
ls
ls -l
ls -a
ls -l -d
显示当前目录下的文件名
显示当前目录下的文件名+文件属性
显示当前目录下的文件名 + 隐藏文件/目录
查看指定目录本身的属性
空文件也会占据磁盘空间(文件 = 文件属性 + 文件内容
在linux中,以.开头的文件是隐藏文件
任何一个目录,默认系统都会自带.和…目录,代表当前目录和上级目录
touch filename新建一个普通文件touch一个存在的文件是更新该文件的创建时间
stat filename查看文件的详细属性ACM时间(Access、Modify、Change)
Access:没有修改只是查看文件Access时间被修改
Modify:修改文件的内容Modify时间会更改
Change:修改文件的属性Change时间会更改
alias newName=command给命令起别名
man command/systemcall/c用户在线手册选项:1为系统命令,2为系统调用,3为c库
cp -r src-file dest-file拷贝文件或目录拷贝目录需要携带 -r 选项
echo ‘xxx’把后续内容打印到屏幕上
echo’xxx’ > filename输出重定向> 不存在的文件:可以快速创建文件
> 存在的文件:可以快速清空文件
echo ‘xxx’ >> filename追加重定向
cat filename显示指定文件名里面的内容cat默认是从键盘中读取内容反向打印到显示器上
cat < filename输入重定向Linux一切皆文件
终端的本质在linux系统里就是一个文件 /dev/pts/xxx
mv src-file dest-file
mv oldname newname
剪切
重命名
less filename查看文件内容使用less打开文件后 输入/字符串 直接在文件中定位字符串内容
head -n filename查看文件开头前n行内容
tail -n filename查看文件末尾后n行内容
|管道连接命令
date +%Y-%m-%d %H:%M:%S查看当前时间时间戳:date +%s
find path -name filename从指定路径下查找文件名
grep -option string filename在文件中搜索特定的内容option:-i 忽略大小写
-n 输出行号
-v 反向选择
zip -option filename.zip filename压缩option:-r 递归打包
unzip file.zip -option解压缩option:-d path 解压到指定路径下
tar -c(v)zf filename.tgz filename压缩option:-v 可以看到压缩/解压的过程
tar -x(v)zf filename.tgz (-C path)解压缩option:-C path 解压到指定路径下
sz filename/zipLinux文件 -> Windowssudo apt-get install -y lrzsz
rzWindows文件 -> Linux(支持拖拽)若Windows是一个目录可以先压缩再使用rz命令
scp -option local-dir remote-user@remote-host:remote-dir远程传输(W -> L、L -> L)option:-r 递归拷贝
-C 压缩传输
-P port 指定端口
uname -a查看当前系统的体系结构eg:3.10.0-957.21.3
主版本号.次版本号.修订次数-构建版本号.补丁
次版本号:偶数稳定版本,奇数测试版本
Tab/Tab * 2命令补全/命令搜索
ctrl + d退出当前用户
ctrl + c终止当前进程
tree dir查看当前目录结构sudo apt-get install -y tree
su username切换用户su - 切换root用户路径发生变化/root
su 切换root身份,相较于上次的用户路径不会发生变化
  • Linux下区分文件不使用后缀

2. shell外壳程序

shell:命令行解释器

  • 将使用者的命令翻译给核心(kernel)处理

  • 同时,将核心的处理结果翻译给使用者

为什么要存在shell(外壳)程序?

  1. 方便用户操作:因为用户对操作系统内核并不是很了解,所以需要外壳程序快速帮助用户操作

  2. 保护内核:可能用户会有一些非法的指令或命令,外壳程序会直接拦截保护操作系统

  3. 外壳程序本质上是一个进程,命令会交给外壳程序中创建的子进程处理,这样即使命令出错或者崩溃也不会影响外壳程序

3. Linux权限

3.1 权限的理解

Linux存在2种用户:1.root用户(超级管理员);2.普通用户。

root用户为普通用户添加sudo(sudo用来进行短暂提权)指令权限 vim /ect/sudoers

# User privilege specification 
username ALL=(ALL:ALL) ALL # ubantu系统

权限的本质是:能或不能做什么事情。

权限 = 角色 + 目标权限属性。

Linux角色:1.拥有者 2.所属组 3.other

Linux文件权限:1.读 2.写 3.可执行

3.2 识别文件权限

-rw-rw-r-- 1 root root
  1. 第1列:文件类型(Linux下不使用后缀区别文件类型)

    • -普通文件(文本、可执行程序、库、图片、视频、压缩包)

    • d目录文件

    • c字符文件(键盘、显示器、终端,输入的数据具有顺序性)

    • b块设备文件(磁盘)

    • l链接文件

    • p管道文件

    • ssocket文件

  2. 第2列-第10列:三三为一组

    • 前三个:拥有者权限位

    • 中间三个:所属组权限位

    • 后三个:other权限位

  3. 数字代表硬链接计数

  4. 第一个root 代表具体的拥有者

  5. 第二个root 代表具体的所属组(所属组可以自成一组)

3.3 操作权限

  1. 拥有者只能修改自己的文件权限。

  2. 确定权限信息时,系统会先确定用户是谁?拥有者,所属组,还是other?用户角色确定,只确定一次。假设一个文件的拥有者,所属组都是 ccc,拥有者没有r权限,所属组拥有r权限,在读取该文件时,会读取失败权限被拒绝。

3.3.1 操作角色权限

系统默认不允许我们把文件给别人,必须提高权限

sudo chown username filename    # 修改filename的拥有者为username
sudo chgrp username filename    # 修改filename的所属组为username
sudo chown username1:username2 filename    # 修改filename的拥有者为username1所属组为username2
3.3.2 操作文件权限1
chmod u+rwx filename    # 为filename的拥有者添加读写可执行权限
chmod u-rwx filename    # 为filename的拥有者删除读写可执行权限
chmod g+rwx filename    # 为filename的所属组添加读写可执行权限
chmod g-rwx filename    # 为filename的所属组删除读写可执行权限
chmod o+rwx filename    # 为filename的other添加读写可执行权限
chmod o-rwx filename    # 为filename的other删除读写可执行权限
chmod a+r filename      # 为filename的拥有者、所属组、other都添加读权限
chmod u+rw,g+rw,o+r filename     # 为filename的拥有者添加读写权限,所属组添加读写权限,other添加读全权限
chmod u=rw,g=rw,o=rw filename    # 赋予对应的权限
3.3.3 操作文件权限2

rwx或—,rwx代表存在对应权限,—代表没有对应权限,是两态的;使用1代表存在权限,0代表没有权限。

rw- rw- r--  # 普通显示方式
110 110 100  # 转换为数字01
6   6   4    # 把二进制转换为八进制
chmod 664 filename = chmod 110 110 100 filename = chmod u+rw,g+rw,o+r filename

八进制表示表:

权限符号(读写执行)八进制二进制
r4100
w2010
x1001
rw6110
rx5101
wx3011
rwx7111
0000

3.4 目录权限

  1. x权限:能否进入到目录。

  2. r权限:能否查看目录里内容。

  3. w权限:能否在目录中创建文件/删除文件。

3.5 umask权限掩码

修改umask:umask 0xxx

umask   # 命令行输入umask查看权限掩码
0002    # 第一位数字忽略 ubuntu系统下的umask

普通文件的起始权限666,目录文件的起始权限777

最终权限 = 起始权限 & (~umask)

凡是在umask中出现的权限,都不会在最终权限中出现。

3.6 粘滞位

场景:用户a和用户b需要在一个目录下共同读写一个文件,假设这个文件是用户a的,文件的权限为rw-rw-rw-,只要进入该目录的用户都对该文件拥有读写权限。但是用户b可以删掉用户a的文件

这种问题的原因是,在一个目录中删除文件与文件本身无关,而是与文件所处目录是否拥有w权限有关!如果关闭对应目录的w权限,这种做法会导致在该目录下不能创建/删除文件,本质上也还是没有解决问题。所以问题转变为:任意一个人都能在共享目录下新建,但是不能让非拥有者删除。

添加粘滞位:

chmod +t filename    # 通常为给other添加 t是一种新的权限位,称为粘滞位
http://www.dtcms.com/a/274702.html

相关文章:

  • 从《哪吒 2》看个人IP的破局之道|创客匠人
  • NodeJs后端常用三方库汇总
  • css——width: fit-content 宽度、自适应
  • lesson10:Python的元组
  • UI前端与数字孪生结合实践探索:智慧农业的精准灌溉系统
  • FastAPI + SQLAlchemy (异步版)连接数据库时,对数据进行加密
  • C++(STL源码刨析/List)
  • [Meetily后端框架] Whisper转录服务器 | 后端服务管理脚本
  • 如何从0开始构建自己的第一个AI应用?(Prompt工程、Agent自定义、Tuning)
  • MyBatis:SQL与Java的智能桥梁
  • Ant Design ProTable组件深度解析
  • CUDA —— 2.3、cuda静态全局变量__device__使用介绍(附:完整代码)
  • 系统思考:多元胜过能力
  • 计算机网络第三章(5)——数据链路层《广域网》
  • 解锁形状与空间的奥秘:微分几何与流形一瞥-AI云计算拓展核心内容
  • 【C++篇】二叉树进阶(上篇):二叉搜索树
  • 云蝠智能 VoiceAgent重构企业呼入场景服务范式
  • Ubuntu20.04运行openmvg和openmvs实现三维重建(未成功,仅供参考)
  • PyTorch笔记5----------Autograd、nn库
  • 《棒球规则介绍》领队和主教练谁说了算·棒球1号位
  • sqli-labs靶场通关笔记:第1-4关 联合注入
  • ros topic和service的使用
  • 深入浅出Redis:一文掌握Redis底层数据结构与实现原理
  • Java Stream流介绍及使用指南
  • GIC控制器 (三)
  • 猿人学js逆向比赛第一届第十八题
  • 【一起来学AI大模型】微调技术:LoRA(Low-Rank Adaptation) 的实战应用
  • Linux kernel regcache_cache_only()函数详解
  • pytest中mark的使用
  • SpringCloud之Feign