Pages

Saturday, 31 December 2011

Linux下的文件权限

在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
Cheap Hotel in Salvador
Hotel deals in Salvador
Internet Only!    Curitiba Hotels
Hotel in Curitiba
We have the best rates!
OnlineHotel Ads

通过设定权限可以从以下 三种访问方式限制访问权限:只允许用户自己访问;允许一个预先指定的用户组中的用户访问;允许系统中的任何用户访问。同时,用户能够控制一个给定的文件或 目录的访问程度。一个文件活目录可能有读、写及执行权限。当创建一个文件时,系统会自动地赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内 容和修改文件。文件所有者可以将这些权限改变为任何他想指定的权限。一个文件也许只有读权限,禁止任何修改。文件也可能只有执行权限,允许它想一个程序一 样执行。

三种不同的用户类型能够访问一个目录或者文件:所有着、用户组或其他用户。所有者就是创建文件的用户,用户是所有用户所创建的文件 的所有者,用户可以允许所在的用户组能访问用户的文件。通常,用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户 组,一个用户能够授予所在用户组的其他成员的文件访问权限。最后,用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问 用户的目录或文件。在这种意义上,系统内的其他所有用户就是other用户类。
Cheap Hotel in Mykonos
Best Hotels in Mykonos
Do not miss this opportunity!    Rio de Janeiro Hotels
Cheap hotels Rio de Janeiro
We have the best rates!
OnlineHotel Ads

每一个用户都有它自身的读、写和执行权限。第一套权限控制访 问自己的文件权限,即所有者权限。第二套权限控制用户组访问其中一个用户的文件的权限。第三套权限控制其他所有用户访问一个用户的文件的权限,这三套权限 赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。

我们可以用-l参数的ls命令显示文件的详细信息,其中包括权限。如下所示:
[root@localhost ~]# ls -lh
总用量 368K
-rw-r–r– 1 root root 12K 8月 15 23:18 conkyrc.sample
drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop
-r–r–r– 1 root root 325K 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 9.6K 11月 5 08:08 net.eth0
-rwxr-xr-x 1 root root 9.6K 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

当执行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——:
[root@localhost ~]# ls -al
总用量 5
drwxr-xr-x 9 root root 240 11月 8 18:30 .
drwxr-xr-t 22 root root 568 10月 15 09:13 ..
drwxr-xr-x 2 root root 48 8月 11 08:09 ftp
drwxrwxrwx 2 habil users 272 11月 13 19:13 habil
-rw-r–r– 1 root root 0 7月 31 00:41 .keep
drwxr-xr-x 2 root root 72 11月 3 19:34 mp3
drwxr-xr-x 39 sailor users 1896 11月 11 13:35 sailor
drwxr-xr-x 3 temp users 168 11月 8 18:17 temp
drwxr-xr-x 3 test users 200 11月 8 22:40 test
drwxr-xr-x 65 wxd users 2952 11月 19 18:53 wxd

表示目录所有者本身具有所有权限,其他用户无法进入该目录。执行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。
<code>
用同样的方法修改文件权限就可以了
例如:
<code>
[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目录的权限设置为rwxrwxrwx
[root@localhost ~]# chmod -R 777 /home/user 注:表示将整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx
五、使用命令chown改变目录或文件的所有权
文件与目录不仅可以改变权限,其所有权及所属用户组也能修改,和设置权限类似,用户可以通过图形界面来设置,或执行chown命令来修改。

我们先执行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文件的所属用户组为root,所有者为root。

执行下面命令,把conkyrc.sample文件的所有权转移到用户user:
[root@localhost ~]# chown user conkyrc.sample
[root@localhost ~]# ls -l
总用量 368
-rwxrwxrwx 1 user 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
要改变所属组,可使用下面命令:
[root@localhost ~]# chown :users conkyrc.sample
[root@localhost ~]# ls -l
总用量 368
-rwxrwxrwx 1 user users 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参数就可以了,方法和前面一样。
--------------

Linux中的SUID机制

SUID简称位,英文全称是Set owner User ID up on execution,它是一种特殊的文件权限,能够让用户(如Bob)用其他用户(如root用户)的权限运行一个程序,而不需要用sudo进行临时提权

同一类的还有SGID,就不详细说了,原理与SUID一样,就以SUID为例

在一个程序执行的时候会有三个ID状态,在深入学习SUID之前必须能够区分下面三种ID:

  • Real User ID
  • Effective User ID
  • Saved User ID

Real User ID 是执行这个程序的用户的真实ID,是已用户login时候的ID为准

Effective User ID 是程序执行过程中使用权限时真正起作用的用户ID,操作系统在检查一个程序有没有某个权限的时候会看这个ID

Saved User ID 是程序临时提权时需要保存的先前的用户ID,等提权结束后需要回退到这个用户ID.

如果用户user2有另一个用户user1的程序的执行权限,并且user1给这个程序设置了SUID位,那么user2就可以用user1的权限来执行这个程序

简单来说,SUID能够让用户(如Bob)用其他用户(如root用户)的权限运行一个程序,而不需要用sudo进行临时提权

举个例子:

所有用户的密码保存在 /etc/shadow 文件中,但是这个文件只有root用户能够进行写操作

1
2
root@kali:~# ls -l /etc/shadow
-rw-r----- 1 root shadow 1639 Jan 27 12:50 /etc/shadow

那如果普通用户想要修改自己的密码,是否需要让root用户帮着修改呢?

显然不需要,修改密码用到了 /usr/bin/passwd 这个程序,我们来看一下它的权限

1
2
root@kali:~# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 63944 Dec 20 10:39 /usr/bin/passwd

可以看到,这个程序的所有者是root用户,但是所有用户都有执行权限,并且设置了s位(怎么看出来的后面会说)

这样SUID机制就会在程序执行的时候发生作用,让普通用户可以用root权限修改/etc/shadow文件

SUID机制的存在使程序权限的控制更加方便,用户可以执行某个程序而不需要登录到程序拥有者的账号.

通过命令 ls -l 即可看到文件的详细信息,包括权限表 -rwxrwxrwx

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
-   rwx   rwx   rwx

第一位是文件类型,-就是普通文件,d代表目录,l代表链接文件,还有一些其他类型的文件不详细说了

后面的9位可以分成三组,分别表示所有者权限、同组内用户权限,组外其他用户权限

每一组都有三位,r 代表有读取权限,w 代表有写入权限,x 代表有执行权限,如果是 _ 就代表没有相应的权限

如果文件所有者权限的 x 换成 s 就代表设置了SUID

同理如果组内用户权限的 x 换成了 s 就代表设置了SGID

使用 chmod 4000 filename 可以设置SUID位

使用 chmod 2000 filename 可以设置SGID位

使用 chmod 6000 filename 可以同时设置SGID和SUID位

注意: 2000\4000\6000都是不完整的权限,正常使用应该将000替换为相应的权限,例如 4755

使用 chmod 755 filename 可以取消SGID和SUID位

或者 chmod u-s filename or chmod g-s filename 也可以.


因为SUID位让程序在执行的时候有了所有者的权限,所以可以利用这点来提权

示例:

1
2
3
4
# 进入nmap的交互模式
nmap --interactive
# 执行sh,提权成功
!sh

详细介绍见: https://www.leavesongs.com/PENETRATION/linux-suid-privilege-escalation.html


假如user1用 chmod 4777 /home/user1/script.sh 命令给script.sh脚本设置SUID位,登录user2后执行这个脚本提示没有权限

这是因为SUID位只对编译过的可执行程序起作用,sh脚本的实际执行程序是sh或者bash之类,如果它们在执行的时候并不会检查脚本文件的SUID位,那就不会起作用了

Perl执行器会检查perl脚本的suid位,所以可以给pl脚本设置suid位

----------------------------------------

Linux下,修改文件的权限

文件权限对于一个系统的安全性非常重要,文件的权限和使用者与群组息息相关。那么如何修改文件权限,下面是几个常用于群组、拥有者、各种身份的权限修改指令:

chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件的权限, SUID, SGID, SBIT等等的特性
改变所属群组, chgrp
顾名思义,就是将文件赋给其它群组。chgrp就是change group的缩写。改变这个文件的群组,要注意的是这个组名必须要在/etc/group文件内存在才行,否则就会显示错误。

[root@lmode ~]# chgrp [-R] dirname/filename ...
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录都更新成为这个群组之意。常常用在改变某一目录内所有的文件这种情况。

范例:
[root@lmode~]# ll
total 20
drwx------ 2 psz psz  4096 Jul  1 15:52 ceshi
[root@lmode ~]# chgrp root ceshi //将ceshi群组由psz改为root
[root@lmode ~]# ls -ld
total 20
drwx------ 2 psz  root  4096 Jul  1 15:52 ceshi
[root@lmode ~]# chgrp testing ceshi
chgrp: invalid group name `testing' <== 提示出错,因为找不到testing这个群组名~
改变文件拥有者, chown
顾名思义,它就是将一个文件的拥有者改成另一个拥有者。chown是change onwer的缩写。要改变文件拥有者,要注意的是, 用户必须是已经存在系统中的账号,也就是在/etc/passwd 这个文件中有记录的用户名称才有效。
此外,如果要连目录下的所有次目录或文件同时更改文件拥有者的话,要加上 -R 这个选项!


[root@lmode ~]# chown [-R] 账号名称 文件或目录
[root@lmode ~]# chown [-R] 账号名称:组名 文件或目录
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更

范例:将ceshi的拥有者改为root这个账号:
[root@lmode ~]# chown root ceshi
[root@lmode ~]# ls -ld
drw-r--r-- 1 root root 68495 Jun 25 08:53 ceshi

范例:将ceshi的拥有者与群组改回为psz:
[root@lmode ~]# chown psz:psz ceshi
[root@lmode ~]# ls -ld
drwx------ 2 psz psz 4096 Jul  1 15:52 ceshi
事实上,chown也可以使用『chown user.group file』,亦即在拥有者与群组间加上小数点『.』也行!  
不过建议使用冒号『:』来隔开拥有者与群组!这样比较清晰不容易犯错。
此外,chown也能单纯的修改所属群组。 例如『chown .root ceshi』就是修改群组~看到了吗?就是那个小数点的用途!
改变权限, chmod
这个命令可以增加会减少文件的权限。权限的设定方法有两种, 分别可以使用数字或者是符号来进行权限的变更。
数字类型改变文件权限
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4
w:2
x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是: owner = rwx = 4+2+1 = 7,group = rwx = 4+2+1 = 7,others= — = 0+0+0 = 0

[root@lmode ~]# chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

[root@lmode ~]# ls -ld ceshi/
drwx------ 2 psz psz 4096 Jul  1 15:52 ceshi/
[root@lmode ~]# chmod 777 ceshi
[root@lmode ~]# ls -ld ceshi/
drwxrwxrwx 2 psz psz 4096 Jul  1 15:52 ceshi/
那如果要将权限变成『 -rwxr-xr– 』呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754 !
所以你需要下达『 chmod 754 filename』。 另外,在实际的系统运作中最常发生的一个问题就是,常常我们以vim编辑一个shell的文字批处理文件后,他的权限通常是 -rw-rw-r– 也就是664, 如果要将该文件变成可执行文件,并且不要让其他人修改此一文件的话, 那么就需要-rwxr-xr-x这样的权限,此时就得要下达:『 chmod 755 test.sh 』的指令!
另外,如果有些文件你不希望被其他人看到,那么应该将文件的权限设定为例如:『-rwxr—-』,那就下达『 chmod 740 filename 』吧!

例题:
将刚刚你的ceshi这个文件的权限修改回-rw-r--r--的情况!
答:
-rw-r--r--的分数是644,所以指令为:
chmod 644 ceshi
符号类型改变文件权限
基本上就九个权限分别是(1)user (2)group (3)others三种身份啦!那么我们就可以借由u, g, o来代表三种身份的权限!
此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x.

假如我们要『设定』一个文件的权限成为『-rwxr-xr-x』时,基本上就是:

user (u):具有可读、可写、可执行的权限;
group 与 others (g/o):具有可读与执行的权限。

[root@lmode ~]# chmod  u=rwx,go=rx  ceshi
那个 u=rwx,go=rx 是连在一起的,中间并没有任何空格.
[root@lmode ~]# ls -dl ceshi
drwxr-xr-x  1 root root 395 Jul 4 15:55 ceshi
假如是『 -rwxr-xr– 』这样的权限呢?可以使用『 chmod u=rwx,g=rx,o=r filename 』来设定。此外,如果我不知道原先的文件属性,而我只想要增加ceshi这个文件的每个人均可写入的权限, 那么我就可以使用:

[root@lmode ~]# ls -dl ceshi
drwxr-xr-x  1 root root 395 Jul  4 15:55 ceshi
[root@lmode ~]# chmod  a+w  ceshi
[root@lmode ~]# ls -dl ceshi
drwxrwxrwx  1 root root 395 Jul  4 11:45 ceshi
而如果是要将权限去掉而不更动其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

[root@lmode ~]# chmod  a-x  ceshi
[root@lmode ~]# ls -dl ceshi
drw-rw-rw-  1 root root 395 Jul  4 11:45 ceshi 

( Linux下,文件拥有者和群组

1.文件拥有者
Linux和window操作系统有很大的差异,其中一点明显的差异是Linux是个多人多任务的系统。因为多用户下,不同用户的权限可能会不同,而且有时候某些用户建立的文件并不想和其它用户共享,这和现实世界的隐私很像。所以,Linux下就有了文件拥有者的概念。

2.群组
群组,顾名思义就是组别,小组的概念。现实世界中,比如QQ群,讨论组,你只有是群成员或者是讨论组成员,才能在组群里面发言和查看其它成员的发言记录等。Linux下群组和现实世界中的概念很相像,群组下的不同用户在特定条件下有共同的权限,比如可以共同操作某一个文件,而其它群组的用户则没办法操作该文件,而同群组下的用户又是相对独立的,例如每个用户有自己特定的隐私。

3.其他人的概念
相对于群组,群外的人就是其它人了。其它人,就是Others。在Linux里面,任何一个文件都具有User(拥有者), Group(群组)及Others(其它人)三种身份的个别权限。举个例子,比如一个文件的拥有者对该文件有读,写,删的功能,但是和该用户相同组别下的用户可能只有文件读取权限。而该组别外其它人可能对该文件没有任何权限。Linux下有个超级用户,就是root用户,它拥有任何权限。
拥有者,与该使用者所支持的群组概念,在Linux的世界里面是相当的重要的, 他可以帮助你让你的多任务Linux环境变的更容易管理!

4.Linux用户与群组信息记录的文件
在Linux系统当中,默认的情况下,所有的系统上的账号还有那个root的相关信息,都是记录在/etc/passwd这个文件内的。至于用户密码则是记录在/etc/shadow这个文件下。 此外,Linux所有的组名都记录在/etc/group内!这三个文件记录了Linux系统里面账号、密码、群组信息!
任何情况下不要随便删除这三个文件。)

No comments:

Post a Comment