linux的x权限
1. linux权限管理之基本权限
(Linux权限管理之基本权限-慕课网 http://www.imooc.com/learn/481 )
一、文件基本权限
1、基本权限的修改
-rw-r--r--
- 文件类型(- 文件 d 目录 l 软链接文件)
rw- u所有者
r-- g所属组
r-- o其他人
r 读
w 写
x 执行
chmod命令
chmod [选项] 模式 文件名
- 选项
-R 递归
- 模式
[ugoa] [+-=] [rwx]
[mode=421]
chmod u+x cangls.av
chmod g+w o+w furong.av
chmod a=rwx fengjie.av
#创建新文件
[root@localhost ~]# touch cangls.av
[root@localhost ~]# ll
#所有者添加执行权限
[root@localhost ~]# chmod u+x cangls.av
[root@localhost ~]# ll
#所属组和其他人添加写权限
[root@localhost ~]# chmod g+w,o+w cangls.av
[root@localhost ~]# ll
#所有者减去执行权限,所属组和其他人减去写权限
[root@localhost ~]# chmod u-x,g-w,o-w cangls.av
[root@localhost ~]# ll
#所有者添加读写执行权限,所属组添加读写权限
[root@localhost ~]# chmod u=rwx,g=rw cangls.av
[root@localhost ~]# ll
#所有人赋予读写权限
[root@localhost ~]# chmod a=rw cangls.av
[root@localhost ~]# ll
r ----4
w ----2
x ----1
rwxr-xr-x
7 5 5
#所有者赋予读写执行权限,所属组和其他人赋予读执行权限
[root@localhost ~]# chmod 755 cangls.av
[root@localhost ~]# ll
#改为普通文件权限
[root@localhost ~]# chmod 644 cangls.av
[root@localhost ~]# ll
777(文件最高权限)
644(普通文件权限)
755(所有者赋予读写执行权限,所属组和其他人赋予读执行权限)
r:读取文件的内容(cat more head tail)
w:编辑、新增、修改文件内容(vi echo),但是不包含删除文件;
x:可执行
r:可以查询目录下文件名(ls)
w:具有修改目录结构的权限。如新建文件和目录,删除此目录下文件和目录,重命名此目录下文件和目录,剪切(touch rm mv cp)
x:可以进入目录(cd)
对文件来讲:最高权限是x(执行)
对目录来讲:最高权限是w(写),能赋予的权限只有0,5,7
#创建普通用户user1
[root@localhost ~]# useradd user1
#创建普通用户密码user1
[root@localhost ~]# passwd user1
更改用户 user1 的密码 。
新的 密码:123
无效的密码: WAY 过短
无效的密码: 过于简单
重新输入新的 密码:123
passwd: 所有的身份验证令牌已经成功更新。
chown 用户名 文件名
例如:chown ds fengj.av
chgrp 组名 文件名
例如:chgrp group1 fengj.av
要求:
拥有一个av目录
让加藤老师拥有所有的权限
让本课程学员有查看的权限
其他所有人不许查看这个目录
#创建目录
[root@localhost ~]# mkdir av
#查看
[root@localhost ~]# ll -d av
[root@localhost ~]# useradd jt
[root@localhost ~]# passwd jt
更改用户 jt 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
#添加组
[root@localhost ~]# groupadd user
#把user1用户加到user组里面
[root@localhost ~]# gpasswd -a user1 user
Adding user user1 to group user
[root@localhost ~]# chown jt:user av
[root@localhost ~]# ll -d av
#其他人改为0权限
[root@localhost ~]# chmod 750 av
[root@localhost ~]# ll -d av
#查看默认权限
[root@localhost ~]# umask
0022
第一位0:文件特殊权限
022:文件默认权限
文件默认不能建立为执行文件,必须手工赋予执行权限;
所以文件默认权限最大为666;
默认权限需要换算成字母再相减;
建立文件之后的默认权限,为666减去umask值;
例如:
文件默认最大权限666,umask值022;
-rw-rw-rw-减去-----w--w-等于-rw-r--r--
例如:
文件默认最大权限666,umask值033
-rw-rw-rw-减去-----wx-wx等于-rw-r--r--
目录的默认权限最大为777;
默认权限需要换算成字母再相减;
建立文件之后的默认权限,为777减去umask值;
例如:
目录默认最大权限为777,umask值022;
-rwxrwxrwx减去-----w--w-等于-rwxr-xr-x
临时修改
umask 0002
永久修改
vi /etc/profile
2. 在Linux文件权限中,有R,W,X,S,T.我想知道s是什么意思
s是源文件,目标文件做软链接,与只共享可执行文件的快捷方式不同,Linux几乎可以通过链接的文件共享任何类型的文件,权限设置方法。
1.首先连接到Linux主机并输入Linux命令行状态,等待输入指令。
3. Linux 权限 chmod u+x
chmod u+x
chmod是权限管理命令change the permissions mode of a file的缩写。。
u代表所有者,
x代表执行权限。
4. linux可读可写权限
1.可读权限r
表示具有读取/阅读文件内容的权限。
2.可写权限w
表示具有新增、修改文件内容的权限。
①如果没有r,用vi编辑器,输入“:wq!"可以强制覆盖,但原文件内容会被清除;因此可以使用echo追加内容到文件。
②删除文件(修改文件名等)的权限是受父目录的权限控制,和文件本身的权限无关,文件名在父目录的block里。
3.可执行权限x
表示具有执行文件的权限。
①文件本身要能够执行。
②普通用户必须还要有r权限才能够执行,无r就不能执行。
③root即使没有r权限,只要有x权限就能执行。
④root用户位没有执行权限,但只要其他权限位还有x权限,那它就能执行。
5. linux 下 文件的X权限有什么用
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限
在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问;允许一个预先指定的用户组中的用户访问;允许系统中的任何用户访问。同时,用户能够控制一个给定的文件或目录的访问程度。一个文件活目录可能有读、写及执行权限。当创建一个文件时,系统会自动地赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件。文件所有者可以将这些权限改变为任何他想指定的权限。一个文件也许只有读权限,禁止任何修改。文件也可能只有执行权限,允许它想一个程序一样执行。
三种不同的用户类型能够访问一个目录或者文件:所有着、用户组或其他用户。所有者就是创建文件的用户,用户是所有用户所创建的文件的所有者,用户可以允许所在的用户组能访问用户的文件。通常,用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。最后,用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是other用户类。
每一个用户都有它自身的读、写和执行权限。第一套权限控制访问自己的文件权限,即所有者权限。第二套权限控制用户组访问其中一个用户的文件的权限。第三套权限控制其他所有用户访问一个用户的文件的权限,这三套权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。
我们可以用-l参数的ls命令显示文件的详细信息,其中包括权限。如下所示:
yekai@kebao:/media/sda5/软件压缩/Linux$ ls -lh
总用量 191M
-rwxrwx--- 1 root plugdev 18M 2007-02-28 18:05 ActionCube_v0.92.tar.bz2
-rwxrwx--- 1 root plugdev 60M 2007-04-30 22:52 nexuiz-223.zip
-rwxrwx--- 1 root plugdev 7.4M 2007-04-25 02:16 stardict-oxford-gb-2.4.2.tar.bz2
-rwxrwx--- 1 root plugdev 102M 2007-05-01 18:22 tremulous-1.1.0-installer.x86.run
-rwxrwx--- 1 root plugdev 4.9M 2007-04-30 14:32 wqy-bitmapfont-0.8.1-7_all.deb.bin
当执行ls -l 或 ls -al 命令后显示的结果中,最前面的第2~10个字符是用来表示权限。第一个字符一般用来区分文件和目录:
d:表示是一个目录,事实上在ext2fs中,目录是一个特殊的文件。
-:表示这是一个普通的文件。
l: 表示这是一个符号链接文件,实际上它指向另一个文件。
b、c:分别表示区块设备和其他的外围设备,是特殊类型的文件。
s、p:这些文件关系到系统的数据结构和管道,通常很少见到。
下面详细介绍一下权限的种类和设置权限的方法。
一般权限
第2~10个字符当中的每3个为一组,左边三个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。这三个一组共9个字符,代表的意义如下:
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
-:表示不具有该项权限。
下面举例说明:
-rwx------: 文件所有者对文件具有读取、写入和执行的权限。
-rwxr―r--: 文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。
-rw-rw-r-x: 文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
drwx--x--x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。
Drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。
每个用户都拥有自己的专属目录,通常集中放置在/home目录下,这些专属目录的默认权限为rwx------:
表示目录所有者本身具有所有权限,其他用户无法进入该目录。执行mkdir命令所创建的目录,其默认权限为rwxr-xr-x,用户可以根据需要修改目录的权限。
此外,默认的权限可用umask命令修改,用法非常简单,只需执行umask 777 命令,便代表屏蔽所有的权限,因而之后建立的文件或目录,其权限都变成000,依次类推。通常root帐号搭配umask命令的数值为022、027和 077,普通用户则是采用002,这样所产生的权限依次为755、750、700、775。有关权限的数字表示法,后面将会详细说明。
用户登录系统时,用户环境就会自动执行rmask命令来决定文件、目录的默认权限。
特殊权限
其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些“特权”,因而用户若无特殊需求,不应该启用这些权限,避免安全方面出现严重漏洞,造成黑客入侵,甚至摧毁系统!!!
s或S(SUID,Set UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。
s或S(SGID,Set GID):设置在文件上面,其效果与SUID相同,只不过将文件所有者换成用户组,该文件就可以任意存取整个用户组所能使用的系统资源。
T或T(Sticky):/tmp和 /var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。
因为SUID、SGID、Sticky占用x的位置来表示,所以在表示上会有大小写之分。加入同时开启执行权限和SUID、SGID、Sticky,则权限表示字符是小写的:
-rwsr-sr-t 1 root root 4096 6月 23 08:17 conf
如果关闭执行权限,则表示字符会变成大写:
-rwSr-Sr-T 1 root root 4096 6月 23 08:17 conf
使用文件管理器来改变文件或目录的权限
如果用户要改变一个文件目录的权限,右击要改变权限的文件或者目录,在弹出的快捷菜单中选择“属性”,系统将打开属性对话框
在“属性”对话框中,单击“权限”标签,就会打开“权限”选项卡。
在这里你可以修改文件或者目录的所有者、组群和其他用户的权限,而且可以设置特殊权
对于特殊权限,最好不要设置,不然会带来很严重的安全问题。
当然,在这里你也可以改变文件和目录的所有者和所属组。
使用chmod和数字改变文件或目录的访问权限文件和目录的权限表示,是用rwx这三个字符来代表所有者、用户组和其他用户的权限。有时候,字符似乎过于麻烦,因此还有另外一种方法是以数字来表示权限,而且仅需三个数字。
r: 对应数值4
w: 对应数值2
x:对应数值1
-:对应数值0
数字设定的关键是mode的取值,一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进制数,如果有则有1表示,没有则有0表示,那么rwx r-x r- -则可以表示成为:
111 101 100
再将其每三位转换成为一个十进制数,就是754。
例如,我们想让a.txt这个文件的权限为:
自己 同组用户 其他用户
可读 是 是 是
可写 是 是
可执行
那么,我们先根据上表得到权限串为:rw-rw-r--,那么转换成二进制数就是110 110 100,再每三位转换成为一个十进制数,就得到664,因此我 们执行命令:
[root@localhost ~]# chmod 664 a.txt
按照上面的规则,rwx合起来就是4+2+1=7,一个rwxrwxrwx权限全开放的文件,数值表示为777;而完全不开放权限的文件“---------”其数字表示为000。下面举几个例子:
-rwx------:等于数字表示700。
-rwxr―r--:等于数字表示744。
-rw-rw-r-x:等于数字表示665。
drwx―x―x:等于数字表示711。
drwx------:等于数字表示700。
在文本模式下,可执行chmod命令去改变文件和目录的权限。我们先执行ls -l 看看目录内的情况:
[root@localhost ~]# ls -l
总用量 368
-rw-r--r-- 1 root root 12172 8月 15 23:18 conkyrc.sample
drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop
-r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6
drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1
-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo
drwxr-xr-x 2 root root 48 9月 6 13:06 vmware
可以看到当然文件conkyrc.sample文件的权限是644,然后把这个文件的权限改成777。执行下面命令
[root@localhost ~]# chmod 777 conkyrc.sample
然后ls -l看一下执行后的结果:
[root@localhost ~]# ls -l
总用量 368
-rwxrwxrwx 1 root root 12172 8月 15 23:18 conkyrc.sample
drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop
-r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6
drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1
-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo
drwxr-xr-x 2 root root 48 9月 6 13:06 vmware
可以看到conkyrc.sample文件的权限已经修改为rwxrwxrwx
如果要加上特殊权限,就必须使用4位数字才能表示。特殊权限的对应数值为:
s或 S (SUID):对应数值4。
s或 S (SGID):对应数值2。
t或 T :对应数值1。
用同样的方法修改文件权限就可以了
例如:
[root@localhost ~]# chmod 7600 conkyrc.sample
[root@localhost ~]# ls -l
总用量 368
-rwS--S--T 1 root root 12172 8月 15 23:18 conkyrc.sample
drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop
-r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6
drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0
-rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1
-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo
drwxr-xr-x 2 root root 48 9月 6 13:06 vmware
加入想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理。
例如:
[root@localhost ~]# chmod 777 /home/user 注:仅把/home/user目录的权限设置为rwxrwxrw
[root@localhost ~]# chmod -R 777 /home/user 注:表示将整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx
6. linux RWX权限的解读
注意
chown 和 chgrp 都有一个 -R 选项,该选项可以用来告诉它们递归地将所属权和组改变应用到整个目录树中。例如:
注意 :除非您是超级用户,否则您不可以使用 chown,然而任何人都可以使用 chgrp 来将文件的组所有权改为他们所属的组。
该操作chmod 示例已经影响到了所有三个三元组 — 用户、组和所有其他用户
亦可指定,对于“用户”三元组使用 u,对于“组”三元组使用 g,对于“其他/每个人”使用 o
定制化设定权限
直到现在为止,我们使用了叫做“符号”的模式来用 chmod 指定权限的改变。然而,指定权限还有一种普遍使用的方法 — 使用 4 位八进制数。使用叫做数字权限语法的语法,每一位代表一个权限三元组。例如,在 1777 中,777 设置本章我们所讨论的“owner”、“group”和“other”标志。1 用来设置专门的权限位,我们将在本章的结束部分讲到。
举例:7=4+2+1,读写执行,5=4+1,读执行。各种组合方式。
rwx 7 rw- 6 r-x 5 r-- 4 -wx 3 -w- 2 --x 1 --- 0
当进程创建了新文件时,它指定新文件应该具有的权限。通常,所请求的模式是 0666(每个人可读和可写),它比我们希望的具有更多的权限。幸运的是,不管什么时候创建了新文件,Linux 将参考叫做“umask”的东西。系统用 umask 值来将初始指定的权限降低为更合理、更安全的权限。您可以通过在命令行中输入 umask 来查看您当前的 umask 设置:
Linux 系统上,umask 的缺省值一般为 0022,它允许其他人读您的新文件(如果他们可以得到它们),但是不能进行修改。为了在缺省的情况下使新文件更安全,您可以改变 umask 设置: $ umask 0077umask 将确保组和其他用户对于新创建的文件绝对没有任何权限。那么,umask 怎样工作呢? 与文件的“常规”权限不同,umask 指定应该关闭哪一个权限 。我们来参阅一下我们的“模式到数字”映射表,从而使我们可以理解 0077 的 umask 的意思是什么: 模式 数字 rwx 7 rw- 6 r-x 5 r-- 4 -wx 3 -w- 2 --x 1 --- 0 使用该表,0077 的最后三位扩展为 ---rwxrwx。现在,请记住 umask 告诉系统禁用哪个权限。根据推断,我们可以看到将关闭所有“组”和“其他”权限,而“用户”权限将保留不动。
当您最初登录时,将启动一个新的 shell 进程。您已经知道,但是您可能还不知道这个新的 shell进程(通常是 bash)使用您的用户标识运行。照这样,bash 程序可以访问所有属于您的文件和目录。事实上,作为用户,我们完全依靠其它程序来代表我们执行操作。因为您启动的程序继承了您的用户标识,因此它们不能访问任何不允许您访问的文件系统对象。例如,一般用户不能直接修改 passwd 文件,因为“write”标志已经对除“root 用户”以外的每个用户关闭:
但是,一般用户确实需要在他们需要改变其密码的任何时候,能够修改 /etc/passwd(至少间接地)。但是,如果用户不能修改该文件,究竟怎样完成这个工作呢?
Suid
幸好,Linux 权限模型有两个专门的位,叫做“suid”和“sgid”。当设置了一个可执行程序的“suid”这一位时,它将代表可执行文件的所有者运行,而不是代表启动程序的人运行。现在,回到 /etc/passwd 问题。如果看一看 passwd 可执行文件,我们可以看到它属于 root 用户:
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root wheel 17588 Sep 24 00:53 /usr/bin/passwd
您还将注意到,这里有一个 s 取替了用户权限三元组中的一个 x。这表明,对于这个特殊程序,设置了 suid 和可执行位。由于这个原因,当 passwd 运行时,它将代表 root 用户执行(具有完全超级用户访问权),而不是代表运行它的用户运行。又因为 passwd 以 root 用户访问权运行,所以能够修改 /etc/passwd 文件,而没有什么问题。
suid/sgid 告诫说明
我们看到了 suid 怎样工作,sgid 以同样的方式工作。它允许程序继承程序的组所有权,而不是当前用户的程序所有权。这里有一些关于 suid 和 sgid 的其它的但是很重要的信息。首先,suid 和 sgid 占据与 ls -l 清单中 x 位相同的空间。如果还设置了 x 位,则相应的位表示为 s(小写)。但是,如果没有设置 x 位,它将表示为 S(大写)。另一个很重要的提示:在许多环境中,suid 和 suid 很管用,但是不恰当地使用这些位可能使系统的安全遭到破坏。最好尽可能地少用“suid”程序。passwd 命令是为数不多的必须使用“suid”的命令之一。
改变 suid 和 sgid
设置和除去 suid 与 sgid 位相当简单。这里,我们设置 suid 位:
此处,我们从一个目录除去 sgid 位。我们将看到 sgid 位怎样影响下面几屏中的目录:
权限和目到此为止,我们从常规文件的角度来看权限。当从目录的角度看权限时,情况有一点不同。目录使用同样的权限标志,但是它们被解释为表示略微不同的含义。 对于一个目录,如果设置了“read”标志,您可以列出目录的内容;“write”表示您可以在目录中创建文件,“execute”表示您可以进入该目录并访问内部的任何子目录。没有“execute”标志,目录内的文件系统对象是不可访问的。没有“read”标志,目录内的文件系统对象是不可查看的,但是只要有人知道磁盘上对象的完整路径,就仍然可以访问目录内的对象。目录和 sgid如果启用了目录的“sgid”标志,在目录内创建的任何文件系统对象将继承目录的组。当您需要创建一个属于同一组的一组人使用的目录树时,这种特殊的功能很管用。只需要这样做:
现在,mygroup 组中的所有用户都可以在 /home/groupspace 内创建文件或目录,同样,他们也将自动地分配到 mygroup 的组所有权。根据用户的 umask 设置,新文件系统对象对于 mygroup 组的其他成员来说,可以或不可以是可读、可写或可执行的。目录和删除缺省情况下,Linux 目录以一种不是在所有情况下都很理想的方式表现。一般来说,只要对一个目录有写访问权,任何人都可以重命名或删除该目录中的文件。对于个别用户使用的目录,这种行为是很合理的。但是,对于很多用户使用的目录来说,尤其是 /tmp 和 /var/tmp,这种行为可能会产生麻烦。因为任何人都可以写这些目录,任何人都可以删除或重命名任何其他人的文件 — 即使是不属于他们的!显然,当任何其他用户在任何时候都可以输入“rm -rf /tmp/*”并损坏每个人的文件时,很难把 /tmp 用于任何有意义的文件。所幸,Linux 有叫做“粘滞位”(sticky bit)的东西。当给 /tmp 设置了粘滞位(用chmod +t),唯一能够删除或重命名 /tmp 中文件的是该目录的所有者(通常是 root 用户)、文件的所有者或 root 用户。事实上,所有 Linux 分发包都缺省地启用了 /tmp 的粘滞位,而您还可以发现粘滞位在其它情况下也很管用。难以理解的第一位
总结本章,我们最后来看一看数字模式的难以理解的第一位数。您可以看到,这个第一位数
用来设置 sticky、suid 和 sgid 位:
suid sgid sticky 模式数字 on on on 7 on on off 6 on off on 5 on off off 4 off on on 3 off on off 2 off off on 1 off off off 0
这里有一个怎样用 4 位数字模式来设置一个目录的权限的示例,该目录将由一个工作组使用:
# chmod 1775 /home/groupfiles
请想一想 1755 数字模式权限设置的含义。
linux权限补充:rwt rwT rws rwS 特殊权限
众所周知,Linux的文件权限如: 777;666等,其实只要在相应的文件上加上UID的权限,就可以用到加权限人的身份去运行这个文件。所以我们只需要将bash复制出来到另一个地方,然后用root加上UID权限,只要用户运行此Shell就可以用用root的身份来执行任何文件了
一个文件都有一个所有者, 表示该文件是谁创建的. 同时, 该文件还有一个组编号, 表示该文件所属的组, 一般为文件所有者所属的组.
如果是一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的用户具有的权限. 而setuid, setgid 可以来改变这种设置.
setuid:该位是让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令。比如我们用普通用户运行passwd命令来更改自己的口令,实际上最终更改的是/etc/passwd文件我们知道/etc/passwd文件是用户管理的配置文件,只有root权限的用户才能更改
[root@localhost ~]# ls -l /etc/passwd
-rw-r--r-- 1 root root 2379 04-21 13:18 /etc/passwd
作为普通用户如果修改自己的口令通过修改/etc/passwd肯定是不可完成的任务,但是不是可以通过一个命令来修改呢答案是肯定的,作为普通用户可以通过passwd 来修改自己的口令这归功于passwd命令的权限我们来看一下;
[root@localhost ~]# ls -l /usr/bin/passwd
-r-s--x--x 1 root root 21944 02-12 16:15 /usr/bin/passwd
因为/usr/bin/passwd 文件已经设置了setuid 权限位(也就是r-s--x--x中的s),所以普通用户能临时变成root,间接的修改/etc/passwd,以达到修改自己口令的权限
setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.
sticky bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.
下面说一下如何操作这些标志:
操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,
chmod g+s tempdir -- 为tempdir目录加上setgid标志 (setgid 只对目录有效)
chmod o+t temp -- 为temp文件加上sticky标志 (sticky只对文件有效)
abc
a - setuid位, 如果该位为1, 则表示设置setuid 4---
b - setgid位, 如果该位为1, 则表示设置setgid 2---
c - sticky位, 如果该位为1, 则表示设置sticky 1---
设置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示. 如
rwsrw-r-- 表示有setuid标志
rwxrwsrw- 表示有setgid标志
rwxrw-rwt 表示有sticky标志
那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
https://blog.csdn.net/zhao12795969/article/details/53448039/
7. 【Linux】Linux文件权限 r,w,x,S,T
r(read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。
w(write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
s或S(SUID,Set UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。
请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。
t或T(Sticky):/tmp和 /var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。
keepalived 安装完后,/etc/keepalived 目录下文件权限
# ll /etc/keepalived/
出于安全考虑,应该更改:
# chmod 640 /etc/keepalived/keepalived.conf
# chmod 700 /etc/keepalived/check_mysql.sh
# ll /etc/keepalived/
What is gratuitous ARP?
https://ke..com/item/gratuitous%20ARP/5635432?fr=aladdin
Linux 的文件权限与目录配置
http://cn.linux.vbird.org/linux_basic/0210filepermission.php#filepermission_ch
8. linux中用户权限 -rw-rw-r-x是表示什么意思
1、r代表read(读);读(read): 具有读取文件内容的权限,表示可读取此文件中的实际内容,例如,可以对文件执行 cat、more、less、head、tail 等文件查看命令。
2、w代表write(写);写(write): 具有写入文件的权限,表示可以编辑、新增或者修改文件中的内容,例如,可以对文件执行 vim、echo 等修改文件数据的命令。注意,无权限不赋予用户删除文件的权利,除非用户对文件的上级目录拥有写权限才可以。
3、x代表execute(执行);执行(execute): 具有将文件作为程序或脚本执行的权限,表示该文件具有被系统执行的权限。Window系统中查看一个文件是否为可执行文件,是通过扩展名(.exe、.bat 等),但在Linux系统中,文件是否能被执行,是通过看此文件是否具有 x 权限来决定的。
也就是说,只要文件拥有 x 权限,则此文件就是可执行文件。但是,文件到底能够正确运行,还要看文件中的代码是否正确。
(8)linux的x权限扩展阅读
rwx 权限对目录的作用
读权限(r):表示具有读取目录结构列表的权限,也就是说,可以看到目录中有哪些文件和子目录。一旦对目录拥有 r 权限,就可以在此目录下执行 ls 命令,查看目录中的内容。
写权限(w):对于目录来说,w 权限是最高权限。对目录拥有 w 权限,表示可以对目录做以下操作:
在此目录中建立新的文件或子目录;
删除已存在的文件和目录(无论子文件或子目录的权限是怎样的);
对已存在的文件或目录做更名操作;
移动此目录下的文件和目录的位置。
- 一旦对目录拥有 w 权限,就可以在目录下执行 touch、rm、cp、mv 等命令。
执行权限(x):目录是不能直接运行的,对目录赋予 x 权限,代表用户可以进入目录,也就是说,赋予 x 权限的用户或群组可以使用 cd 命令。
9. Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)
权限简介
Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。
Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。
Linux下权限的粒度有
拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组,
如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。
Linux上通常使用chmod命令对文件的权限进行设置和更改。
一、快速入门
更改文件权限 (chmod命令)
一般使用格式
chmod [可选项]
可选项: -c, --changes like verbose but report onlywhena change is made (若该档案权限确实已经更改,才显示其更改动作) -f, --silent, --quiet suppress most error messages(若该档案权限无法被更改也不要显示错误讯息) -v, --verbose output a diagnosticforevery file processed(显示权限变更的详细资料) --no-preserve-rootdonottreat'/'specially (the default) --preserve-root fail to operate recursively on'/' --reference=RFILE use RFILE's mode instead of MODE values-R, --recursive change files and directories recursively(以递归的方式对目前目录下的所有档案与子目录进行相同的权限变更)--help显示此帮助信息--version显示版本信息mode :权限设定字串,详细格式如下 :[ugoa...][[+-=][rwxX]...][,...],其中[ugoa...]
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示所有(包含上面三者)。[+-=]
+ 表示增加权限,- 表示取消权限,= 表示唯一设定权限。[rwxX]
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
file...文件列表(单个或者多个文件、文件夹)
范例:
设置所有用户可读取文件 a.conf
设置 c.sh 只有 拥有者可以读写及执行
设置文件 a.conf 与 b.xml 权限为拥有者与其所属同一个群组 可读写,其它组可读不可写
设置当前目录下的所有档案与子目录皆设为任何人可读写
数字权限使用格式
在这种使用方式中,首先我们需要了解数字如何表示权限。
首先,我们规定 数字 4 、2 和 1表示读、写、执行权限(具体原因可见下节权限详解内容),即 r=4,w=2,x=1
。此时其他的权限组合也可以用其他的八进制数字表示出来,如: rwx = 4 + 2 + 1 = 7 rw = 4 + 2 = 6 rx = 4
+1 = 5 即
若要同时设置
rwx (可读写运行) 权限则将该权限位 设置 为 4 + 2 + 1 = 7 若要同时设置 rw- (可读写不可运行)权限则将该权限位 设置
为 4 + 2 = 6 若要同时设置 r-x (可读可运行不可写)权限则将该权限位 设置 为 4 +1 = 5
上面我们提到,每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。即我们可以用用三个8进制数字分别表示 拥有者 、群组 、其它组( u、 g 、o)的权限详情,并用chmod直接加三个8进制数字的方式直接改变文件权限。语法格式为 :
chmod file...
其中a,b,c各为一个数字,分别代表User、Group、及Other的权限。相当于简化版的chmod u=权限,g=权限,o=权限file...而此处的权限将用8进制的数字来表示User、Group、及Other的读、写、执行权限
范例:
设置所有人可以读写及执行
设置拥有者可读写,其他人不可读写执行
更改文件拥有者(chown命令)
linux/Unix 是多人多工作业系统,每个的文件都有拥有者(所有者),如果我们想变更文件的拥有者(利用 chown 将文件拥有者加以改变),一般只有系统管理员(root)拥有此操作权限,而普通用户则没有权限将自己或者别人的文件的拥有者设置为别人。
语法格式:
chown [可选项] user[:group] file...
使用权限:root说明:[可选项] :同上文chmoser :新的文件拥有者的使用者group :新的文件拥有者的使用者群体(group)
范例:
设置文件 d.key、e.scrt的拥有者设为 users 群体的 tom
设置当前目录下与子目录下的所有文件的拥有者为 users 群体的 James
二、Linux权限详解
Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。这也是Linux有别于Windows的机制,也是基于这个权限机智,Linux可以有效防止病毒自我运行,因为运行的条件是必须要有运行的权限,而这个权限在Linux是用户所赋予的。
Linux的文件权限有以下设定:
Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。
Linux下权限的属组有 拥有者 、群组 、其它组 三种。每个文件都可以针对这三个属组(粒度),设置不同的rwx(读写执行)权限。
通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。
如果我们要表示一个文件的所有权限详情,有两种方式:
第一种是十位二进制表示法,(三个属组每个使用二进制位,再加一个最高位共十位),可简化为三位八进制形式
另外一种十二位二进制表示法(十二个二进制位),可简化为四位八进制形式
十位权限表示
常见的权限表示形式有:
-rw------- (600)只有拥有者有读写权限。-rw-r--r-- (644)只有拥有者有读写权限;而属组用户和其他用户只有读权限。-rwx------ (700)只有拥有者有读、写、执行权限。-rwxr-xr-x (755)拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。-rwx--x--x (711)拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。-rw-rw-rw- (666)所有用户都有文件读、写权限。-rwxrwxrwx (777)所有用户都有读、写、执行权限。
后九位解析:我们知道Linux权限总共有三个属组,这里我们给每个属组使用三个位置来定义三种操作(读、写、执行)权限,合起来则是权限的后九位。 上面我们用字符表示权限,其中 -代表无权限,r代表读权限,w代表写权限,x代表执行权限。
实际上,后九位每个位置的意义(代表某个属组的某个权限)都是固定的,如果我们将各个位置权限的有无用二进制数 1和 0来代替,则只读、只写、只执行权限,可以用三位二进制数表示为
r--=100-w-=010--x=001---=000
转换成八进制数,则为 r=4, w=2, x=1, -=0(这也就是用数字设置权限时为何是4代表读,2代表写,1代表执行)
实际上,我们可以将所有的权限用二进制形式表现出来,并进一步转变成八进制数字:
rwx=111=7rw-=110=6r-x=101=5r--=100=4-wx=011=3-w-=010=2--x=001=1---=000=0
由上可以得出,每个属组的所有的权限都可以用一位八进制数表示,每个数字都代表了不同的权限(权值)。如 最高的权限为是7,代表可读,可写,可执行。
故 如果我们将每个属组的权限都用八进制数表示,则文件的权限可以表示为三位八进制数
-rw------- =600-rw-rw-rw- =666-rwxrwxrwx =777
关于第一位最高位的解释:上面我们说到了权限表示中后九位的含义,剩下的第一位代表的是文件的类型,类型可以是下面几个中的一个:
d代表的是目录(directroy)-代表的是文件(regular file)s代表的是套字文件(socket)p代表的管道文件(pipe)或命名管道文件(named pipe)l代表的是符号链接文件(symbolic link)b代表的是该文件是面向块的设备文件(block-oriented device file)c代表的是该文件是面向字符的设备文件(charcter-oriented device file)
十二位权限(Linux附加权限)
附加权限相关概念
linux除了设置正常的读写操作权限外,还有关于一类设置也是涉及到权限,叫做Linxu附加权限。包括 SET位权限(suid,sgid)和粘滞位权限(sticky)。
SET位权限:
suid/sgid是为了使“没有取得特权用户要完成一项必须要有特权才可以执行的任务”而产生的。
一般用于给可执行的程序或脚本文件进行设置,其中SUID表示对属主用户增加SET位权限,SGID表示对属组内用户增加SET位权限。执行文件被设置了SUID、SGID权限后,任何用户执行该文件时,将获得该文件属主、属组账号对应的身份。在许多环境中,suid
和 sgid 很管用,但是不恰当地使用这些位可能使系统的安全遭到破坏。所以应该尽量避免使用SET位权限程序。(passwd
命令是为数不多的必须使用“suid”的命令之一)。
suid(set User ID,set UID)的意思是进程执行一个文件时通常保持进程拥有者的UID。然而,如果设置了可执行文件的suid位,进程就获得了该文件拥有者的UID。
sgid(set Group ID,set GID)意思也是一样,只是把上面的进程拥有者改成进程组就好了。
SET位权限表示形式(10位权限):
如果一个文件被设置了suid或sgid位,会分别表现在所有者或同组用户的权限的可执行位上;如果文件设置了suid还设置了x(执行)位,则相应的执行位表示为s(小写)。但是,如果没有设置x位,它将表示为S(大写)。如:
1、-rwsr-xr-x表示设置了suid,且拥有者有可执行权限2、-rwSr--r--表示suid被设置,但拥有者没有可执行权限3、-rwxr-sr-x表示sgid被设置,且群组用户有可执行权限4、-rw-r-Sr--表示sgid被设置,但群组用户没有可执行权限
设置方式:
SET位权限可以通过chmod命令设置,给文件加suid和sgid的命令如下(类似于上面chmod赋予一般权限的命令):
chmo+sfilename设置suid位chmo-sfilename去掉suid设置chmodg+sfilename设置sgid位chmodg-sfilename去掉sgid设置
粘滞位权限:
粘滞位权限即sticky。一般用于为目录设置特殊的附加权限,当目录被设置了粘滞位权限后,即便用户对该目录有写的权限,也不能删除该目录中其他用户的文件数据。设置了粘滞位权限的目录,是用ls查看其属性时,其他用户权限处的x将变为t。
使用chmod命令设置目录权限时,+t、-t权限模式可分别用于添加、移除粘滞位权限。
粘滞位权限表示形式(10位权限):
一个文件或目录被设置了粘滞位权限,会表现在其他组用户的权限的可执行位上。如果文件设置了sticky还设置了x(执行)位,其他组用户的权限的可执行位为t(小写)。但是,如果没有设置x位,它将表示为T(大写)。如:
1、-rwsr-xr-t表示设置了粘滞位且其他用户组有可执行权限2、-rwSr--r-T表示设置了粘滞位但其他用户组没有可执行权限
设置方式:
sticky权限同样可以通过chmod命令设置:
chmod +t <文件列表..>
十二位的权限表示方法
附加权限除了用十位权限形式表示外,还可以用用十二位字符表示。
11109876543210S G T r w x r w x r w x
SGT分别表示SUID权限、SGID权限、和 粘滞位权限,这十二位分别对应关系如下:
第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上面的三组rwx位(后九位)。
在这十二位的每一位上都置值。如果有相应的权限则为1, 没有此权限则为0。
-rw-r-sr--的值为:010110100100-rwsr-xr-x的值为:100111101101-rwsr-sr-x的值为:110111101101-rwsr-sr-t的值为:111111101101
如果将则前三位SGT也转换成一个二进制数,则
suid 的八进制数字是4
sgid 的代表数字是 2
sticky 位代表数字是1
这样我们就可以将十二位权限三位三位的转化为4个八进制数。其中
最高的一位八进制数就是suid,sgdi,sticky的权值。
第二位为 拥有者的权值
第三位为 所属组的权值
最后一位为 其他组的权值
附加权限的八进制形式
通过上面,我们知道,正常权限和附加权限可以用4位八进制数表示。类似于正常权限的数字权限赋值模式(使用三位八进制数字赋值)
chmod file...
我们可以进一步使用4位八进制数字同时赋值正常权限和附加权限。
chmod file...
其中s是表示附加权限的把八进制数字,abc与之前一致,分别是对应User、Group、及Other(拥有者、群组、其他组)的权限。因为SUID对应八进制数字是4,SGID对于八进制数字是2,则“4755”表示设置SUID权限,“6755”表示同时设置SUID、SGID权限。
我们进一步将上小节的例子中的二进制数转变为八进制表示形式,则
-rw-r-sr-- =010110100100=2644-rwsr-xr-x =100111101101=4755-rwsr-sr-x =110111101101=6755-rwsr-sr-t =111111101101=7755
对比范例:
设置 netlogin 的权限为拥有者可读写执行,群组和其他权限为可读可执行
设置 netlogin 的权限为拥有者可读写执行,群组和其他权限为可读可执行,并且设置suid
chmod 4755与chmod 755对比多了附加权限值4,这个4表示其他用户执行文件时,具有与所有者同样的权限(设置了SUID)。
为什么要设置4755 而不是 755?
假设netlogin是root用户创建的一个上网认证程序,如果其他用户要上网也要用到这个程序,那就需要root用户运行chmod 755 netlogin命令使其他用户也能运行netlogin。但假如netlogin执行时需要访问一些只有root用户才有权访问的文件,那么其他用户执行netlogin时可能因为权限不够还是不能上网。这种情况下,就可以用 chmod 4755 netlogin 设置其他用户在执行netlogin也有root用户的权限,从而顺利上网。