• linux chmod命令和chown命令


    一、chmod及文件权限

    1、了解文件权限

    root账户新建一个目录permission,在该目录新建一个文件file,通过ll就可以查看其权限。

    root@development:~# cd permission/
    root@development:~/permission# touch file
    root@development:~/permission# ls
    file
    root@development:~/permission# ll
    total 8
    drwxr-xr-x  2 root root 4096 Mar 19 00:33 ./
    drwx------ 25 root root 4096 Mar 19 00:33 ../
    -rw-r--r--  1 root root    0 Mar 19 00:33 file
    root@development:~/permission# 

    可见一共有十位数,其中第一个-代表的是类型,比如./的类型是d就是目录。

    从第二个开始,依次三个rw-代表的是所有者(user)拥有的权限。

    再依次三个r--代表的是群组(group)拥有的权限。

    最后三个r--代表的是其他人(other)拥有的权限

    rwx-解释如下:

    r:表示文件可以被读(read)

    w:表示文件可以被写(write)

    x:表示文件可以被执行,目录的话可以被搜索。

    -:表示相应的权限还没有被授予

    2、数字表示rwx

    r ----------4

    w ----------2

    x ----------1

    - ----------0

    原理:将rwx看成是二进制的数,有用1表示,没有用0表示,那么rwx r-x r--就可以表示成:111 101 100,将其转换成为一个十进制数就是:754。

    3、权限操作

    + 表示添加权限

    - 表示删除权限

    = 重置权限

    4、常见权限

    -rw------- (600) 只有所有者才有读和写的权限。

    -rw-r--r-- (644) 只有所有者才有读和写的权限,群组和其他人只有读的权限。

    -rw-rw-rw- (666)每个人都有读写的权限

    -rwx------ (700) 只有所有者才有读,写和执行的权限。

    -rwx--x--x (711) 只有所有者才有读,写和执行的权限,群组和其他人只有执行的权限。

    -rwxr-xr-x  (755) 只有所有者才有读,写,执行的权限,群组和其他人只有读和执行的权限。

    -rwxrwxrwx (777) 每个人都有读,写和执行的权限

    5、目录相关的文件权限

    如果有文件夹/a/b/c

    查看权限

    执行ls -l /a/b查看的并不是b的权限,而是c的权限。

    • ls -l /a查看的是b文件的权限
    • ls -l /a/b 查看的是c文件的权限
    • ls -l /a/b/c 查看的是c文件的权限

    补充内容:知道这点很重要,举一个实际应用中的例子。

    我曾在ssh登录时日志报错:/var/empty/sshd must be owned by root and not group or world-writable。

    此时我就要看/var/empty/sshd的权限了。

    用#ll /var/empty/sshd去查结果是total 0,代表里面没有文件。

    而真正应该用的命令是#ll /var/empty,去查看它的上级目录。

    然后就可以看到结果是:

    total 0

    drwxrwxrwx. 2 root root 6 May 13 03:41 sshd

    修改权限和查看权限不同

    • chmod 700 /a 修改的是a文件的权限
    • chmod 700 /a/b 修改的是b文件的权限
    • chmod 700 /a/b/c修改的是c文件的权限。

    补充内容:知道这点修改权限和查看权限不同也很重要,还是上面的例子。

    我要修改/var/empty/sshd这个目录的权限,我需要用

    #chmod 711 /var/empty/sshd去修改。

    查看修改好的权限用#ll /var/empty查看。

    6、修改文件权限

    先举例:

    # chmod o+w file:表示给其他人授予写file这个文件的权限

    # chmod go-rw file:表示删除群组和其他人对file这个文件的读和写的权限

    # chmod go-w+x mydir:拒绝组成员和其他人创建或删除mydir(go-w)中文件的权限,允许组成员和其他人搜索mydir,或在路径名(go+x)中使用它,等价于

    chmod  g-w  mydir
    chmod  o-w  mydir
    chmod  g+x  mydir
    chmod  o+x  mydir

    解释:
    u:代表文件所有者(user)

    g:代表所有者所在的群组(group)

    o:代表其他人,但不是u和g(other)

    a:a和一起指定ugo效果一样

    7、修改目录权限

    如果要一次修改某个目录下所有文件的权限,包括子目录中的文件权限。需要使用-R参数。

    # chmod 700 /srv/file #仅把file目录的权限设置为700
    # chmod -R 744 /srv/file #将整个/srv/file目录和其子目录中所有文件权限设置为744

    二、chowm和文件所有权

    文件和目录权限可通过chomd来修改,文件和目录的所有权及所属用户组也可通过chown来修改。

    root账户新建一个目录permission,在该目录新建一个文件file,通过ll就可以查看其权限。 

    [root@yl-web-test ~]# mkdir permission
    [root@yl-web-test ~]# cd permission/
    [root@yl-web-test permission]# ls
    [root@yl-web-test permission]# touch file
    [root@yl-web-test permission]# ll
    total 0
    -rw-r--r--. 1 root root 0 Aug  6 09:17 file

    标红的root root表示file文件的所属用户组为root,所有者为root。

    chown语法:

    chown [选项]... [所有者][:[组]] 文件...

    接下来简单介绍如何修改文件的所属用户组和所有者。

    1、修改file文件的所有者为lxy

    [root@yl-web-test permission]# chown lxy file
    [root@yl-web-test permission]# ll
    total 0
    -rw-r--r--. 1 lxy root 0 Aug  6 09:17 file

    2、修改file文件的用户组为lxy

    [root@yl-web-test permission]# chown root file
    [root@yl-web-test permission]# ll
    total 0
    -rw-r--r--. 1 root root 0 Aug  6 09:17 file
    [root@yl-web-test permission]# chown :lxy file
    [root@yl-web-test permission]# ll
    total 0
    -rw-r--r--. 1 root lxy 0 Aug  6 09:17 file

    3、同时修改文件的所有者和用户组

    [root@yl-web-test permission]# chown :root file
    [root@yl-web-test permission]# ll
    total 0
    -rw-r--r--. 1 root root 0 Aug  6 09:17 file
    [root@yl-web-test permission]# chown lxy:lxy file
    [root@yl-web-test permission]# ll
    total 0
    -rw-r--r--. 1 lxy lxy 0 Aug  6 09:17 file

    4、同时修改文件夹和其子文件的所属用户组和所有者,需要用-R参数。

    假设file是一个目录,里面有一个a.txt的文件。它们的所有者和用户组如下,都是root:

    [root@yl-web-test permission]# cd file/
    [root@yl-web-test file]# touch a.txt
    [root@yl-web-test file]# ll
    total 0
    -rw-r--r--. 1 root root 0 Aug  6 09:40 a.txt
    [root@yl-web-test file]# cd ..
    [root@yl-web-test permission]# ll
    total 0
    drwxr-xr-x. 2 root root 18 Aug  6 09:40 file

    现将file目录和里面的a.txt文件的所有者和用户组都改为lxy,如下

    [root@yl-web-test permission]# chown -R lxy:lxy file
    [root@yl-web-test permission]# ll
    total 0
    drwxr-xr-x. 2 lxy lxy 18 Aug  6 09:40 file
    [root@yl-web-test permission]# cd file/
    [root@yl-web-test file]# ll
    total 0
    -rw-r--r--. 1 lxy lxy 0 Aug  6 09:40 a.txt

    本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/4350212.html有问题欢迎与我讨论,共同进步。

  • 相关阅读:
    Iterable,Iterator和forEach
    集合的线程安全性
    Servlet生命周期
    JavaWeb应用的生命周期
    将博客搬至CSDN
    (五)新类库的构件
    Python input和print函数
    python----调试
    Excel决定吃什么
    MATLAB—地图
  • 原文地址:https://www.cnblogs.com/starof/p/4350212.html
Copyright © 2020-2023  润新知