• 命令替换、权限、chmod、特殊权限


    命令替换

    把字符串里面的命令先执行再把该字符串输出,与PHP的“”里面的变量被执行一样。

    • $(COMMAND)

    • `COMMAND`

    [root@jiakang ~]# echo "The directory is $(pwd)"
    The directory is /root
    [root@jiakang ~]# touch ./file-$(date +%F-%H-%M-%S).txt
    [root@jiakang ~]# ls
    a                             install.log
    anaconda-ks.cfg               install.log.syslog
    file-2017-03-30-19-52-22.txt
    [root@jiakang ~]# echo "The directory is `pwd`"        
    The directory is /root

    权限

    文件:

    • r:可读,可以用类似cat等命令查看文件内容

    • w:可写,可以编辑或删除此文件

    • x:可执行,可以命令提示符下当作命令提交给内核运行

    目录:

    • r:可以对此目录执行ls列出内部所有文件

    • w:可以在此目录创建文件

    • x:可以使用cd切换进此目录,也可以使用ls -l查看详细信息

    用数字表示:

    • 0 000 ---:无权限

    • 1 001 --x:执行

    • 2 010 -w-:写

    • 3 011 -wx:写和执行

    • 4 100 r--:读

    • 5 101 r-x:读和执行

    • 6 110 rw-:读和写

    • 7 111 rwx:读写执行

    chmod命令

    修改文件的权限

    修改三类用户的权限

    chmod MODE file

    • -R

    • --reference=/path/somefile file 参考修改【修改和前面的somefile的权限一样】

    [root@jiakang tmp]# chmod 057 yum.log

    修改某类用户或某些类用户的权限

    u,g,o,a

    chmod 用户类别=MODE file,...

    [root@jiakang tmp]# chmod u=rwx /tmp/yum.log
    [root@jiakang tmp]# chmod g=r,o=r /tmp/yum.log
    [root@jiakang tmp]# chmod go=r /tmp/yum.log 
    [root@jiakang tmp]# ls -l /tmp/yum.log
    -rwxr--r--. 1 tom root 0 3月  25 07:01 /tmp/yum.log

    修改某类用户的某位或者某些位的权限

    u,g,o,a

    chmod 用户类别+|-MODE file

    [root@jiakang tmp]# chmod go+w /tmp/yum.log
    [root@jiakang tmp]# ls -l /tmp/yum.log     
    -rwxrw-rw-. 1 tom root 0 3月  25 07:01 /tmp/yum.log
    [root@jiakang tmp]# chmod +x /tmp/yum.log  
    [root@jiakang tmp]# ls -l /tmp/yum.log   
    -rwxrwxrwx. 1 tom root 0 3月  25 07:01 /tmp/yum.log

    特殊权限(难)

    SUID:运行某程序时,相应的进程的属主是文件自身的属主,而不是启动者;

    • chmod u+s FILE

    • chmod u-s FILE
      如果该FILE本身原来有执行权限则SUID显示为s,原来没有执行权限显示为S

    注意:SUID用于二进制可执行文件,对目录和非二进制可执行文件没什么意义

    【现在rm的权限】
    [root@jiakang tmp]# ls -l /bin/rm
    -rwxr-xr-x. 1 root root 58960 10月 15 2014 /bin/rm
    [root@jiakang tmp]# ls -l abc
    -rw-r--r--. 1 root root 0 4月   2 19:55 abc
    
    【普通用户删除abc】
    [jiakang@jiakang ~]$ rm /tmp/abc
    rm:是否删除有写保护的普通空文件 "/tmp/abc"?y
    rm: 无法删除"/tmp/abc": 不允许的操作
    
    【给rm添加s权限,注意看我当前操作的用户】
    [root@jiakang tmp]# ls -l /bin/rm
    -rwsr-xr-x. 1 root root 58960 10月 15 2014 /bin/rm
    
    【再次删除,没有abc文件了】
    [jiakang@jiakang ~]$ rm /tmp/abc   
    [jiakang@jiakang ~]$ ls /tmp
    def             keyring-V2LdqH      rc.d
    inittab         keyring-ydeVD8      rc.local

    SGID:运行某程序时,相应的进程的属组是文件自身的属组,而不是启动者所属的基本组;

    用法和上面的一样【g+s , g-s】,现在介绍一种常用的用法【用于目录】:

    公司现在多个程序员开发一个网站,每个人都有自己登陆服务器的账号,要求是项目目录下的文件每个人都共享,就是在该目录下可以互相编辑每个文件,不管是谁开发的

    解决方法:

    1. 每个用户的基本组都相同,这样创建的文件基本组也都一样【添加一个附加组是不行的,那样每个用户再创建文件时属组是不一样的】

      注意:用户有基本组和附加组usermod进行修改;文件和目录只有一个属组,默认是用户的基本组,chown进行修改,在这容易混淆

    2. 添加一个附加组【developteam】,把该目录【project】的GID加s权限,在该目录下创建的文件的基本组就会是该目录的基本组【developteam】而非用户本身的基本组,这样每个文件的组都相同了,文件可以相互访问

    [root@jiakang tmp]# groupadd developteam
    [root@jiakang tmp]# mkdir /tmp/project
    [root@jiakang tmp]# chown -R :developteam /tmp/project【修改属组】
    [root@jiakang tmp]# chmod g+s project【加SGID】
    [root@jiakang tmp]# ls -ld project
    drwxr-sr-x. 2 root developteam 4096 4月  11 13:04 project
    [root@jiakang tmp]# usermod -a -G developteam jiakang【追加附加组developteam】
    [root@jiakang tmp]# id jiakang
    uid=500(jiakang) gid=500(jiakang) 组=500(jiakang),5001(developteam)
    [root@jiakang tmp]# chmod g+w project【组内用户+w权限】
    [jiakang@jiakang tmp]$ cd project
    [jiakang@jiakang project]$ touch ss.txt
    touch: 无法创建"ss.txt": 权限不够
    [jiakang@jiakang project]$ exit【需要退出重新登陆才能生效】
    logout
    [root@jiakang ~]# su - jiakang
    [jiakang@jiakang project]$ touch s.txt
    [jiakang@jiakang project]$ ls -l s.txt
    -rw-rw-r--. 1 jiakang developteam 0 4月  11 13:26 s.txt【属组自动就是developteam】

    sticky:在上面创建的那个公共目录里,每个用户都能创建、删除自己的文件,但是不能删除他人的文件

    • chmod o+t DIR

    • chmod o-t DIR

    这样权限修改的时候用数字表示就又多了一位:

    • 000

    • 001【o+t】

    • 011【g+s,o+t】
      ...

    • 111【u+s,g+s,o+t】

    chmod 5755 /tmp/test【5代表:u+s,o+t】

    umask 0022 也是同理

  • 相关阅读:
    Java并发之ThreadPoolExecutor
    Java并发之同步工具类
    em和i , b和Strong 的区别
    OS应用架构谈(二):View层的组织和调用方案(中)
    iOS应用架构谈(二):View层的组织和调用方案(上)
    java(List或Array数组)求交集、并集、差集, 泛型工具类
    AES/DES 可逆性加密算法 -- java工具类
    用xtrabackup实现mysql的主从复制 阿里云rds到自己创建mysql
    java 生成二维码工具
    XDU 1022 (数论筛法+前缀和)
  • 原文地址:https://www.cnblogs.com/twodog/p/12140932.html
Copyright © 2020-2023  润新知