linux学习lesson9

Python3 ACM模式输入输出全攻略:从牛客网到华为机试的实战技巧 本文详细解析了Python3在ACM模式下的输入输出处理技巧,针对牛客网、华为机试等在线评测系统。文章从input()函数本质出发,总结了六种高频输入模式的处理模板,并提供了链表、二叉树等数据结构的I/O实战方案,最后给出性能优化与常见避坑指南,帮助开发者高效应对算法笔试。 阅读详情

目录

1 特殊权限set_uid

2 特殊权限set_gid

3 特殊权限stick_bit

4 软链接文件

5 硬连接文件


1 特殊权限set_uid

set_uid:针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限

 系统passwd文件,所有者权限位上,第三位是s

#ls -l /usr/bin/passwd

[root@worker1 ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 

切换到普通用户user:

查看root目录,提示权限不够

[root@worker1 ~]# su - user
Last login: Mon Sep 17 18:10:53 CST 2018 on pts/1
[user@worker1 ~]$ whoami
user
[user@worker1 ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[user@worker1 ~]$

root用户:

增加普通用户有临时的root权限

#chmod u+s /usr/bin/ls

[root@worker1 ~]# chmod u+s /usr/bin/ls

普通用户user:

#ls  /root/

[user@worker1 ~]$ ls /root/
anaconda-ks.cfg

取消普通用拥有root权限

[root@worker1 ~]# chmod u-s /usr/bin/ls

 另一种方式赋值权限:

#chmod u=rws /usr/bin/ls

root用户:

[root@worker1 ~]# chmod u=rws /usr/bin/ls

user用户:

[user@worker1 ~]$ ls /root/ //也具有权限查看根目录内容
anaconda-ks.cfg
[user@worker1 ~]$ ls -l /usr/bin/ls //所有者第三位变成了大写s,是因为没有x权限,增加以后就变成小写s了
-rwSr-xr-x. 1 root root 117616 Nov 20  2015 /usr/bin/ls

root用户:

#chmod u+x /usr/bin/ls

[root@worker1 ~]# chmod u+x /usr/bin/ls

user用户:

[user@worker1 ~]$ ls -l /usr/bin/ls //增加x权限后变为小写s了
-rwsr-xr-x. 1 root root 117616 Nov 20  2015 /usr/bin/ls

 

2 特殊权限set_gid

stick_bit:对二进制可执行文件和目录,在执行阶段具有文件所属组的权限

对根目录操作:

user用户:

[user@worker1 lesson9]$ ls /root/
ls: cannot open directory /root/: Permission denied

root用户:

#chmod g+s /usr/bin/ls 

#ls -l /usr/bin/ls //所属组第三位为s

[root@worker1 ~]# chmod g+s /usr/bin/ls
[root@worker1 ~]# ls -l /usr/bin/ls
-rwxr-sr-x. 1 root root 117616 Nov 20  2015 /usr/bin/ls

user用户:

#ls /root/

[user@worker1 lesson9]$ ls /root/ //可以查看root目录的内容
anaconda-ks.cfg

创建dir2目录,并set_gid:

#mkdir dir2

#chmod g+s dir2 //所属组是user

#chown :user dir2/

#mkdir dir2/dir3

#touch dir2/file1.txt

[root@worker1 lesson9]# mkdir dir2
[root@worker1 lesson9]# chmod g+s dir2
[root@worker1 lesson9]# chown :user dir2
[root@worker1 lesson9]# mkdir dir2/dir3
[root@worker1 lesson9]# touch dir2/file1.txt
[root@worker1 lesson9]# ls -l dir2
total 0
drwxr-sr-x 2 root user 6 Sep 17 18:51 dir3
-rw-r--r-- 1 root user 0 Sep 17 18:51 file1.txt

将dir2目录取消set_gid:

#chmod g-s dir2 

#mkdir dir2/dir4/

#touch dir2/file2.txt

#ls -l dir2/

[root@worker1 lesson9]# chmod g-s dir2
[root@worker1 lesson9]# mkdir dir2/dir4/
[root@worker1 lesson9]# mkdir dir2/file2.txt
[root@worker1 lesson9]# ls -l dir2/
total 0
drwxr-sr-x 2 root user 6 Sep 17 18:51 dir3
drwxr-xr-x 2 root root 6 Sep 17 18:58 dir4
-rw-r--r-- 1 root user 0 Sep 17 18:51 file1.txt
drwxr-xr-x 2 root root 6 Sep 17 18:58 file2.txt

由上可知dir2下子文件和子目录的所属组用户与父目录set_gid的所属组有关

 

3 特殊权限stick_bit

$ls -ld /tmp/

[user@worker1 ~]$ ls -ld /tmp/
drwxrwxrwt. 8 root root 4096 Sep 17 17:56 /tmp/

user用户:

$cd /tmp/

$touch file1.txt

$chmod 777 file1.txt

$vi file1.txt //添加内容

[user@worker1 tmp]$ touch file1.txt
[user@worker1 tmp]$ chmod 777 file1.txt
[user@worker1 tmp]$ vi file1.txt

在tmp目录下:

user1用户:

$su - user1

$vi file1.txt //修改内容,随意修改

$rm -f file1.txt 不可以删除,就是防删除

[user1@worker1 tmp]$ vi file1.txt
[user1@worker1 tmp]$ rm -f file1.txt
rm: cannot remove ‘file1.txt’: Operation not permitted

在/tmp/dir1目录下:

user用户:

$mkdir dir1

$chmod 777 dir1/

[user@worker1 tmp]$ mkdir dir1
[user@worker1 tmp]$ chmod 777 dir1/

user1用户:

$cd dir1/

$touch file2.txt

$mkdir dir2/

$rm file2.txt

$rm dir2

[user@worker1 dir1]$ touch file2.txt
[user@worker1 dir1]$ mkdir dir2
[user1@worker1 dir1]$ rm file2.txt
rm: remove write-protected regular empty file ‘file2.txt’? y
[user1@worker1 dir1]$ rm -r dir2/
rm: remove write-protected directory ‘dir2/’? y
[user1@worker1 dir1]$ ls

由上可知:不是文件或目录本身的权限,而是所在目录的权限

 

4 软链接文件

软链接:是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到改文件所链接的文件上

#ls -l /bin

#/bin/ls //查看

#/usr/bin/ls

[root@worker1 tmp]# ls -l /bin
lrwxrwxrwx. 1 root root 7 Sep  5 22:52 /bin -> usr/bin
[root@worker1 tmp]# /bin/ls
dir1  lesson8  lesson9    yum.log
[root@worker1 tmp]# /usr/bin/ls
dir1  lesson8  lesson9    yum.log

软链接操作:

ln -s /root/dir1/file1.txt /tmp/dir1/file.txt //目录做软链接

不同目录做软链接

来源文件:

#mkdir /root/dir1

#touch /root/dir1/file1.txt

#echo "hello world" > file1.txt

[root@worker1 dir1]# mkdir /root/dir1/
[root@worker1 dir1]# touch /root/dir1/file1.txt
[root@worker1 dir1]# echo "hello world" > file1.txt

目标文件:

#mkdir /tmp/dir/

#ln -s /root/dir1/file1.txt /tmp/dir1/file.txt

[root@worker1 dir1]# mkdir /tmp/dir1/
[root@worker1 dir1]# ln -s /root/dir1/file1.txt /tmp/dir1/file.txt
[root@worker1 dir1]# cat /tmp/dir1/file.txt
hello world

同目录下做软链接:

[root@worker1 tmp]# mkdir /tmp/dir1/
[root@worker1 tmp]# mkdir /tmp/dir2/
[root@worker1 tmp]# touch /tmp/dir1/yumbak.log
[root@worker1 tmp]# echo "hello world" > /tmp/dir1/yumbak.log
[root@worker1 tmp]# cd /dir1/
[root@worker1 dir1]# ln -s yumbak.log log1
[root@worker1 dir1]# ls -l
total 4
lrwxrwxrwx 1 root root 20 Sep 17 19:53 file.txt -> /root/dir1/file1.txt
lrwxrwxrwx 1 root root 10 Sep 17 20:54 log1 -> yumbak.log
-rw-r--r-- 1 root root 12 Sep 17 20:41 yumbak.log
[root@worker1 dir1]# cat log1
hello world

对软链接文件移动到/tmp/dir2/目录下,再查看log1软链接文件,出现找不到源文件

[root@worker1 dir1]# mv log1 /tmp/dir2/ //将log1软链接移动到/tmp/dir2/下
[root@worker1 dir1]# cd /tmp/dir2/
[root@worker1 dir2]# ls -l
total 0
lrwxrwxrwx 1 root root 10 Sep 17 20:54 log1 -> yumbak.log
[root@worker1 dir2]# cat log1 //找不到链接文件
cat: log1: No such file or directory

由上可知,文件软链接尽量使用绝对路径,不要使用相对路径

 

5 硬连接文件

硬链接:读取一个文件时,会先读inode信息,再根据inode中的信息到信息块区域将数据去出来;而硬链接是直接再建立一个inode链接到文件放置的块区域,即进行硬链接时改文件内容没有任何变化,只是增加一个执行这个文件的inode,并不会格外占用磁盘空间。硬链接有两个限制:不能跨文件系统,因为不同的文件系统有不同的inode table;不能链接目录

#cd /tmp/dir1/

#ln /tmp/yumbak.log /tmp/1_hard.txt //硬链接

#ln -s /tmp/1.txt /tmp/1_soft.txt //软链接

[root@worker1 dir1]# cd /tmp/dir1
[root@worker1 dir1]# ls
file.txt  yumbak.log
[root@worker1 dir1]# ln -s /tmp/dir1/yumbak.log  /tmp/dir1/soft.log
[root@worker1 dir1]# ln  /tmp/dir1/yumbak.log  /tmp/dir1/hard.log
[root@worker1 dir1]# ls -il
total 8
68312209 lrwxrwxrwx 1 root root 20 Sep 17 19:53 file.txt -> /root/dir1/file1.txt
101444005 -rw-r--r-- 2 root root 12 Sep 17 20:41 hard.log
68312213 lrwxrwxrwx 1 root root 20 Sep 17 21:12 soft.log -> /tmp/dir1/yumbak.log
101444005 -rw-r--r-- 2 root root 12 Sep 17 20:41 yumbak.log

软链接的inode 与源文件不同,只是一个文件链接,会占比较小空间,删除了不会影响源文件

硬链接的inode 与源文件相同,只是对文件inode增加一个指向,真正存文件就是inode,表示一个文件,不会占空间

硬链接不能跨分区创建:

因为不同分区下,有相同的inode,因为系统分区的时候inode已经分配好了而且都有自己独立体系的inode

[root@worker1 dir1]# ln /tmp/dir1/yumbak.log /boot/test.log
ln: failed to create hard link ‘/boot/test.log’ => ‘/tmp/dir1/yumbak.log’: Invalid cross-device link

 

robosuite 入门教程(一)安装与基本用法 摘要:Robosuite是基于MuJoCo的模块化机器人仿真框架,提供标准化基准测试环境和多样化机器人控制功能。作为ARISE计划的一部分,该框架支持强化学习、模仿学习等算法研究,包含程序化环境生成、多模态传感器、多种控制器及遥操作设备。支持macOS/Linux系统,提供详细安装指南和功能演示脚本,包括随机动作测试、控制器验证、域随机化等。最新版本v1.5新增人形机器人支持、全身控制器和照片级渲染功能,旨在降低机器人学习研究门槛,促进算法开发与评估。 阅读详情

相关推荐

DeepSeek与豆包无缝对接:5分钟搞定智能周报自动化(附完整代码)

本文详细介绍了如何利用DeepSeek与豆包API,快速搭建一个智能周报自动化系统。通过整合豆包平台的工作流数据,并调用DeepSeek大模型进行深度分析与内容生成,该系统能在5分钟内自动抓取、分析多源信息,并生成结构清晰、富有洞察力的团队周报,显著提升工作效率。

weixin_29029995的博客 493

linux学习 lesson9日志

一、什么是日志 日志文件是用于记录系统操作事件的记录文件或文件集合,可分为事件日志和消息日志。具有处理历史数据、诊断问题的追踪以及理解系统的活动等重要作用。 在日常运维中日志是不可或缺且非常重要的一环。 二、日志的查看 日志储存在位置在/var/log 下,不同的文件承载着不同的日志信息。举例如下: /var/log/message ##系统启动后的信息和错误日志,是Red ...

飞翔的罗老汉 268

智能循迹小车之PID控制算法

从光电传感器获取信号确认小车和黑线的偏离角度,通过PID算法算出左右车轮速度,控制小车前进或者后退。

yzj199921的博客 4640

【Linux:lesson1】的基本指令

🔍🌷这是Linux的第一篇文章,用来介绍一下Linux环境下的基本指令,是Linux课程学习的第节课。后面会继续带来Linus课程学习的基本知识点。

路虽远,行则将至!事虽难,做则必成! 6299

手把手教你为STM32设备生成自定义MAC地址(基于芯片ID的5种算法对比)

本文详细介绍了基于STM32芯片ID生成自定义MAC地址的5种算法,包括直接截取、异或折叠、CRC32哈希、自定义混合运算及SHA-256摘要。通过对比分析各算法的计算复杂度、唯一性及适用场景,帮助嵌入式开发者根据项目规模与资源,选择最合适的方案,确保设备MAC地址的唯一性与合规性。

weixin_29170327的博客 527

【GPT】Coze使用开放平台接口-【7】Dify 比较篇

coze 用于社交,dify 用来内部构建。抛开工作流,机器人,工具,coze 最大的区别在于可以直接发布到社交媒体上。所以,coze 对操作体验上也花了不少功夫,而 dify 就专注在帮助使用者打磨工作流。coze 各个大模块之前可以联动的机制也比较多,所以侧重点各不相同。

非晓为骁的博客 7614

[Linux基础——Lesson9.调试器GDB]

本文全面介绍了Linux下的GDB调试工具。首先阐述了GDB的基本概念、发展历程及主要功能,包括支持多种编程语言、设置断点、单步执行等核心调试能力。重点讲解了Debug与Release版本的区别,指出在Linux中需使用"-g"选项编译才能生成可调试版本。文章详细列出了常用GDB指令,如断点设置(b)、运行(r)、单步调试(n/s)、变量查看(p)等,并通过具体代码示例演示了如何调试交换两个数的程序。最后强调通过"问题-原理-实践"的学习路径,掌握GDB调试的核心技能

2401_83386596的博客 1088

用易经智慧看懂人工智能:64卦中的科技密码--当古老智慧遇见未来科技

在人工智能狂飙突进的今天,我们总在追问:这些代码构建的智能究竟会带人类走向何方?或许答案早已藏在《周易》的六十四卦中——这本中华文明的“源代码”,正用一种跨越时空的语言,悄悄解释着最前沿的科技秘密。

weixin_38410320的博客 2084

Lesson9 【LINUX】将京淘项目发布到Linux系统上

1.Linux中配置JDK 2.Linux中配置MariaDB 3.将打包好的项目发布到Linux 4.配置nginx

weixin_42752402的博客 309

Claude Code 从入门到精通,通过实战项目穿插 Agent Skills、MCP、Hooks、子代理、插件等十五个知识点

本文介绍了Claude Code的高级使用技巧,通过一个个人简历网站实战项目,详细讲解了15个核心知识点。主要内容包括:三种权限模式(默认/编辑/计划)的使用与切换;历史会话管理(/resume、/rename、/clear命令);会话回滚功能(/rewind);以及危险参数--dangerously-skip-permissions的注意事项。文章还演示了如何通过计划模式拆分代码文件,并强调了在复杂任务中仔细检查规划步骤的重要性。这些技巧能帮助开发者更高效地使用Claude Code完成项目开发。

1788

18、项目运行与调试全攻略

本文详细介绍了在IntelliJ IDEA中进行项目运行与调试的完整流程,涵盖运行配置的创建与管理、临时配置的使用与保存、运行窗口的控制台操作及多程序并行运行的处理。同时,讲解了如何通过调试器定位和修复语法错误、运行时错误及逻辑错误,并结合ACME项目演示了第三方库Log4J的集成方法和命令行客户端的功能改进。文章还提供了调试流程图,帮助开发者系统掌握IDEA的强大调试功能,提升开发效率与代码质量。

svm4gardener的博客 76

Linux命令行工具学习 lesson_2 : vdir~login

1. 获取前 30 条命令:`$head -30 linux_cmd_list_list.txt `or `$ls -l --format=single_column /bin /sbin /usr/bin | head-30` 2. 包含大量外部链接,其内容作为学习参考 3. 持续编辑中…… liujun@Lemon:~\$ ls -l --format=single-column...

Lemon刘羽飞 536

手把手教你学simulink--永磁同步电机场景实例:使用Simulink进行PMSM的矢量控制仿真

矢量控制的重要性提高效率:通过精确控制磁场方向,可以优化电机的工作状态,减少损耗。增强动态性能:矢量控制能够快速响应负载变化,提供更好的调速性能。简化设计:将复杂的交流电机控制问题转化为类似直流电机的控制问题,便于设计和实现。通过上述步骤,我们简要介绍了如何基于Simulink实现PMSM的矢量控制仿真。

MHD0815的博客 420

原创 linux下c++ lesson9 多继承

1-多继承的概念.cpp #include <iostream> using namespace std; class Airplane { protected: int high; public: Airplane() { cout << "飞机的构造函数" << endl; high = 100; } void show() { ...

Tyeat的博客 270

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【lesson9】Linux make和makefile

Linux make和Makefile的介绍以及使用

m0_67077469的博客 460

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Linux lesson1】初识Linux系统

本文系统介绍了Linux操作系统的基础知识和核心概念,分为两大部分。第一部分详细讲解了Linux常用基本指令及其使用方法,包括网络配置、文件与目录操作、文件管理、文本搜索、压缩工具以及文件传输工具。每个指令都提供了语法说明和常用选项,帮助用户快速掌握日常操作。第二部分深入解析了权限管理机制,包括用户分类、权限的表示方法权限修改命令以及权限对不同文件类型的影响。特别强调了粘滞位的概念,解释了其在防止非拥有者删除文件中的重要性。整体内容结构清晰,便于初学者理解和应用Linux系统管理技能。

Dumpling527的博客 1169

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

linux学习lesson32

目录 1 监控io性能 2 free命令 3 ps命令 4 查看网络状态 5 linux下抓包 1 监控io性能 iostat -x  磁盘使用 [root@worker1 ~]# iostat -x Linux 3.10.0-327.el7.x86_64 (worker1) 10/15/2018 _x86_64_ (2 CPU) avg-cpu: %us...

InfiniteIdea_Go的博客 397

linux学习lesson15

目录 1 磁盘格式化 2 磁盘挂载 3 手动增加swap空间 1 磁盘格式化 磁盘格式化命令:mke2fs、mkfs.ext2、mkfs.ext3、mkfs.ext4 和mkfs.xfs 现在以mke2fs为例:常用的参数 -b:表示分区时设定每个数据区块占用的空间大小。目前,每个数据块支持1024B、2048B以及4096B。 -i:表示设定inode的大小。 -N:表示...

InfiniteIdea_Go的博客 2716

Lesson 9 防火墙 iptables 和 firewalld

...# -n 显示源 -v 详细信息 -x 自动转换为KB\MB等单位-L写在最后列出所有规则 --line 增加行号# num:规则的编号(行号)# pkts:数据包的数量# bytes:数据包的字节数# target:动作(放行、拒绝)# port:端口# in:入站的网卡# out:出站网卡# 保存设置,否则重启系统后恢复默认设置# 注意:不能使用systemctl save iptables 命令# 查看。

2301_80019073的博客 1231

linux lesson9

iptables服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链 而规则链则依据数据包处理位置的不同进行分类,具体如下: 在进行路由选择前处理数据包(PREROUTING); 处理流入的数据包(INPUT); 处理流出的数据包(OUTPUT); 处理转发的数据包(FORWARD); 在进行路由选择后处理数据包(POSTROUTING)。 -P——设置默认策略 -F——清空规...

executive 170

linux学习lesson35

目录 1 iptables规则备份和恢复 2 firewalld的9个zone 3 firewalld关于zone的操作 4 firewalld源于service的操作 1 iptables规则备份和恢复 保存和备份iptables规则 service iptables save //会把规则保存到/etc/sysconfig/iptables [root@worker1 ~]# ...

InfiniteIdea_Go的博客 594

lesson 6

(Internet Control Message Protocol)回显请求报文并等待回显应答报文来实现这一功能。是一个网络诊断工具,用于测试计算机与目标主机之间的网络连接。nc(netcat)是一个用于网络通信的工具,也可以用来测试端口是否可用。telnet 是一个用于远程登录的工具,也可以用来测试端口是否可用。使用 “+” 设置权限,使用 “-” 用于取消。使用 “+” 设置权限,使用 “-” 用于取消。是目标主机的IP地址或域名。是可选的参数,可以用来控制。

PzZzang2的博客 2467

linux学习lesson13

目录 1 su命令 2 sudo命令 3 限制root远程登录 1 su命令 命令su的格式为su [-] username,-表示把该用户的环境变量也切换 [root@worker1 ~]# su - user3 Last login: Wed Sep 19 06:45:53 CST 2018 on pts/1 [user3@worker1 ~]$ whoami user3 ...

InfiniteIdea_Go的博客 516

linux学习lesson28

目录 1 awk命令 1 awk命令 拷贝练习文件 [root@worker1 dir9]# cp /etc/passwd ./testpasswd 打印第一个字段 [root@worker1 dir9]# head -n2 testpasswd | awk -F ':' '{print $1}' ROOT bin 打印整行 [root@worker1 dir9]# head -n...

InfiniteIdea_Go的博客 250

Linux:37信号lesson26

信号量集第一个成员*sem.base:起始信号量可以malloc多个信号量sem_nsems:有多少个信号量。

WG_17的博客 1187

[Linux基础——Lesson1.Linux发展史]

篇主要介绍Linux的发展历史,这里并不需要我们掌握,但是作为一个合格的Linux学习者与操作者,这些东西是需要了解的,而且对于我们之后的学习与感悟是必不可少的。读史以明智,通过了解Linux的历史,相信你会收获不小!一、Linux发展史🧐在这里简要介绍Linux的发展史。要说Linux,还得从UNIX说起。

2401_83386596的博客 724
上一篇: linux学习lesson8
下一篇: linux学习lesson10
InfiniteIdea_Go
博客等级 码龄8年 3粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值