一些Linux Shell中的权限相关知识总结

一个文件一经创建,就具有三种访问方式:
1) 读,可以显示该文件的内容。
2) 写,可以编辑或删除它。
3) 执行,如果该文件是一个s h e l l脚本或程序。
按照所针对的用户,文件的权限可分为三类:
1) 文件属主,创建该文件的用户。
2) 同组用户,拥有该文件的用户组中的任何用户。
3) 其他用户,即不属于拥有该文件的用户组的某一用户

文件的全部信息包括以下:

  • 文件的位置。
  • 文件类型。
  • 文件长度。
  • 哪位用户拥有该文件,哪些用户可以访问该文件。
  • 节点。
  • 文件的修改时间。
  • 文件的权限位。

可以通过ls -l来查看这些信息,如下面

[root@ksharpdabu home]# ls -l
total 24
drwxr-xr-x 2 root root 4096 Mar 15 10:00 Bakblog
-rwx------ 1 root root 786 Mar 15 10:18 backupblog.sh
-rw-r--r-- 1 root root 614 Mar 16 18:38 bk.sh
drwx------ 2 www www 4096 Feb 28 17:04 www
drwxr-xr-x 7 www www 4096 Mar 15 10:04 wwwroot

total24:表示该目录下所有文件所占用的空间

前面的一横杠表示普通文件,以下是文件类型:

  • d 目录。
  • l 符号链接(指向另一个文件)。
  • s 套接字文件。
  • b 块设备文件。
  • c 字符设备文件。
  • p 命名管道文件。
  • - 普通文件,或者更准确地说,不属于以上几种类型的文件。

-rw-r--r--:表示文件的相关权限,除去前面的横杠,总共九个字符,

分别对应9个权限,前三个字符代表文件属主权限,中间三个代表同组用户权限,后面三个字符代表其他用户权限。每个人对文件都有三种操作

  1. r 读权限
  2. w 写/更改权限
  3. x 执行该脚本或程序的权限

当用户创建一个新的 文件时候,系统为了安全考虑,一般不会给文件的创建者执行的权限,即x。,对于文件属主来说,在只有读权限位被置位的情况下,仍然可以通过文件重定向的方法向该文件写入。注意能否删除一个文件还依赖于该文件所在目录权限位的设置。我个人认为是取文件所在目录和文件自身权限的交集。
件所在目录权限位的设置。 一些举例:

权限所代表的含义

  • r-- --- --- 文文件属主可读,但不能写或执行
  • r-- r-- --- 文文件属主和同组用户(一般来说,是文件属主所在的缺省组)可读
  • r-- r-- r- - 文任何用户都可读,但不能写或执行
  • rwx r-- r- - 文文件属主可读、写、执行,同组用户和其他用户只可读
  • rwx r-x --- 文文件属主可读、写、执行,同组用户可读、执行
  • rwx r-x r- x 文文件属主可读、写、执行,同组用户和其他用户可读、执行
  • rw- rw- --- 文文件属主和同组用户可读、写
  • rw- rw- r- - 文文件属主和同组用户可读、写,其他用户可读
  • rw- rw- --- 文文件属主和同组用户及其他用户读可以读、写,慎用这种权限设置,因为任何用户都可以写入该文件

改变文件或目录的权限的方法,以下命令常用,切记

  • chmod命令的一般格式为:
  • chmod [who] operator [permission] filename
  • w h o的含义是:
  • u 文件属主权限。
  • g 同组用户权限。
  • o 其他用户权限。
  • a 所有用户(文件属主、同组用户及其他用户)。
  • o p e r a t o r的含义:
  • + 增加权限。
  • - 取消权限。
  • = 设定权限。
  • p e r m i s s i o n的含义:
  • r 读权限。
  • w 写权限。
  • x 执行权限。
  • s 文件属主和组s e t - I D。
  • t 粘性位*。
  • l 给文件加锁,使其他用户无法访问。
  • u,g,o 针对文件属主、同组用户及其他用户的操作。
  • *在列文件或目录时,有时会遇到“ t”位。“t”代表了粘性位。如果在一个目录上出现 “t”位,这就意味着该目录中的 文件只有其属主才可以删除,即使某个同组用户具有和属主
        同等的权限。不过有的系统在这一规则上并不十分严格。
        如果在文件列表时看到“ t”,那么这就意味着该脚本或程序在执行时会被放在交换区(虚
        存)。不过由于当今的内存价格如此之低,大可不必理会文件的“ t”的使用。

举例:修改myfile的权限

命令                                               结果                                                含义
    chmod a-x myfile                rw- rw- rw-                          收回所有用户的执行权限
    chmod og-w myfile             rw- r-- r- -                            收回同组用户和其他用户的写权限
    chmod g+w myfile              rw- rw- r- -                           赋予同组用户写权限
    chmod u+x myfile               rwx rw- r- -                          赋予文件属主执行权限
    chmod go+x myfile             rwx rwx r- x                         赋予同组用户和其他用户执行权限

当我们创建test文件时,它的权限如下:

-rw-r--r--   1    dave     admin       614 Mar 16 18:38

我希望自己具有执行权限,而取消其他所有用户的读权限,修改如下;

#chmod u+x o-r test

test的文件权限就变为

-rwxr-----   1    dave     admin       614 Mar 16 18:38

如果希望某个脚本文件对你自己来说可执行,而且你对该文件的缺省权限很放心,那么只要使它对你来说具有执行权限即可。

# chmod u+x dt

权限的绝对模式(就是用数字表示权限)

chmod命令绝对模式的一般形式为:

chmod [mode] file

其中mode是一个八进制数。r就是4,w就是2,x就是1.

文件属主               同组用户                       其他用户
    r w x                      r w x                                 r w x
    4 + 2 + 1               4 + 2 + 1                     4 + 2 + 1

7                              7                                      7

修改test文件为rwxr--r--

#chmod 744 test

修改mydir目录极其子目录权限为rwxr--r--

#chmod -R 744 mydir       //其中的-R表示递归,就是把mydir目录下的所有文件,子目录都改为744

目录:

目 录的权限位和文件有所不同。目录的读权限位意味着可以列出其中的内容。写权限位意味着可以在该目录中创建文件,如果不希望其他用户在你的目录中创建文件, 可以取消相应的写权限位。执行权限位则意味着搜索和访问该目录。如果把同组用户或其他用户针对某一目录的权限设置为- - x,那么他们将无法列出该目录中的文件。如果该目录中有一个执行位置位的脚本或程序,只要用户知道它的路径和文件名,仍然可以执行它。用户不能够进入该目 录并不妨碍他的执行。目录的权限将会覆盖该目录中文件的权限。即取他们的交集

注意,c h m o d命令不进行必要的完整性检查,可以给某一个没用的文件赋予任何权限,但
chmod 命令并不会对所设置的权限组合做什么检查。因此,不要看到一个文件具有执行权限,
就认为它一定是一个程序或脚本。

suid和guid这里就不介绍了,可自行google文档,或书籍

  • chown:修改文件所有者
  • chgrp:修改文件所有组

c h o w n命令的一般形式为:

chmod -R -h owner file

- R选项意味着对所有子目录下的文件也都进行同样的操作。- h选项意味着在改变符号链接文件的属主时不影响该链接所指向的目标文件。

chgrp和chown用法差不多,可自行man

查看自己所属于的组的命令:

  #group或#id

查看其它用户属于哪个组命令:

#group 用户名
(0)

相关推荐

  • linux修改目录和文件权限的简单命令解释

    今天遇到的问题,如何一个用户如www的权限复制给我的用户? 目录的权限表示:dwrxr--r-- 其中第一个字符 d代表目录, -代表字符 w代表可写,r代表可读 x代表可执行 数字为4,2,1其中第一组是文件或者目录所有者权限,第二组代表当前用户所在用户组,第三组是其他用户组的权限所以控制文件的权限是精确到组的 用 chmod 权限 目录 复制代码 代码如下: chmod 777 testchmod u+w test

  • 简析Linux中如何改变文件或目录的访问权限

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作.可执行权限表示允许将该文件作为一个程序执行.文件被创建时,文件所有者自动拥有对该文件的读.写和可执行权限,以便于对文件的阅读和修改.用户也可根据需要把访问权限设置为需要的任何组合. 有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户.其他用户.所有者一般是文件的

  • Linux下mysql新建账号及权限设置方法

    1.权限赋予 说明:mysql部署在服务器A上,内网上主机B通过客户端工具连接服务器A以进行数据库操作,需要服务器A赋予主机B操作mysql的权限 1.1 在服务器A上进入mysql,假设在服务器A上mysql的账户是root: 复制代码 代码如下: mysql - u root -p 然后回车键入密码! 1.2 赋予主机B操作数据库的权限 复制代码 代码如下: mysql> grant usage on *.* to username@192.168.0.1 identified by 'pa

  • Linux系统下如何查看及修改文件读写权限

    查看文件权限的语句: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有10位数 其中: 最前面那个 - 代表的是类型 中间那三个 rw- 代表的是所有者(user) 然后那三个 rw- 代表的是组群(group) 最后那三个 r-- 代表的是其他人(other) 然后我再解释一下后面那9位数: r 表示文件可以被读(read) w 表示文件可以被写(write) x 表示文件可以被执行(如果它是程序的话)

  • linux服务器下添加用户和删除用户的命令

    其中各选项含义如下: -c comment 指定一段注释性描述. -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录. -g 用户组 指定用户所属的用户组. -G 用户组,用户组 指定用户所属的附加组. -s Shell文件 指定用户的登录Shell. -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号. 用户名 指定新账号的登录名. 例如: 复制代码 代码如下: # useradd –d /usr/sam -m sam 此命令创建了

  • linux中如何添加用户并赋予root权限详解

    一.linux添加用户并赋予root权限 1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser eric //添加一个名为eric的用户 #passwd eric//修改密码 Changing password for user eric. New UNIX password: //在这里输入新密码 Retype new UNIX password: //再次输入新密码 passwd: all authentication tokens updated succe

  • 详解Linux添加/删除用户和用户组

    本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数.废话不多说,下面我们来看一下. 1.建用户: adduser phpq                             //新建phpq用户 passwd phpq                               //给phpq用户设置密码 2.建工作组 groupadd test                          //新建test工作组 3.新建用户同时增加工作组 useradd -g te

  • PHP调用Linux命令权限不足问题解决方法

    业务背景:  yourcmd为我的linux程序,它对权限要求非常严格,当用php去执行yourcmd程序 系统:CentOS 6.3 apache是php的执行用户 用exec函数去执行linux系统上的程序/usr/local/yourcmd/sbin/yourcmd php代码如下: 复制代码 代码如下: <?php $conf_file = "/var/www/html/webroot/test.tmp"; $command = "sudo /usr/local

  • Linux给普通用户加超级用户权限的方法

    问题假设用户名为:ali如果用户名没有超级用户权限,当输入 sudo + 命令 时, 系统提示: 复制代码 代码如下: ali is not in the sudoers file.  This incident will be reported. 解决1. 进入超级用户模式.即输入"su",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式. 2. 添加文件的写权限. 复制代码 代码如下: chmod u+w /etc/sudoers 3. 编辑/etc/sudoers文件.

  • Linux下SFTP用户权限设置条件及实现命令

    众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的,今天的教程就是教大家进行SFTP用户权限设置. 必要条件: 你的openssh-server版本至少得失4.8p1, 因为配置权限需要版本添加的新配置项ChrootDirectory来完成. 如何查看自己服务器上的ssh版本?大家可以尝试以下命令: $ ssh -V 具体实施步骤: 1. 我们需要创建一个用户组,专门用于sftp用户 $ groupadd sftpusers 2. 我们创建一个用户test $ u

随机推荐