`
zsjg13
  • 浏览: 137957 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

文件权限相关命令

阅读更多

==========列举文件:
(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。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics