linux学习之六Linux文件与目录管理(二)

2010年11月19日 Linux基础 评论 1 条 阅读 9,293 views 次

4. 文件与目录的默认权限与隐藏权限
前面我们讲到:一个文件有若干个属性, 包括读写执行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结文件 (l) 等等的属性。我们可以通过chgrp, chown, chmod来更改这些属性。
接下来,我们会讲到用chattr来设定其他的系统隐藏属性。这个属性我们可以通过lsattr来查看

在讲之前,我们来了解一下
umask 0022(-----w--w-)

linux系统预设的文件权限为666(-rw-rw-rw-),目录权限为777(drwxrwxrwx)

umask 003=wx
文件666-003=663?(rw-rw--wx)
-rw-rw-rw-
--------wx
-rw-rw-r--

目录777-003=774(rwxrwxr--)

chattr指令只能在Ext2/Ext3/Ext4

查看文件隐藏属性:lsattr
-a
-d
-R

chattr [+-=][参数] 文件或目录名称
a:当设置a之后,这个档案将只能增加数据,而不能删除也不能修改数据,只有root 才能设定这个属性。
i:他可以让一个文件『不能被删除、改名、设置连结也无法写入或新增资料』对于系统安全性有相当大的帮助。只有root才能设定此属。

文件的特殊权限: SUID, SGID, SBIT
ls -ld /tmp;ls -l /usr/bin/passwd

Set UID:临时获得某个用户的权限
/etc/shadow(只有一个r-->root)<----passwd
一般用地一些二进制的可执行文件上

Set GID
SGID 可以针对文件或目录来设定
ll /usr/bin/locate /var/lib/mlocate/mlocate.db

Sticky Bit
SBIT 目前只针对目录有效
拥有w+x权限
/tmp 本身的权限是『drwxrwxrwt』。所以任何人都可以在 /tmp 内新增、修改文件,但仅有该文件/目录建立者与root才能够删除自己的目录或文件。

 

SUID/SGID/SBIT 权限设定
4 为 SUID
2 为 SGID
1 为 SBIT

SUID 为 u+s
SGID 为 g+s
SBIT 则是 o+t

5. 命令与文件的查找

查找命令文件
which:在PATH目录中查询

root/test
which ifconfig

which cd ??
cd是BASH内的命令,
type cd ?

whereis与locate 是利用数据库来搜寻数据
find 是在硬盘上搜索

用不同的身份执行whereis ifconfig

whereis

-b :只找 binary 格式的文件
-m :只找在说明文件 manual 路径下的文件

locate
-i :忽略大小写的差异;
-r :后面可接正则表达式的显示方式

updatedb--->/etc/updatedb.conf去硬盘里面进行搜寻文件名的动作,然后就更新整个数据库文件/var/lib/mlocate/

会找到已经被删除掉的文件,而且也找不到最新建立的文件。这是因为这两个指令是根据数据库中的结果去搜寻文件的。

find

find [PATH] [option] [action]

1. 以时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
-mtime n :n 为数字,意义为在 n 3天之前的『一天之内』被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含n天本身)被更动过内容的文件名;
-mtime -n :列出在 n 天之内(含n天本身)被更动过内容的文件名。
-newer file :file 为一个存在的档案,列出比 file 还要新的文件名。主要是用于分辨两个文件之间的新旧关系。

将系统上面24小时内有更动过内容(mtime)的文件列出
find / -mtime 0
# 那个 0 是重点,0 代表目前的时间,所以,从现在开始到 24 小时前,

+n n天前
-n 从n天到现在
n  就是n当天

2. 与使用者或组名有关的参数:
-uid n :/etc/passwd
-gid n :/etc/group
-user name :
-group name:
-nouser:/etc/passwd
-nogroup:/etc/group

如何找出某个用户在系统中所有的文件?
find / -user someone

3. 与文件权限及名称有关的参数:

-name filename:SIZE 的规格有c: 代表 byte, k: 代表 1024bytes。????M 与 G 分别代表 MB 和 GB????大家可以看看,因为MAN中有提到,但是好像不行。
-size [+-]SIZE:
-type TYPE:TYPE的类型主要有:一般文件 (f), 设备文件(b, c), 目录 (d), 连结 (l), socket (s), 及 FIFO (p) 等

-perm mode :
-perm -mode :必须要全部囊括 mode 的权限。我们要搜寻 -rwxr--r-- ,即0744的文件,使用 -perm -0744,录一个文件的权限为 -rwsr-xr-x ,即4755 时,也会被列出来, 因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
-perm +mode :包含任一mode的权限。我们要搜寻-rwxr-xr-x ,即-perm +755 时,但一个文件属性为 -rw------- 也会被列出来,因为他有 -rw.... 的属性存在!

 

4. 额外可进行的操作:-exec command :command 为其他命令,-exec后面可再接其它的命令来处理搜寻到的结果。
find / -perm +7000 -exec ls -l {} \;
{} 代表的是『由 find 找到的内容』
-exec 一直到 \; 是关键词,代表 find 其他命令的开始 (-exec) 到结束 (\;)

find /etc -name '*httpd*'
找出 /etc 底下文件名包含httpd的文件

权限与命令间的关系

一、让用户能进入某目录成为『可工作目录』的基本权限为何:
 可使用的命令:例如 cd 等变换工作目的命令
 目录所需权限:用户对这个目录至少需要具有x的权限
 额外需求:如果用户想要在这个目录内利用ls查阅文件名,则用户对此目录还需要r的权限
二、用户在某个目录内读取一个文件的基本权限为何?
 可使用的命令:例如cat, more, less等等
 目录所需权限:用户对这个目录至少需要具有x权限
 文件所需权限:使用者对文件至少需要具的r的权限才行
三、让使用者可以修改一个文件的基本权限为何?
 可使用的命令:例如 nano  vi 编辑器等
 目录所需权限:用户在该文件所在的目录至少要有x权限
 文件所需权限:使用者对该文件至少要有 r, w 权限
四、让一个使用者可以建立一个文件的基本权限为何?
 目录所需权限:用户在该目录要具有 w,x 的权限,重点在 w
五、让用户进入某目录并执行该目录下的某个命令的基本权限为何?
 目录所需权限:用户在该目录至少要有 x 的权限
 文件所需权限:使用者在该文件至少需要有x的权限

 

课后练习

1、Linux底下,根目录下有没有上层目录(..)存在?
2、假如你是root,如果你将ls由/bin/ls移到成为/root/ls,然后你自己本身也在/root目录下, 请问(1)你能不能直接输入ls来执行?(2)若不能,你该如何执行ls这个指令?(3)若要直接输入ls既可执行,又该如何操作?
3、我想显示一个文件的10-30行,命令要如何写呢?
4、在root用户下,利用which ifconfig 和whereis ifconfig都能找到内容。为什么在其它的用户下,只用能whereis才能找到ifconfig,而which则找不到呢?(这只针对RHEL5以前的有用,RHEL6已经不同了)
5、如果能够执行cp /dir1/file1 /dir2请说明 dir1, file1, dir2 的最小所需权限为什么?
6、当一个使用者的umask分别为033与044时,他所建立文件与目录的权限为什么?
7、找出/etc底下,文件大小介于50K 到 60K 之间的文件,并将权限完整的列出
找出 /etc 底下,容量大于1500K 以及容量等于0的文件:

1 条留言  访客:0 条  博主:1 条

  1. 1、Linux底下,根目录下有没有上层目录(..)存在?
    在根目录下存在..及.这两个目录,但是他们是一样的属性,都表示的是.(当前目录)

    2、假如你是root,如果你将ls由/bin/ls移到成为/root/ls,然后你自己本身也在/root目录下, 请问(1)你能不能直接输入ls来执行?(2)若不能,你该如何执行ls这个指令?(3)若要直接输入ls既可执行,又该如何操作?
    mv /bin/ls /root/
    pwd
    /root
    这时候不能直接执行ls这个命令,因为在PATH中找不到这个命令了,只有用绝对路径和相对路径才能执行ls命令
    ./ls
    /root/ls
    如果想直接输入ls既可执行,那就要把/root目录也加到PATH中
    PATH=”$PATH”:/root
    最后,记得把你的ls还原

    3、我想显示一个文件的10-30行,命令要如何写呢?
    head -n 30 file |tail -n 9

    4、在root用户下,利用which ifconfig 和whereis ifconfig都能找到内容。为什么在其它的用户下,只用能whereis才能找到ifconfig,而which则找不到呢?(这只针对RHEL5以前的有用,RHEL6已经不同了)
    因为which是根据用户的$PATH来查找相应的文件,whereis是根据数据库里面的资料来查询。而ifconfig是在/sbin/这个目录下,普通的用户$PATH是没有这个目录的,所以是找不到的。

    5、如果能够执行cp /dir1/file1 /dir2请说明 dir1, file1, dir2 的最小所需权限为什么?
    dir1:–x
    file1:r
    dir2:-wx

    [root@www ~]# mkdir /dir1/
    [root@www ~]# touch /dir1/file1
    [root@www ~]# mkdir /dir2
    [root@www ~]# chmod 001 /dir1/
    [root@www ~]# chmod 004 /dir1/file1
    [root@www ~]# chmod 003 /dir2
    [root@www ~]# su – test
    [test@www ~]$ cp /dir1/file1 /dir2/
    [test@www ~]$ ls -ld /dir1;ls -ld /dir2;ls -l /dir1/file1
    d——–x 2 root root 4096 Nov 19 14:00 /dir1
    d——-wx 2 root root 4096 Nov 19 14:06 /dir2
    ——-r– 1 root root 0 Nov 19 14:00 /dir1/file1
    为什么两个文件夹没有r权限也是可以的,主要是因为我们不需要列出里面的内容,我们已经知道了里面的内容了

    6、当一个使用者的umask分别为033与044时,他所建立文件与目录的权限为什么?
    666-033=633=-rw–wx-wx
    rw-rw-rw-
    —-wx-wx
    rw-r–r–
    777-033=744=rwx-r–r–

    666-044=622=rw–w–w-
    777-044=733=drwx-wx-wx

    7、找出/etc底下,文件大小介于50K 到 60K 之间的文件,并将权限完整的列出
    find /etc -size +50k -a -size -60k -exec ls -l {} \;
    那个 -a 是 and的意思,为符合两者才符合

    找出 /etc 底下,容量大于1500K 以及容量等于0的文件:
    find /etc -size +1500k -o -size 0
    相对于-a ,那个 -o 就是或 (or)的意思

给我留言

Copyright © 羽飞博客 保留所有权利.   Ality主题 皖ICP备14013844号-1

用户登录