在Linux中,严格意义来说是一个操作系统,我们称之为"核心(kernel)",而在操作时,我们一般是普通用户,不能直接使用kernel。而是通过kernel的外壳程序,也就是我要说的shell,来和kernel来沟通。
如果理解呢?
对比Windows GUI,我们操作windows不是直接操作windows内核,而是通过图形化接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell对于Linux的,有相同的作用,主要是对我们的指令进行解析,解析指令给内核。反馈的结果通过内核运行出结果,共同shell解析给用户。
而从技术角度,shell的最简单的定义:命令解释器(command interpreter)主要包括:
在Linux中有两种用户:超级用户(root)、普通用户
超级用户:可以在Linux系统下做任何事情,不受限制。
普通用户:在Linux下做有限的事情。
我们任何区分自己是超级用户还是普通用户呢?
超级用户的命令提示符是‘#’,普通用户的命令提示符是‘$’
我们一开始一般都是超级用户(root),使用root时不小心误删了一些重要的东西,是不可逆的,为了降低危险,我们创建一个普通用户,用来操作。
创建普通用户要先切换到超级用户(root)中进行:
命令:adduser 用户名
命令:passwd 用户名
注意:在Linux中,输入密码不回显
删除用户,要到root中进行:
命令:userdel -r 用户名
在使用Linux的时候,我们要经常来回用超级用户和普通用户,那么 我们要如何切换呢?
指令:su 用户名
功能:切换用户
超级用户切换到普通用户时,使用普通用户的密码
我这里用超级用户切换到普通用户时,并没有要输入密码,使用看情况而定,要输入密码的时候就输,不要就更好。
在使用普通用户的时候,有些命令需要增加权限来进行的。
例如:在普通用户下修改其他用户的密码
上面是不被允许的,我们要把自己的用户存放到信用列表中:
1、现切换到root用户中
2、进入/etc/sudoers 文件中
格式: vim /etc/sudoers
3、
4、在那一行后面写上: 用户名 ALL=(ALL) ALL
5、切换回自己的用户
最后恭喜你修改成功!
问访问者可以分为三类:
1、文件和文件目录的所有者(所属用户)
2、文件和目录的所有者所在的组的用户(所属组)
3、其他用户(other)
我们在Linux系统上创建文件或者目录时,都会有一串字符+数字。
-rw-rw-r-- 1 cxy cxy 0 Jul 28 16:47 text1
d:文件夹
-:普通文件
l:软链接(类似windows的快捷键)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
基本权限:
r:对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录的权限
w:对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
x:对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
-:表示不具有该权限
一个文件或目录,对于所属用户、所属组、other都有他们自己的权限,例如:
由于这个文件或目录是属于我们的,我们是可以修改这个文件或目录的权限属性。
指令:chmod
功能:设置文件的访问权限
语法:chmod 参数 权限 文件名
常用选项:
R:递归修改文件的权限
说明:只要文件的拥有者和root才可以改变文件的权限
chmod 命令的命令权限的格式
1、用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
注意:我们也可以还其他组的权限
u+或者u- 是改所属用户的权限
g+或者g- 是改所属组的权限
o+或者o- 是改其他人的权限
a+或者a- 是改所有人的权限
八进制改发也是可以的
如果想一次性修改多个文件,那么后面再加你想修改的文件名
做为所属用户,你对这个文件不喜欢,又舍不得删,嘿嘿,你可以给别人嘛,所以,你可以修改所属用户,把你名下的给别人。
指令:chown
功能:修改文件拥有者
语法:chown 参数 用户名 文件
注意:把文件或目录的所属权给别人,也要看别人收不收,属于在执行前,都加上sudo
你也可以修改文件或目录的所属组
指令:chgrp
功能:修改文件或目录的所属组
语法:chgrp 参数 所属组名 文件名
常用选项:-R递归修改文件或目录的所属组
问题来了:如何一次性更改所属用户和所属组呢?
我们先要知道:(读写执行看后面三个数字)
新建文件的默认权限是=0666
新建目录的默认权限是=0777
但是事实上,我们新建的目录或文件,看到的权限往往不是上面的这个值。
那是因为,创建文件或者目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建出来的文件权限是:mask & ~umask
格式:umask权限值
说明:超级用户的默认掩码值为0022,普通用户默认为0002
那我们现在如何修改呢?
指令:umask
语法:umask 想改成的值
umask 755
umask //查看
umask 044//设置
1、可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
2、可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
3、可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
于是问题来了~~
就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写
权限.
别人写了一下午的东西,可以让看,结果不小心被你删了,这得多那啥啊!
所以,给目录添加粘滞位,防止这种情况发生。
之后删除就不行了。
当一个目录被设置为粘滞位(用 chmod +t),则该目录下的文件只能由
1、超级用户删除
2、该目录的所属用户删除
3、该文件的所属用户删除