如何使用chmod和chown命令
在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 | 符号链接。 |
p | FIFO。 |
s | Socket。 |
w | Whiteout。 |
使用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