Linux权限

ps: 红字字体为重要部分, 仔细看

一、 文件、目录隐藏属性

        1. chattr: 改变文件或目录隐藏属性;

        2. lsattr:  查看文件或目录隐藏属性;

            常用选项:

                              ①。 -i:     不能删除、改名、移动、重定向、追加;

                                                 对文件操作;

[root@Centos2 ~]# echo aa > a.txt
[root@Centos2 ~]# chattr +i a.txt
[root@Centos2 ~]# rm -rf a.txt 
rm: cannot remove `a.txt‘: Operation not permitted          #提示没权限
[root@Centos2 ~]# mv a.txt b.txt
mv: cannot move `a.txt‘ to `b.txt‘: Operation not permitted
[root@Centos2 ~]# mv a.txt /tmp
mv: cannot move `a.txt‘ to `/tmp/a.txt‘: Operation not permitted
 [root@Centos2 ~]# echo "11" > a.txt 
-bash: a.txt: Permission denied
[root@Centos2 ~]# echo "11" >> a.txt
-bash: a.txt: Permission denied
[root@Centos2 ~]# lsattr a.txt
----i--------e- a.txt

                                                 对目录操作;

[root@Centos2 /]# chattr +i /root/
[root@Centos2 /]# lsattr  | grep root
……………………/省略
----i--------e- ./root
[root@Centos2 /]# mkdir /root/a
mkdir: cannot create directory `/root/a‘: Permission denied
[root@Centos2 /]# echo "aaa" > /root/1.txt
-bash: /root/1.txt: Permission denied
[root@Centos2 /]# tocuh /root/aaa.txt
-bash: tocuh: command not found

                              ②。 -a:     只能追加;

[root@Centos2 ~]# chattr +a a.txt 
[root@Centos2 ~]# echo "aaaaaa" > a.txt
-bash: a.txt: Operation not permitted
[root@Centos2 ~]# mv a.txt b.txt
mv: cannot move `a.txt‘ to `b.txt‘: Operation not permitted
[root@Centos2 ~]# rm -rf a.txt
rm: cannot remove `a.txt‘: Operation not permitted
[root@Centos2 ~]# echo "11111" >> a.txt 
ps:      目录显示方法和-i一样。

                              ③。 -R:     递归显示隐藏权限;

[root@Centos2 ~]# lsattr -R /root/
………………/省略
-----a-------e- /root/a.txt

                              ④。 -d:     显示目录本身隐藏权限;

[root@Centos2 ~]# chattr +a 2/
[root@Centos2 ~]# lsattr -d 2/
-----a-------e- 2/

二、 如何判断内置命令和外置命令

        1. 内置命令:      存放在内核

[root@Centos2 ~]# type cd
cd is a shell builtin
[root@Centos2 ~]# type pwd
pwd is a shell builtin
[root@Centos2 ~]# type type
type is a shell builtin

        2. 外置命令:      

[root@Centos2 ~]# type shutdown
shutdown is /sbin/shutdown
[root@Centos2 ~]# type cat
cat is hashed (/bin/cat)
[root@Centos2 ~]# type vim
vim is /usr/bin/vim
[root@Centos2 ~]# type find
find is /bin/find

三、 搜索文件

        1. which:     通过PATH环境变量到该路径内查找可执行文件, 所以基本的功能是寻找可执行文件

[root@Centos2 ~]# which ps
/bin/ps
[root@Centos2 ~]# which pwd
/bin/pwd
[root@Centos2 ~]# which cd
/usr/bin/which: no cd in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

        2. whereis:     和find相比, whereis查找的速度非常快, 这是因为linux系统会将系统内的所有文件都记录在一个数据文件中

[root@Centos2 ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz
[root@Centos2 ~]# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

        3. find:     查找文件

find作用: Find是一个非常有效的工具, 它可以遍历当前目录甚至于整个文件系统来查找某些文件或目录

find参数:

               -name : 按照文件名查找文件

               -perm : 按照文件权限来查找文件

               -user   : 按照文件属主来查找文件

               -group: 按照文件属组来查找文件

               -mmin : 查看几分钟内修改的文件

               -atime  -n  +n: 访问或执行时间小于/大于n天的文件

               -ctime  -n  +n: 写入、更改inode属性(例如更改所有者、权限或者链接)时间小于/大于n天内的文件

               -mtime -n +n: 写入时间小于/大于n天的文件. -n表示文件距现在n天以内,+n表示文件距现在n天以前.

               -nogroup: 查找无有效属组的文件. 即该文件属组在/etc/group中不存在.

               -nouser: 查找无有效属主的文件. 即该文件属主在/etc/passwd中不存在.

               -type: b:块设备文件

                            d:目录
                            c:字符设备文件
                            p:管道文件
                            l:符号链接文件
                            f:普通文件

               -size n[c]: 查找文件长度为n块的文件, 带有c时表示文件长度以字节计.

               -mount: 在查找文件时不跨越文件系统mount点

1. 在家目录下搜索以".txt"结尾的文件

[root@test01 ~]# find ~ -name "*.txt"
/root/bomc.txt
/root/1.txt

2. 在当前目录中搜索以大写字母开头的文件或目录

[root@test01 ~]# find . -name "[A-Z]*"

./.config/Trolltech.conf
./Videos
./Desktop
………………

3. 在当前目录查找权限为755的文件或目录

[root@test01 ~]# find . -perm 755
./.config
./Videos
./Desktop
………………

4. 在当前目录查找属组为root的文件

[root@test01 ~]# find . -group root
./.tcshrc
./install.log
………………

5. 在当前目录查找更改时间在3日以前的文件

[root@test01 ~]# find . -mtime +3
./.tcshrc./install.log
………………

6. 在/etc目录下查找所有的目录

[root@test01 ~]# find /etc/ -type d|more
/etc/
/etc/chkconfig.d
/etc/init
………………

7. 在当前目录下查找排除目录以外的文件

[root@test01 ~]# find . ! -type d./.tcshrc./install.log
………………

8. 在当前目录下查找排除符号连接的文件

[root@test01 ~]# find . -type l./.kde/cache-test01
………………

9. 查找当前目录下查找文件长度大于10字节的文件

[root@test01 ~]# find . -size +10c
./.tcshrc
./install.log
./.esd_auth

………………

10. 查看当前目录下的所有普通文件, 并用ls -l将它们列出

[root@test01 ~]# find . -type f | xargs ls -l      或者如下命令
[root@test01 ~]# find . -type f -exec ls -l {} \;

11. 查看/var/log目录下5天以前的日志文件, 并用rm将它们删除

[root@test01 ~]# find /var/log/ -type f -mtime +5 | xargs rm -rf
[root@test01 ~]# find /var/log/ -type f -mtime +5 -exec rm -rf {} \;

11. 查找1天以内创建的文件

[root@test01 ~]# find / -type f -mtime -1

四、 用stat命令查看目录、文件时间

      1. a、m、ctime解释

      atime:     最近查看文件的时间;

      mtime:     最近修改文件内容的时间;

      ctime:      最近文件属性的更改时间和文件大小变化时间;

[root@Centos2 /]# stat linux/
  File: `linux/‘
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 1045419     Links: 2
Access: (4775/drwsrwxr-x)  Uid: (    0/    root)   Gid: (  501/   user2)
Access: 2015-03-17 23:02:55.525610032 -0400
Modify: 2015-03-17 23:02:54.225616979 -0400
Change: 2015-03-17 23:02:54.225616979 -0400
     
[root@Centos2 /]# echo "aaa" > linux/aaa.txt
[root@Centos2 /]# stat linux
  File: `linux‘
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd00h/64768d    Inode: 1045419     Links: 2
Access: (4775/drwsrwxr-x)  Uid: (    0/    root)   Gid: (  501/   user2)
Access: 2015-03-17 23:02:55.525610032 -0400
Modify: 2015-03-17 23:06:26.894616709 -0400
Change: 2015-03-17 23:06:26.894616709 -0400
ps: 当我们往linux目录写入文件时, 它的mtime和ctime都发生时间的变化


五、 文件特殊权限

[root@Centos2 ~]# mkdir linux
[root@Centos2 ~]# ls -ld linux/
drwxr-xr-x 2 root root 4096 Mar 17 22:47 linux/
[root@Centos2 ~]# chmod g+s linux/
[root@Centos2 ~]# chown user1:user2 linux/
[root@Centos2 ~]# ls -ld linux/
drwxr-sr-x 2 user1 user2 4096 Mar 17 22:47 linux/
[root@Centos2 ~]# touch linux/linux.txt
[root@Centos2 ~]# ls -l linux/
total 0
-rw-r--r-- 1 root user2 0 Mar 17 22:48 linux.txt
ps: 
set_uid:     拥有set_uid权限(临时拥有该命令的属主去执行二进制的命令,只能用于文件)
set_gid:     继承目录属组权限
stick_bit:    防删除位, 其它用户不能删除,只有创建者能删
详细请见: http://www.zhukun.net/archives/5962


六、 链接文件

        1. 软连接

[root@Centos2 linux]# echo "11111" > 1.txt
[root@Centos2 linux]# ln -s 1.txt  /home/home_1.txt
[root@Centos2 linux]# ls -l /home/
……………………/省略
lrwxrwxrwx  1 root  root     5 Mar 17 23:40 home_1.txt -> 1.txt
[root@Centos2 linux]# rm -rf /home/home_1.txt
[root@Centos2 linux]# ls -l /home/

       2. 硬连接

[root@Centos2 linux]# ln 1.txt /home/home-1.txt
[root@Centos2 linux]# ls -l /home/
…………………………./省略
-rw-r--r--  2 root  root     6 Mar 17 23:40 home-1.txt
[root@Centos2 linux]# rm -rf /home/home-1.txt
[root@Centos2 linux]# ln 1.txt /boot/               
ln: creating hard link `/boot/1.txt‘ => `1.txt‘: Invalid cross-device link            
   #硬连接不能跨分区
ps:
硬连接=复制+同步+删除源文件无障碍+不能跨分区+不能用于目录
软连接=快捷方式+同步+删除源文件废废+能跨分区+能用于目录



如有不对地址, 请及时提示

本文出自 “陈小贱。” 博客,请务必保留此出处http://chenxiaojian.blog.51cto.com/9345444/1622060

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。