==========列举文件:
(1)列出指定目录里的文件和目录ls
(2)常用的是ls -altr
a——all
l——long listing(permissions、ownership、size,以及modification time)
t——time,根据时间排序(最新的是第1个)
r——reverse,让最新的文件出现在最底下
-rwxr-x--- 1 oracle oinstall 92 Oct 17 2007 dbaFunk.bash
第1列有10个字符,第1个字符是文件类型,第2到10是文件权限。r,w,x代表读写执行,-代表没有权限
第2列:Number of Links
第3列:Owner
第4列:Group
第5列:Size in Bytes
第6列:Modification Date
第7列:File Name
第1列的10个字符
File Type User Perms Group Perms Other Perms
1 2 3 4 5 6 7 8 9 10
-,d,l,s,c,b r w x r w x r w x
- 普通文件
d 目录
l symbolic link
s Socket
c Character device file
b Block device file
你还可以用echo命令来列出文件:
$ echo *
echo是内置命令,假如ls不能用的话,就可以用echo命令。
==========快速创建文件:
你正在建立RMAN backups,你想要快速地创建一个文件,这样你就可以测试oracle这个用户是否具有对新创建的目录的正确权限。
$ touch test.txt
如果你正touch的文件已经存在了,那么touch将会更新该文件的last-modified date。touch命令的-a选项会修改访问时间,-m会更新修改时间。
==========改变文件权限:
$ chmod 750 scrub.bash
750代表owner有读写执行权,group有读执行权,其他用户没有权限
Numerical Digit Permissions Letter Format
0 没有权限 ---
1 执行 --x
2 写 -w-
3 写、执行 -wx
4 读 r--
5 读、执行 r-x
6 读、写 rw-
7 读、写、执行 rwx
letter格式对新手来说更直观。
权限运用在谁身上:
u User(owner)
g Group
o Other
a All
例子:
用户(owner)、组、其他人:执行权
$ chmod ugo+x mvcheck.bsh
取消组、其他用户的写和执行权
$ chmod go-wx *.bsh
+是添加权限,-是取消权限,=是赋予指定的权限取消未指定的权限
$ chmod 760
$ chmod u=rwx,g=rw,o= mvcheck.bsh
上面2行命令是等价的
递归授权:
当前目录里的文件以及子目录里的任何文件owner读写执行,group执行,其他人执行
$ chmod -R 711 *.*
根据某个文件上的权限来设置权限:
当前目录下所有以.bsh为后缀的文件拥有和master.bsh文件一样的权限设置
$ chmod --refeeence=master.bsh *.bsh
文件在创建时就被赋予了默认权限,这是基于umask设置。file creation mask决定了要排除掉一个文件上的哪些权限。
$ umask
下面是字符版:
$ umask -S
当你创建一个普通的文本文件时,权限就被设置成0666减去umask设置。如果umask设置是0022,则结果就是0644或-rw-r--r--
还有个和chmod命令相关的概念就是setuid permission(有时叫作suid),下面是检查oracle binary file上的权限:
$ cd $ORACLE_HOME/bin
$ ls -l oracle
结果显示它的第1列是:-rwsr-s--x,你注意到owner和group的executable setting的值是s,而不是x,这意思就是setuid permission bit被设置了。这意味着
当某个人运行该程序时,他是用该文件的owner的权限来运行的,而不是运行该文件的进程所拥有的权限。这就使得一个运行oracle binary file的用户看起来像是
拥有了oracle用户的权限。因此,server processes执行oracle binary file时就好像它们是该文件的owner。
要设置setuid permission,你必须指定一个4位数的数值权限。如果你想要开启user和group级别的setuid permission,那么就用一个前导6,例如:
$ chmod 6751 $ORACLE_HOME/bin/oracle
$ ls -l oracle
-rwsr-sr-x
如果只是owner级别,那就用前导4,例如:
$ chmod 4751 $ORACLE_HOME/bin/oracle
$ ls -l oracle
-rwsr-x--x
作为一个DBA,知道setuid permission很重要,因为根据Oracle的release,你也许需要诊断一些文件权限问题。
$ ls -altrd /tmp,结果是drwxrwxrwt,其中t预示着sticky bit在那个目录上被启用了,此时只有file owner才能够删除那个目录下的文件。
设置stick bit的语法如下:
chmod +t <shared directory>
或
chmod 3775 <shared directory>
==========改变文件Ownership和Group Membership:
# chown oracle:dba /var/opt/oracle
该目录的owner就变成了oracle,组变成了dba。
如果你只想修改一个文件的group权限,那就要用chgrp命令:$ chgrp -R dba *.sql
chown user file
chown user:group file
chown :group file
$ chown -R --reference . *
意思是根据当前工作目录上的ownership和group递归地改变某个目录树下的所有文件上的ownership和group。
文件权限相关命令
猜你喜欢
转载自zsjg13.iteye.com/blog/2174151
今日推荐
周排行