自学内容网 自学内容网

Linux权限理解及环境基础开发工具使用

前言

Linux中有两种用户,一种是root用户,另一种是普通用户,二者的权限不一样,即能做的事情不一样。下面我们来细讲一下这些不同。

root用户能在Linux系统下做任何事情,而普通用户只能做有限的事情。

root用户的命令提示符是“#”,而普通用户的命令提示符是“¥”。

1. 如何切换用户呢?

su命令可以用来切换用户。

su root//切换到root用户
su zzj//切换到zzj用户

当从root切换到普通用户时,直接就可以切换,但如果从普通用户切换到root用户,则需要输入root的密码。

2. 权限管理

2.1 文件访问者分类

文件访问者分为三类:

1. 文件和目录的所有者:u--user

2. 文件和目录所有者所在组的用户:g--group

3. 其他用户:o-other

2.2 文件类型和访问权限

从左到右分别是:文件类型,权限,连接数,所有者,所有组,文件大小(kb),最新修改时间,文件名。

2.2.1 文件类型:

d:文件夹

-:普通文件

l:软文件

c:字符设备文件,如屏幕,键盘等

p:管道文件

s(socket):套接口文件

b(block):块设备文件,如硬盘,光驱等

2.2.2 基本权限

读权限:r。对于文件:具有读取文件内容的权限。对于目录:具有浏览该目录信息的权限

写权限:w。对于文件:具有具有修改文件内容的权限,如删除等。对于目录:具有删除移动目录内文件的权限

执行权限:x。对于文件:具有执行文件的权限。对于目录:具有进入目录的权限。

权限不仅可以用rwx表示,还可以用八进制的数字来表示:

rwx:7      rw-:6     r-x:5等。

2.3 文件权限修改

chmod:文件权限修改

2.3.1 命令权限制修改

+:向权限范围增加权限代号所表示的权限

-:向权限范围取消权限代号所表示的权限

=:向权限范围赋予权限代号所表示的权限

用户符号:   u:拥有者 g:拥有者同组用 o:其它用户 a:所有用户

使用实例:

chmod a+rwx zzj.txt

将所有成员都加上全部权限。

2.3.2 八进制修改

chmod 777 zzj.txt

将所有成员都加上全部权限

2.3.3 修改文件拥有者

chown:修改文件拥有者

chown zzj zzj.txt

将zzj.txt的文件拥有者变为zzj。

注意:一般将文件的所有者改变需要在root用户下进行。

2.3.4 修改文件所属组

chgrp:修改文件所属组

chgrp zzj_1 test.txt

将所有组变为zzj_1。

2.3.5  umask

用于修改或查看文件掩码

新建目录时的默认权限为0777

新建文件夹的默认权限为0666

但是实际新建时,看到的权限不是这样,因为权限还收到文件掩码的影响,实际权限为:创建权限&~umask。

说明:root用户的默认掩码值为0022,普通用户的默认掩码值为0002.

2.3.5  粘滞位

其他用户想进入别人的用户目录下是根本进不去的,因此如果需要多人一起合作,就需要创建一个共享目录,共享目录中用户有写的权限,那就是可以删除文件,而且还可以删除别人的文件,那是不是有点不科学了?

为了解决这个问题,Linux引入了粘滞位的概念。

粘滞位:在一个目录被设置为粘滞位后,该目录下的文件只有root用户可以删除,以及该文件的所有者能删除。

设置粘滞位:chmod +t 。

other权限中的t就是粘滞位设置成功的表现。

3. Linux软件包yum

3.1 rzsz 

通过rz 和sz命令能实现不同操作系统中的软件的互相传输。

rz:能将Windows系统下的文件传输到Linux下。

sz:将Linux下的文件传输到Windows下。

3.2 使用yum安装软件

yum install -y sl

-y是因为每次安装时都会询问是否安装,-y就直接让系统不询问,直接安装。

sl就是对应的软件名进行替代。

卸载软件也是类似的:

yum remove -y ls

4. Linux开发工具

4.1 编辑器

这里介绍vim编辑器。

vim编辑器有三种模式,分别是命令模式,插入模式和底行模式。

命令模式:控制屏幕光标移动,删除字符/字/行,移动复制某区段以及进入insert模式

插入模式:只有在插入模式下才能进入文字输入,按esc退出到命令模式

底行模式:文件保存或退出

4.1.1 基本操作

在进入vim 的时候,一开始是命令行模式,按i进入插入模式。

命令模式通过shift +;进入底行模式

底行模式下:

w:保存当前文件

q:退出文件

w!:强制保存

q!:强制退出

wq!:强制保存并退出

命令行模式下的操作:

gg:定位到最上面一行

G:定位到末尾行

n +G:定位到任意行

$:定位到光标所在行的行尾

^:定位到光标所在行的行首

w,b:分别按单词进行往后,往前移动光标

h,j,k,l:光标向左,向下(jump),向上(king),向右。

(n)dd:删除(n)行

(n)yy:复制(n)行

(n)p:复制(n)次

(n)x:删除n个文字

(n)r:替换(n)个字符

R:进行替换模式,替换光标处的所有字符

u:撤销操作

Ctrl +r:取消撤销

Ctrl +^:将字符进行大小写转换

4.2 g++/gcc的使用

4.2.1 背景

代码转换为可执行文件前需要经历4个过程,分别是:

1. 预处理(进行宏替换)

头文件展开

 宏替换

 注释消除

 条件编译

gcc -E test.c -o test.i 

2. 编译(生成汇编)

gcc -S test.i -o test.s

3. 汇编(生成机器可执行代码)

gcc -c test.s -o test.o

4. 链接(生成可执行文件)

gcc test.o -o test.c

记忆方法:esc ,iso

4.2.2 库

在链接的时候,需要用到库,这些库在安装软件的时候就一起安装到了文件里面。因此,我们使用#include<stdio.h>的时候,编译器会在库里面去找包含的头文件,因此我们可以使用各种函数。

库一般分为动态库和静态库。

动态库指的是,在编译链接时没有把库文件的代码加入可执行文件中,而是在程序执行时加载库,这样可以节省系统开销。

动态库的一般后缀为“.so”。

gcc在编译时默认使用动态库,如果要使用静态库,需要使用选项 -static。

静态库是指,在编译链接时就把库文件的代码加入可执行文件中,这样会使生成的文件空间比较大,但是在运行时不再需要库文件。

后缀名一般为“.a”。

gcc选项:

-E:只进行预处理

-S:只进行编译

-c:只进行汇编

-o :输出到指定文件

-g:生成调试信息

-static:使用静态库


原文地址:https://blog.csdn.net/Ajiang2824735304/article/details/142979829

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!