把字符串里面的命令先执行再把该字符串输出,与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
文件:ui
r:可读,能够用相似cat等命令查看文件内容code
w:可写,能够编辑或删除此文件进程
x:可执行,能够命令提示符下看成命令提交给内核运行开发
目录:字符串
r:能够对此目录执行ls列出内部全部文件it
w:能够在此目录建立文件test
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 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】,如今介绍一种经常使用的用法【用于目录】:
公司如今多个程序员开发一个网站,每一个人都有本身登录服务器的帐号,要求是项目目录下的文件每一个人都共享,就是在该目录下能够互相编辑每一个文件,无论是谁开发的
解决方法:
每一个用户的基本组都相同,这样建立的文件基本组也都同样【添加一个附加组是不行的,那样每一个用户再建立文件时属组是不同的】
注意:用户有基本组和附加组usermod进行修改;文件和目录只有一个属组,默认是用户的基本组,chown进行修改,在这容易混淆
添加一个附加组【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 也是同理