linux的文件权限与用户配置
linux一般将文件可读写的身份分为三个类别,分别是拥有着(owner),所属群组(group),其他人(others),且这三种身份各有读(read),写(write),执行(execute)等权限。
1. linux用户身份与用户组记录文件
在linux系统中,默认情况下,所有系统上的账号与一般身份用户,包括root的相关信息,都记录在 /etc/passwd 这个文件内,个人密码则是记录在 /etc/shadow 这个文件内,至于linux所有的组名都登记在 /etc/group 中。这三个文件可以说是linux系统里面账号,密码,用户组信息的集中地,so不要随便删除这三个文件
2.linux文件权限
2.1 linux文件属性
使用ls -al命令查看
第一列类似 -rw-r–r-- 指的是文件类型权限
- 仔细看第一列可以发现有十个字符,第一个字符代表这个文件是目录,文件或者链接文件等:
- [d]代表目录,
- [-]代表文件,
- [l]代表是链接,
- [b]代表为设备文件里面的可供存储的周边设备(可按块随机读写的设备)
- [c]代表为设备文件里面的串行端口设备,例如鼠标,键盘
- 接下来的字符串,以三个为一组,且都为[rwx]的三个参数的组合,其中[r]代表可读,[w]代表可写,[x]代表可执行,但是请注意,这三个顺序是不会变的,如果该权限不存在,则用[-]表示。
- 第一组为拥有者的全新,第二组为此用户组内的账号拥有的权限,第三组为其他用户所拥有的的权限
第二列数字 num 指的的链接数
第三列 root 指的是文件拥有者
第四列 root 指的是文件所属用户组
第五列 数字 指的是文件的大小
第六列 Dec … 指的是文件最后被修改的日期
第七列/最后一列 指的是文件名
2.2 如何修改文件属性与权限
下面介绍几个常用于用户组,拥有者,各种身份的权限的修改命令
- chgrp:修改文件所属用户组
语法:chgrp [-R] 用户组名称 要修改的文件/要修改的目录
-R代表递归,在修改某个目录下所有文件的所属组时使用
例: chgrp testUser test.py
注意,要被修改的用户组必须存在于 /etc/group 中,否则会摆错。 - chown:修改文件拥有者
语法:chown [-R] 用户名 文件或目录 或
chown [-R] 用户名:组名 文件或目录
由上可以看出,chown在修改所属用户的时候,可以一起修改其所属组。
例:chown testUser test.py ----只修改所属用户
chown root:root test.py ----既修改所属用户也修改所属用户组
注意:要被修改的拥有者也必须存在于系统中, 其存在文件为 /etc/passwd,否则也会出现错误 - chmod:修改文件的权限,SUID,SGID,SBIT等特性
权限设置有两种方式,分别可以使用数字或者符号来进行修改
第一种:数字
各权限的数字对照表:
r:4
w:2
x:1
语法:chmod 777 test.py (777代表权限加满,具体加多少看你想给对应用户的权限是多少,例如,754,655等)
第二种:符号
使用这种方式的话就要用到每个分组的身份了,如下:
u :用户
g:分组
o:其他
a:以上三种身份
当然权限就要用到对应的rwx了,
语法:chmod u=rwx,g=rw,o=r test.py
如果想给test.py的其他用户加上x权限,简单的方式
chmod o+x test.py
如果想给test.py的u用户去掉x权限,简单的方式
chmod u-x test.py
2.3权限对于目录与文件的意义
对文件的读,写,执行,我们好理解,读 就是可以读取该文件的内容,写 就是可以编辑等操作此文件, 执行就是对文件的一系列执行,
但是对目录的rwx权限,是怎么回事呢,首先r,读对于目录来说只是可以查看该目录下的目录列表,w,写是可以对该目录下的文件进行编辑,新增,删除等操作,那么x,总不能对目录进行执行操作吧,是的,x对于目录来说就相当于一把钥匙,如果没有x权限,就没办法进入到该目录下,也就无法执行该目录下的任何命令,即便你有r,w权限。
cd
linux目录配置
linux下一切皆文件,其最主要的目录就是[/]根目录,所有的其他目录都是由其衍生出来的,那么linux下都有哪些目录,又都是存放哪些类型的文件的呢?
1. /bin
存放的是执行文件,比如常用的cat,touch,mkdir等
2. /boot
存放的是启动会使用到的文件,包括linux内核文件以及启动选项与启动所需配置文件等
3. /dev
在linux系统上,任何设备与接口设备都是以文件的形式存放于这个目录中
4. /etc
系统主要的配置文件几乎都存放于这个目录
5. /lib
系统的函数库非常多,而lib放置的则是在启动时会用到的函数库,以及在/bin或/sbin下的命令会调用的函数库
6. /media
存放的是可以删除的设备,包括软盘,光盘等
7. /mnt
如果你想暂时挂载某些设备,建议你放置于这个目录下
8. /opt
这是给第三方辅助软件放置的位置
9. /run
早起的FHS规定系统启动后所产生的各项信息应该要放置到/var/run下,新版的FHS则规范到/run下,由于/run可以使用内存来模拟,所以性能更佳
10. /sbin
linux有非常多的命令是用来设置环境变量的,这些命令只有root才能够来设置系统,其他用户最多只能用来查询,放在/sbin下的为启动过程中所需要的,包括了启动,修复,还原系统所需要的的命令
11. /srv
可以视为service的缩写,是一些网络服务启动后,这些服务所需要使用的数据目录,常见的如www,ftp等
12. /tmp
这是让一般用户或是正在执行的程序暂时放置文件的地方
13. /home
这是系统默认的用户家目录
14. /root
系统管理员的家目录
15. /lost+found
这个目录是使用标准的ext2,ext3,ext4文件系统格式才会产生的目录,目的在于当文件系统发生错误是,讲一次额遗失的片段放置到这个目录,如果使用的是xfs文件系统,就不会存在该目录
16. /proc
这个目录本身是一个虚拟文件系统,放置的数据都是在内存中,例如系统内核,进程信息等
17. /sys
这个和proc相似,也是虚拟文件系统,主要也是记录内核与系统硬件信息相关的内容
18. /usr
操作系统软件资源所放置的目录,其下面还有几个常用二级目录,
18.1 /usr/bin/
所有一般用户能够使用的命令都在这
18.2 /usr/lib
基本上,和/lib功能形同,所以/lib就是连接到此的
18.3 /usr/local
系统管理员在本机安装自己下载的软件,建议安装到此目录
18.4 /usr/sbin
非系统正常运行所需要的系统命令
18.4 /usr/share
主要放置只读的数据文件,当然也包括共享文件
18.5 /usr/games
与游戏比较相关的数据存放处
18.6 /usr/include
c/c++等程序的头文件(header)与包含文件(include)放置处
18.7 /usr/libexec
某些不被一般用户常用的执行文件或shell,会放置于此
18.8 /usr/src
一般源代码建议放置榆次
19 /var
如果说/usr是安装时占用较大硬盘容量的目录,那么/var就是在系统运行后才渐渐占用硬盘的容量的目录,因为/var主要存放经常性变动的文件,包括缓存(cache),日志文件(logs)以及某些软件运行所产生的文件,其中几个常见的二级目录:
19.1 /var/cache
应用程序本身运行过程中产生的缓存
19.2 /var/lock
某些设备或是文件资源一次只能被一个应用程序锁使用,如果同时有两个程序使用该设备,就可能产生错误,因此就得将该设备上锁,以确保该设备只会给单一软件锁使用
19.3 /var/log
这是日志存放的目录
19.4 /var/email
放置个人电子邮箱的目录,该目录也被放置于/var/spool/mail中
19.5 /var/run
某些程序或是服务启动后,会将它们的PID放在这个目录下
19.6 /var/spool
放置一些队列数据