用户与用户组
Linux 是一个多用户、多任务的系统,常常有多人同时使用一台机工作,为了保护每个人的隐私权,“文件所有者”的角色就显得相当重要了。
当Linux用户登录系统之后,就会携带一个用户身份(User ID,UID)和一个用户组身份(Group ID,GID),相当于自己的名片。当需要访问文件或程序时,刷一下名片就能知道是否能读、写、执行了。
一般来说,Linux的用户信息保存在/etc/passwd中,组信息保存在/etc/group中,文件的每一行代表一个用户/组。早期的Linux将密码以明文的形式保存在/etc/passwd中,而现在则多以暗码(也就是加密之后的形式)的形式保存在/etc/shadow中。将密码存储在/etc/shadow中提高了密码的安全性,因为/etc/passwd允许所有人查看,而/etc/shadow只允许root用户查看。
注意,linux默认有个叫root的用户,是系统最高权限的用户,此用户可在系统做任何事。
在Linux里面,文件的权限跟使用者身份有关,关于使用者有3个概念
- 文件拥有者
- 群组(linux上用户可以加入一个组,群组就是此组内的用户)
- 其他人(非本群组成员)
这三个概念很好理解,初中数学就够用了
关于群组,用的最多的应该是在团队开发资源的情况下,不同团队之间的资源权限分配。
Linux文件权限
我们直接看第一列,是个10位的东西,是关于文件权限的,让我们来拆一下,分为四部分
先看第一部分,档案类型,认得d和-基本就够了
- d 目录
-
- 文件
- l 连接档(link file)
- b 装置文件里面的可供储存的接口设备(可随机存取装置)
- c 装置文件里面的串行端口设备,例如键盘、鼠标
后面三部分类似,分部代表不同使用者的权限,我们把几个字母拆开来看
- r 可读,read
- w 可写, write
- x 可执行, execute
- 如果是目录,一定要有该权限才能进入,否则有了r也只能查询,不能cd进入
- 跟文件后缀名是否可执行没有任何关系,跟window下的后缀不一样
- 代表无该权限
然后我们设置或者更改权限的时候,会按照二进制转八进制的读法,还是按照上面的例子,我们只读后面三部分
如果该位是-,填二进制的0,有字母就是1
每隔3位读一个数字,从二进制转8进制
111 -> 7
101 -> 5
所以,上面这个例子的权限就是755
再简单一点,读4,写2,执行1,需要什么权限就加起来得到权限数字
三类用户*三类权限 = 9种基本权限
让俺再造一个例子来加深理解
-rw-r–r– [连接数] root root [容量] [时间] file1
-rwxr-xr– [连接数] user1 group1 [容量] [时间] file2
drwxr-xr– [连接数] user2 group1 [容量] [时间] dir1
- 文件file1的拥有者是root,所属群组是root,权限644
- 只有root账号拥有读写权限,不可执行;其他组和其他人只有读的权限
- 文件file2的拥有者是user1,所属群组是group1,权限754
- user1可读可写可执行该文件
- 同group1群组下的user2、user3等用户,可读可执行,但不可写(不可修改)
- 非group1群组下的,亦即其他人,只能读,不可写和执行
- 目录dir1的拥有者是user2,所属群组是group1,权限754
- user2可以在本目录进行任何操作
- 同group1群组下的其他账号,可进入该目录,可读可执行,但不能写
- 其他组的账号,虽然有r读权限,但是由于没有x执行权限,也就是无法进入该目录,只能简单查一下该目录下有啥
对于目录来说,最大权限是777
对于文件来说,最大权限是666 ,对所有用户读写权限全开
另外,在Linux系统中,root用户是神,拥有任何权限,所以一般人都不会以root目录来进行日常操作,避免误删一些系统文件等操作,严重会直接导致机器瘫痪
修改文件/目录权限与所属
chmod
改变文件的权限chown
改变文件拥有者chgrp
改变文件所属群组
首先是chmod,我们直接看最常用的修改法
修改文件权限
-R可选 递归 该目录下所有的文件/目录都一起更改
chmod [-R] [权限数字] [文件/目录]
修改文件拥有者
用户必须是已经存在系统中的账号 存在/etc/passwd中
chown [-R] [账号:组名] [目录/文件]
修改所属群组
群组必须是已经存在系统中的群组 存在/etc/group
chgrp [-R] [新的群组] [目录/文件]
总结
- chmod 修改文件或者目录和权限
- chown 修改文件或者目录的拥有者
- chgrp 修改文件或者目录的所属群组
问题
- 使用ls -al /root命令列出root目录下的所有文件(包括隐藏文件)和目录
- 说一说文件.bash_profile(前面的.表示是隐藏文件)的权限,并用3位数字表示,文件的拥有者
- 使用命令cp .bash_profile /tmp/.bash_profile复制文件至/tmp目录,请用命令chmod更改/tmp/.bash_profile的权限为745,文件和组的拥有者为ftp,并使用ls命令打印出来
原创文章,转载请注明出处:http://b.nwumba.cn/article/99/