如何使用chmod和chown命令

时间:2020-01-09 10:39:50  来源:igfitidea点击:

在Linux/Unix操作系统下如何使用chmod和chown命令?
使用chown命令更改文件所有者和组信息。
我们运行chmod命令命令来更改文件访问权限,例如读取,写入和访问。
本教程说明如何在Linux或类似Unix的系统上使用chmod和chown命令。

了解chmod和chown命令的文件权限

可以使用文件权限来控制对其文件的访问。
系统管理员可以基于文件许可权实施安全策略。
所有文件具有三种类型:

  • 所有者创建文件的人或进程。
  • "组"所有用户都有一个主要组,他们拥有文件,这对于共享文件或授予访问权限很有用。
  • "其他"不是所有者或组成员的用户。另外,被称为世界许可。

读取(r),写入(w)和执行(x)权限

我们可以在文件和目录上设置以下权限:

权限文件目录
r读取访问/查看文件用户可以读取文件。换句话说,他们可以运行ls命令列出文件夹/目录的内容。
w编写访问/更新/删除文件用户可以从目录中更新,写入和删除文件。
x执行权限。以命令身份运行文件/脚本用户可以以命令身份执行/运行文件,并且他们也具有r权限。
-无权访问。当您想删除r,w和x权限时所有访问都将被删除。

请注意,权限优先级由内核决定如下:

User permissions -> Group permissions -> Other permissions

这意味着用户权限将覆盖组权限,而组权限将覆盖其他权限。

查看Linux/Unix文件的权限和所有权

运行ls命令:

ls -l
# Show information about a file named file1 #
ls -l file1
ls -l /path/to/file1
# Get information about a directory named dir1 #
ls -ld dir1
ls -l -d /path/to/dir1

例如,我们可以列出/etc/hosts和/etc /目录的权限,如下所示:

ls -l /etc/hosts

将-d选项传递给ls列出目录本身,而不是目录内容:

-rw-r--r-- 1 root root 742 Jul  1 14:39 /etc/host
ls -l -d /etc/
drwxr-xr-x 175 root root 12288 Jul 30 08:53 /etc

从上面的输出中可以清楚地看到,第一个字符表示" drwxr-xr-x"和" -rw-rr"中的文件类型,接下来的9个字符是实际的文件权限。

rw-rr文件和drwxr-xr-x目录权限说明

第一个字符描述
-常规文件。
b阻止特殊文件。
c字符特殊文件。
d目录。
l符号链接。
pFIFO。
sSocket。
wWhiteout。

使用stat命令显示文件权限

运行以下命令:

stat file1
stat dir1
stat /etc/passwd
stat /etc/resolv.conf
File: /etc/passwd
  Size: 3100      	Blocks: 8          IO Block: 4096   regular file
Device: fd02h/64770d	Inode: 25954314    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-07-29 23:09:01.865822913 +0530
Modify: 2020-07-02 19:16:43.743727913 +0530
Change: 2020-07-02 19:16:43.747727898 +0530
Birth: 

GUI显示文件权限:

chown命令

chown命令更改给定文件的用户和/或组所有权。
语法为:

chown owner-user file 
chown owner-user:owner-group file
chown owner-user:owner-group directory
chown options owner-user:owner-group file

例子

首先,列出demo.txt的权限,执行:

# ls -l demo.txt

输出示例:

-rw-r--r-- 1 root root 0 Aug 31 05:48 demo.txt

在此示例中,将文件所有权更改为Hyman user并列出权限,运行:

# chown Hyman demo.txt
# ls -l demo.txt

输出示例:

-rw-r--r-- 1 Hyman root 0 Aug 31 05:48 demo.txt

在下一个示例中,所有者设置为Hyman,后跟冒号,并且group onshipship也设置为Hyman group,运行:

# chown Hyman:Hyman demo.txt
# ls -l demo.txt

输出示例:

-rw-r--r-- 1 Hyman Hyman 0 Aug 31 05:48 demo.txt

在此示例中,仅更改文件组。
为此,给出了冒号和后面的GROUP-NAME ftp,但是省略了所有者,仅更改了文件组:

# chown :ftp demo.txt
# ls -l demo.txt

输出示例:

-rw-r--r-- 1 Hyman ftp 0 Aug 31 05:48 demo.txt

请注意,如果仅给出一个冒号,或者NEW-OWNER为空,则所有者和组均不会更改:

# chown : demo.txt

在此示例中,将/foo的所有者更改为root,执行:

# chown root /foo

同样,还要将其组更改为httpd,执行:

# chown root:httpd /foo

将/foo和子文件的所有者更改为root,运行:

# chown -R root /u

其中:

  • -R递归地更改目录及其内容的所有权。

chmod命令

语法为:

chmod permission file
chmod permission dir
chmod UserAccessRightsPermission file

我们为用户使用以下字母:

  • 用户的u
  • 组的g
  • 为其他人o
  • 所有的a

我们可以使用以下字母设置或删除(用户访问权限)文件权限:

  • +用于添加
  • -删除
  • =设置确切权限

文件许可信如下:

  • r只读
  • w只写
  • x仅用于执行

现在,我们可以根据以上字母使用符号方法来更改文件权限。

例子

在名为config.php的文件上删除组和其他人的读写权限:

$ ls -l config.php
# State 'who' : g (group) and o (others)
# State what to do with 'who': - (remove)
# State permissions for 'who': r (read) and w (write) 
$ chmod -v go-rw config.php
$ ls -l config.php
$ stat config.php

让我们为所有人/所有人添加阅读权限(a)。
换句话说,向用户,组和其他人授予读取权限:

$ chmod a+r file.pl

删除所有人的执行权限(a):

$ chmod a-x myscript.sh

为所有人添加读取和执行权限(a):

$ chmod a+rx pager.pl

接下来,为用户设置读写权限,为组设置读取权限,并删除其他用户的所有访问权限:

$ chmod u=rw,g=r,o= birthday.cgi

在此文件示例中,设置用户和组的读写权限:

$ chmod ug=rw /var/www/html/data.php