前言
在linux操作系统中,账户分为两类,一类是普通用户,一类是超级用户,普通用户在许多方面受权限约束,而超级用户几乎不受约束。
root账户和普通账户的切换
有三种方式能够切换账号
su
su 直接使用,会弹出password(一般只有password,后面不跟for用户名,那登陆的就是root账号),直接输入root账号密码,就可以成功登陆root帐号了。
su这个指令的登陆root账号只是将身份换了一下,所在的目录时不会变化的。
ctrl d返回登陆前的普通账户。
su 用户名
在su后面加上用户名可以指定普通用户,需要注意的是:
root账户切换到普通账户不需要输入密码,直接就可以切换。
普通账户切换到普通账户需要输入想要登陆的账户的密码。
su -
su -直接使用,会弹出password(一般只有password,后面不跟for用户名,那登陆的就是root账号),直接输入root账号密码,就可以成功登陆root帐号了。
su -这个指令的登陆root账号会直接将目录切换到root账号的家目录。
ctrl d返回登陆前的普通账户。
sudo
sudo 指令/可执行文件
sudo是一个一次性的,在执行这个指令或者文件时,拥有root的权限,第一次使用需要输入登陆时的普通账户的密码,之后的一段时间都不需要再次输入。
但是默认普通用户是无法使用sudo的,因为系统并不信任这个账户,需要将该用户的信息放到一个文件里面,才能使用sudo/etc/sudoers
这个文件只能用root账号打开
打开账号
找到allow开头的这一行。
复制一行
root ALL=(ALL) ALL
lyt ALL=(ALL) ALL
将root改成用户的用户名就行。
文件的属性
文件的类型
一排就代表着一个文件的属性
圈出来的 部分是文件的类型。
d是目录文件
-是普通文件
文件的权限
root账号并不被这些权限约束
用绿色的框框圈起来的表示的就是文件的权限。
权限分为三种:
r:可读权限
w:可写权限
x:可执行权限
-:没有对应的权限
rwx的位置都是固定的
这三种权限又被分为了三组:第一组代表的是文件拥有者user所拥有的权限
第二组代表的是文件所属组group成员所拥有的权限
第三组代表其他账户other所拥有的权限
可读权限
在目录文件和普通文件下,每种权限都会有些不一样
普通文件:
普通文件的可读权限可以让用户打开这个文件查看里面的内容
目录文件:
目录文件的可读权限可以查看这个目录文件下有哪些文件
可写权限
普通文件:
普通文件的可写权限可以让用户打开这个文件对里面的内容进行修改。
目录文件:
目录文件的可写权限可以让用户在该目录下创建和删除以及更改文件。
可执行权限
普通文件 :
普通文件的可执行权限可以让用户使用gcc等编译器对该文件进行编译
目录文件:
目录文件的可执行权限可以让用户进入该目录文件
文件的权限修改
文件的修改需要用到一个指令chmod
格式 chomd 修改权限 目标文件
chmod修该权限有两种方法
例1:
chmod u+rwx,g+rwx,o+rwx 目标文件
chmod a+rwx 目标文件
u表示拥有者的权限,g表示所属组的权限,o表示其他人的权限。
- 表示加上权限
- 表示减去权限
a 是all 一次性修改拥有者,所属组和其他人的权限。
例2:
chmod 777 目标文件
这三个数是八进制数
第一个数代表着拥有者的权限
第二个数代表着所属组的权限
第三个数代表着其他人的权限
将一个7的八进制数分解为二进制:
111
可以看到是三个二进制,刚好可以对应三个权限。第一个二进制是读权限,第二个二进制是写权限,第三个二进制数是执行权限,1表示的就是拥有对应的权限,也就是说,拥有者和所属组以及其他人的权限也可以这样对应,所有就可以用三个八进制数来控制对应的权限。
粘滞位
在linux当中,一个用户是不能到另一个用户的家目录里面去的,也无法看到里面的内容,因为每一个用户的家目录只对于该用户 有读写执行的权限。
如果想要用户之间进行交互,可以在根目录建立一个任何人都有读写执行权限的共享目录。
但由于该目录所有人都有读写执行的权限,所以任何人都可以删除其他人建立的文件,因为文件的删除权限不由该文件决定,而是由该文件所在的目录决定。
这个时候就可以对这个目录文件加上粘滞位,粘滞位只能加在目录上。
用chmod指令给该文件的other加上了粘滞位,粘滞位是一种特殊的可执行权限,可以让该目录文件下的文件只能被自己的拥有者所删除。
文件拥有者与所属组的更改的更改
更改文件拥有者和所属组需要用到root权限和chown指令
格式:
chown 新拥有者:新所属组 目标文件
文件的初始权限
普通文件默认权限:664
目录文件默认权限:775
实际上这并非这两种文件最开始的权限,文件权限会被umask(权限掩码)处理
直接输入umask就可以看到这样的一串八进制的数,第一个0是表明这个数是一个八进制数,后面的三个数分别对应着,user权限,group权限,other权限。创建文件时,在umask当中出现的权限会被去掉,所以普通文件和目录文件最开始的权限应该是:666 和 777.
umask是通过一个运算将对应权限取消的
最终权限 = 初始权限&(~umask)~是取反
最终权限是初始权限和umask这两个八进制数转换成二进制数,再将umask按位取反,两个数&之后的结果
例:
666展开为二进制
110110110
002展开为二进制
000000010
取反
111111101
&:
110110110&
111111101=
将110110100转为8进制:
664
修改umask
umask 0三个八进制数字
例:
umask 0484
文件名的后缀
在linux操作系统中,并不在乎文件的后缀名,因为文件的类型和权限跟后缀名无关,分辨文件靠文件开头的字符,权限也由权限属性显示。
虽然linux操作系统并不在乎文件的后缀名,但是搭载在linux操作系统上gcc这样的编译器是在乎的,用gcc编译一个文件,即便该文件有对应的可执行程序,但没有.c作为后缀,就是无法对该文件进行编译。