Linux文件权限管理

部分转自实验楼。

在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。

查看文件权限

我们之前已经很多次用到 ls 命令了,如你所见,我们用它来列出并显示当前目录下的文件,当然这是在不带任何参数的情况下,它能做的当然不止这么多,现在我们就要用它来查看文件权限。使用较长格式列出文件:

$ ls -l
image.png

image.png

可能你还是不太明白,比如第一项文件类型和权限那一堆东西具体指什么,链接又是什么,何为最后修改时间,下面一一道来:

image.png
  • 文件类型
    关于文件类型,这里有一点你必需时刻牢记 Linux 里面一切皆文件,正因为这一点才有了设备文件( /dev 目录下有各种设备文件,大都跟具体的硬件设备相关)这一说。 socket:网络套接字;pipe:管道;软链接文件:链接文件是分为两种的,另一种当然是“硬链接”(硬链接不常用,而软链接等同于 Windows 上的快捷方式)。
  • 文件权限
    读权限,表示你可以使用 cat 之类的命令来读取某个文件的内容;写权限,表示你可以编辑和修改某个文件; 执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同 Windows 上的 exe 后缀的文件,不过 Linux 上不是通过文件后缀名来区分文件的类型。你需要注意的一点是,一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件。
  • 链接数
    链接到该文件所在的 inode (索引)结点的文件名数目。
  • 文件大小
    以 inode 结点大小为单位来表示的文件大小,你可以给 ls 加上 -lh 参数来更直观的查看文件的大小。

显示除了 .(当前目录)和 ..(上一级目录)之外的所有文件,包括隐藏文件(Linux 下以 . 开头的文件为隐藏文件)。

image.png

当然,你可以同时使用 -A 和 -l 参数:

$ ls -Al

查看某一个目录的完整属性,而不是显示目录里面的文件属性:

$ ls -dl <目录名>

显示所有文件大小,并以普通人类能看懂的方式呈现:

$ ls -AsSh
image.png

其中小 s 为显示文件大小,大 S 为按文件大小排序,若需要知道如何按其它方式排序,请使用“man”命令查询。

变更文件所有者

假设目前是 shiyanlou 用户登录,新建一个文件,命名为 “ iphone6 ”:

$ touch iphone6
image.png

ll 和 ls -l 的功能是相同的, ll 是 ls -l 的别名。
现在,使用以下命令变更文件所有者为 yyh :

$ sudo chown yyh iphone6
image.png

修改文件权限

如果你有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限做修改,这里有两种方式:

  • 方式一:二进制数字表示
image.png

每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)对应一个 " rwx ",也就是一个 “ 7 ” ,所以如果要将文件“ iphone6 ”的权限改为只有自己可以用那么就这样:

为了演示,先在文件里加点内容(echo string: 输出字符串,>: I/O重定向指令):

$ echo "echo \"hello shiyanlou\"" > iphone6

然后修改权限:

$ chmod 600 iphone6

现在,其他用户已经不能读这个“ iphone6 ”文件了。

  • 方式二:加减赋值操作
    完成上述相同的效果,你可以:
$ chmod go-rw iphone6

g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增加和去掉相应的权限。所以上述语句的含义是去掉用户组和其它用户的读写权限。

adduser 和 useradd 的区别是什么?

答:useradd 只创建用户,创建完了用 passwd lilei 去设置新用户的密码。adduser 会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作

你可能感兴趣的:(Linux文件权限管理)