有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。例如:
$ ls-l sobsrc.tgz
-rw-r--r--1root root483997Ju1l517:3lsobsrc.tgz
横线代表空许可。r代表只读,w代表写,x代表可执行。注意这里共有10个位置。第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。例如:
– rw- r– r–
普通文件 文件主 组用户 其他用户
是文件sobsrc.tgz 的访问权限,表示sobsrc.tgz是一个普通文件;sobsrc.tgz的属主有读写权限;与sobsrc.tgz属主同组的用户只有读权限;其他用户也只有读权限。
确定了一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利用chown命令来更改某个文件或目录的所有者。利用chgrp命令来更改某个文件或目录的用户组。
下面分别对这些命令加以介绍。
chmod 命令
chmod命令是非常重要的,用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。
以主文件夹下的一个名为“cc”的文件夹为例。下面一步一步介绍如何修改权限:
1.打开终端。输入”su”(没有引号)
2.接下来会要你输入密码,输入你的root密码。
3.假设我的文件夹在主目录里,地址为 /var/home/dengchao/cc 。假设我要修改文件权限为777,则在终端输入 chmod 777 /var/home/userid/cc 文件夹的权限就变为了777。
如果是修改文件夹及子文件夹权限可以用 chmod -R 777 /var/home/userid/cc
具体的权限(例如777的含意等)在下面解释下:
1.777有3位,最高位7是设置文件所有者访问权限,第二位是设置群组访问权限,最低位是设置其他人访问权限。
其中每一位的权限用数字来表示。具体有这些权限:
r(Read,读取,权限值为4):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。
w(Write,写入,权限值为2):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行,权限值为1):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
2. 首先我们来看如何确定单独一位上的权限数值,例如最高位表示文件所有者权限数值,当数字为7时,7用“rwx”表示 –{4(r)+2(w)+1(x)=7}–又如果数值为6,则用“rw-”表示–{4(r)+2(w)+0(x)=6}–,”-”表示不具备权限,这里表 示不具备“执行”权限。
假如我们设定其他用户的访问权限为 “r–”,则数值为4+0+0=4
一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进制数,如果有则用1表示,没有则有0表示,那么rwx则可以表示成为:111
而二进制的111就是7。
3.我们再来看下怎么确定3个数位上的权限。假如我们要给一个文件设置权限,具体权限如下:
文件所有者有“读”、“写”、“执行”权限,群组用户有“读”权限,其他用户有“读”权限,则对应的字母表示为”rwx r– r–“,对应的数字为744
一般都是最高位表示文件所有者权限值,第二位表示群组用户权限,最低位表示其他用户权限。
下面来举些例子熟悉下。
权限 数值
rwx rw- r– 764
rw- r– r– 644
rw- rw- r– 664
该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
1. 文字设定法
chmod [who] [+ | – | =] [mode] 文件名¼
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
– 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置mode所表示的权限可用下述字母的任意组合:
r 可读。
w 可写。
x 可执行。
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
t 保存程序的文本到交换设备上。
u 与文件属主拥有一样的权限。
g 与和文件属主同组的用户拥有一样的权限。
o 与其他用户拥有一样的权限。
-c:若该档案权限确实已经更改,才显示其更改动作
-f:若该档案权限无法被更改也不要显示错误讯息
-v:显示权限变更的详细资料
-R:对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
–help:显示辅助说明
–version:显示版本
文件名:以空格分开的要改变权限的文件列表,支持通配符。在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+r,o+r example使同组和其他用户对文件example 有读权限。
例1:
$ chmod a+x sort
即设定文件sort的属性为:
文件属主(u) 增加执行权限
与文件属主同组用户(g) 增加执行权限
其他用户(o) 增加执行权限
例2:
$ chmod ug+w,o-x text
即设定文件text的属性为:
文件属主(u) 增加写权限
与文件属主同组用户(g) 增加写权限
其他用户(o) 删除执行权限
例3:
$ chmod u+s a.out
假设执行chmod后a.out的权限为(可以用ls – l a.out命令来看):
–rws--x--x1inin users7192Nov414:22a.out
并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为“–rw——-”,即该文件只有其属主具有读写权限。
当其他用户执行a.out这个程序时,他的身份因这个程序暂时变成inin(由于chmod命令中使用了s选项),所以他就能够读取shiyan1.c这个文件(虽然这个文件被设定为其他人不具备任何权限),这就是s的功能。
因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到入侵。
例4:
$ chmod a–x mm.txt
$ chmod–x mm.txt
$ chmod ugo–x mm.txt
以上这三个命令都是将文件mm.txt的执行权限删除,它设定的对象为所有使用者。
2. 数字设定法
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。
数字设定法的一般形式为:chmod [mode] 文件名¼
例1:
$ chmod644mm.txt
$ ls–l
即设定文件mm.txt的属性为:
-rw-r--r--1inin users1155Nov511:22mm.txt
文件属主(u)inin 拥有读、写权限
与文件属主同组人用户(g) 拥有读权限
其他人(o) 拥有读权限
例2:
$ chmod750wch.txt
$ ls–l
-rwxr-x---1inin users44137Nov129:22wchtxt
即设定wchtxt这个文件的属性为:
文件主本人(u)inin 可读/可写/可执行权
与文件主同组人(g) 可读/可执行权
其他人(o) 没有任何权限
chgrp命令
功能:改变文件或目录所属的组。
语法:chgrp[选项] group filename¼
参数:
-c或–changes 效果类似”-v”参数,但仅回报更改的部分。
-f或–quiet或–silent 不显示错误信息。
-h或–no-dereference 只对符号连接的文件作修改,而不更动其他任何相关文件。
-R或–recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-v或–verbose 显示指令执行过程。
–help 在线帮助。
–reference=<参考文件或目录> 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
–version 显示版本信息。
该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。
该命令的各选项含义为:
– R 递归式地改变指定目录及其下的所有子目录和文件的属组。
例1:
$chgrp-R book/opt/local/book
改变/opt/local /book/及其子目录下的所有文件的属组为book。
chown命令
功能:更改某个文件或目录的属主和属组。这个命令也很常用。例如root用户把自己的一个文件拷贝给用户yusi,为了让用户yusi能够存取这个文件,root用户应该把这个文件的属主设为yusi,否则,用户yusi无法存取这个文件。
语法:chown[选项] 用户或组 文件
说明:chown将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户ID。组可以是组名或组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。
参数说明:
user : 新的档案拥有者的使用者 ID
group : 新的档案拥有者的使用者群体(group)
-c : 若该档案拥有者确实已经更改,才显示其更改动作
-f : 若该档案拥有者无法被更改也不要显示错误讯息
-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
-v : 显示拥有者变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
–help : 显示辅助说明
–version : 显示版本
例1:把文件yusi123.com的所有者改为yusi。
$chownyusi yusi123.com
例2:把目录/demo及其下的所有文件和子目录的属主改成yusi,属组改成users。
$ chown-R yusi.users/demo
例如:chown qq /home/qq (把home目录下的qq目录的拥有者改为qq用户)
例如:chown -R qq /home/qq (把home目录下的qq目录下的所有子文件的拥有者改为qq用户)
② linux文件属性及权限详解,带思考题
如上显示信息(一共7个栏位),说明如下:
文件属性&权限 文件硬链接数 拥有者 所属group 文件大小 建档日期 文件名
(1)第一个栏位,表示文件属性&权限。Linux的文件基本上分为三个属性:
格式: rwx(拥有者权限)r-x(所属组权限)r-x(其他人权限)
权限操作相关命令
(2)第二个栏位,表示文件硬链接数。
注意:互为硬链接的文件具有相同的文件节点,软链接时文件节点号不一样;
(3)第三个栏位,表示该文件或目录的拥有者。
若使用者目前处于自己的home, 那这一栏大概都是它的账号名称。
(4)第四个栏位,表示所属的组(group)。
每一个使用者都可以拥有一个以上的组,不过大部分的使用者应该都只属于一个组,只有当系统管理员希望给予某使用者特殊权限时,才可能会给他另一个组。
(5)第五栏位,表示文件大小,用byte来表示,而空目录一般都是1024byte。
当然也可以用其它参数使文件显示的单位不同,如使用ls -k就是用kb来显示一个文件的大小单位。
(6)第六个栏位,表示创建日期。
以"月,日,时间"的格式表示,如Aug 15 5:46表示8月15日早上5点46分。
(7)第七个栏位,表示文件名。可以用 ls -a 显示隐藏的文件名。
思考题:
如下目录, 请问test用户, testgroup组成员, others其他人 是否可以进入groups目录?
drwxr-xr-- test testgroup 5238 Jun 19 10:25 groups/
思考之后, 滚动查看答案~
答:
test用户, 可以进行任何工作
testgroup组成员, 可以进入目录, 但是不能写入
others其他人, 不能进入目录, 因为没有x权限
③ linux如何给文件权限
chmod -R 755 文件夹名 ,一般加这个权限就好了。第一个数字表示根用户有读写执行权限,第二个表示组用户有读和执行的权限,第三个是其他用户有读和执行的权限。
一、访问权限
访问权限分为读(read)、写(write)、执行(execute)三种,
并且涉及到文件所有者(user)、文件所属组(group)、其他人(other)三个主体。
选取上图红框中的两行为例,结合下面的表格先讲一下基本结构:
第一位表示文件类型
第二~十位表示权限:每三位一组,共三组,分别表示三个主体对应的三种权限
对照表格可以知道
drwxr-xr-x表示:
d为目录文件
文件所有者可读、可写、可执行(rwx:可读r、可写w、可执行x)
文件所属组可读、可执行(r-x:可读r、不可写-、可执行x)
其他人可读、可执行(r-x:可读r、不可写-、可执行x)
-rw-r--r--表示:
-为普通文件
文件所有者可读、可写(rw-:可读r、可写w、不可执行-)
文件所属组可读(r--:可读r、不可写-、不可执行-)
其他人可读(r--:可读r、不可写-、不可执行-)
二、修改权限
如何修改权限?一般有两种方法:
文字法:chmod [who][operator][permission] <file-name>
数字法:chmod xxx <file-name>
1.文字法:
[who]:表示要修改的主体,
u:用户(user),即文件所有者:创建文件的人
g:同组用户(group),即文件所属组:与文件属主有相同组ID的所有用户
o:其他用户(others),即其它人:与文件无关的人
a:所有用户(all),它是系统默认值
[operator]:表示进行哪种修改操作,
+:添加某个权限
-:取消某个权限
=:赋予给定权限并取消其他所有权限(如果有的话)
[permission]:表示要设置的权限,
r:可读
w:可写
x:可执行
2.数字法:
xxx表示数字属性,格式为3个从0到7的数,其对应的主体顺序是u g o,
将对应主体位上的所有权值分别相加就可以得到这个三位数了。
4表示可读权限
2表示可写权限
1表示可执行权限
0表示没有权限
相加后的值表示的意义如下:
7=4+2+1 表示可读可写可执行
6=4+2 表示可读可写
5=4+1 表示可读可执行
3=2+1 表示可写可执行
例1:
chmod 755 <file-name>
表示将文件<file-name>的权限修改为:
u(文件所有者) 可读可写可执行
g(文件所属组) 可读可执行
o(其它人) 可读可执行
这种修改用第一种方式来写就是(假设文件之前没任何权限)(如果有权限这样写也可以,只是太繁琐):
chmod a+rx,u+w <file-name>
或
chmod ugo+rx,u+w <file-name>
或
chmod u+rwx,go+rx <file-name>
另外,
如果原来文件已经有权限,如-rw-r--r--,则用第一种方式来写如下:
chmod ugo+x <file-name>
或
chmod a+x <file-name>
如果原来文件已经有权限,如drwxrwxrwx,则用第一种方式来写如下:
chmod go-w <file-name>
例2:
chmod 777 <file-name>
表示将文件<file-name>的权限修改为:
a(所有人)可读可写可执行
这种修改用第一种方式来写就是(假设文件之前没任何权限)(如果有权限这样写也可以,只是太繁琐):
chmod a+rwx <file-name>
或
chmod ugo+rwx <file-name>
另外,
如果原来文件已经有权限,如drwxr-xr-x,则用第一种方式来写如下:
chmod go+w <file-name>
④ linux 文件有哪些特殊权限
文件的特殊权限有三种:1、suid;2、sgid;3、sticky,其中,suid和sgid用于累加提升权限,简单来说就是如果原来的用户可以访问,反而切换到的用户或者组不能访问,这时候照样是可以访问的,下面介绍下这三种权限。
SUID:
1、需要注意的是,只对二进制可执行程序有效,不能为普通文件;
2、发起者对程序文件必须拥有执行权限;
3、启动为进程之后,其进程的宿主为原程序文件的宿主;
4、SUID设置在目录上毫无意义。
SGID:
可以应用在二进制文件和作用在文件夹下,当作用在二进制文件下时,作用和SUID相似,只不过SUID是把发起者临时变为文件的所有者,而SGID是把进程的发起者变成源程序文件的属组,默认情况下,用户创建文件时,其属组为此用户所属的主组,当SGID作用在目录下时,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录。
Sticky:
默认情况下用户可以删除具有写权限的目录中的任何文件,无论该文件的权限或拥有权,如果在目录设置Sticky位,只有文件的所有者或root**可以删除该文件,Sticky位是作用在文件夹的,设置在文件上毫无意义。
⑤ 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用户的权限,从而顺利上网。
⑥ linux怎样取消一个文件的可执行权限
1、首先我们打开linux系统,建立一个目录,文件夹创建命令mkdir ceshi。
⑦ linux的文件执行权限有什么用
Linux的权限不是很细致,只有RWX三种
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限;对目录来说,具有新建,删除,修改,移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
1、目录的只读访问不允许使用cd进入目录,必须要有执行的权限才能进入。
2、只有执行权限只能进入目录,不能看到目录下的内容,要想看到目录下的文件名和目录名,需要可读权限。
3、一个文件能不能被删除,主要看该文件所在的目录对用户是否具有写权限,如果目录对用户没有写权限,则该目录下的所有文件都不能被删除,文件所有者除外
4、目录的w位不设置,即使你拥有目录中某文件的w权限也不能写该文件