文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。
Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。
在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
一、查看文件权限
ls 命令的含义是list显示当前目录中的文件名字。
使用较长格式列出文件:
$ mkdir demo
$ ls -l
先用 mkdir 指令创建一个文件夹,然后用 ls 指令查看文件夹,如下示:
drwxrwxr-x 解释:
1.第一个字符代表文件(-)、目录(d)、软链接(l)、块设备(b)、字符设备(c)、socket(s)、p(管道)、。
2. 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)
3.第一组rwx:文件所有者的权限是读、写和执行
4.第二组rwx:与文件所有者同一组的用户的权限是读、写和执行
5.第三组r-x:不与文件所有者同组的其他用户的权限是读和执行不能写
也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7
文件类型
Linux 里面一切皆文件,正因为这一点才有了设备文件( /dev 目录下有各种设备文件,大都跟具体的硬件设备相关)这一说。 socket:网络套接字。pipe 管道。软链接文件:链接文件是分为两种的,另一种是“硬链接”(软链接等同于 Windows 上的快捷方式)。
文件权限
读权限,表示你可以使用 cat <file name> 之类的命令来读取某个文件的内容;写权限,表示你可以编辑和修改某个文件; 执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同 Windows 上的 exe 后缀的文件,不过 Linux 上不是通过文件后缀名来区分文件的类型。一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。
链接数
链接到该文件所在的 inode 结点的文件名数目
文件大小
以 inode 结点大小为单位来表示的文件大小,可用 ls 加上 -lh 参数来查看。
二、变更文件所有者
假设目前是byte用户,新建一个文件,命名为test。
#注意,当前用户必须是byte,如果不是,切换至byte。
$ su -l byte
$ cd /home/byte
$ touch test
可见,文件得所有者是byte
现在, 切换用户至shiyanlou(实验楼,网上搜可知)用户身份,执行以下命令。
$ cd /home/byte
$ ls test
$ sudo chown shiyanlou test
现在查看,发现文件所有者为shiyanlou。
三、修改文件权限
修改文件权限有两种方法:
方法一:二进制数字表示
每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)对应一个 " rwx ",也就是一个 “ 7 ” ,所以如果我要将文件 test 的权限改为只有我自己可以用那么就这样:
$ chmod 600 test
现在其他用户已经不能读 test 文件了。
方法二:加减赋值法
完成上述相同的效果,可以执行以下命令:
$ chmod go-rw test
g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增加和去掉相应的权限。
补充
adduser 和 useradd 的区别:
useradd 只创建用户,创建完了用 passwd byte去设置新用户的密码。adduser 会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。