全部博文(2065)
分类:
2009-12-21 10:23:33
linux基本操作之shell专题一
[By:hkebao@126.com
Time:
本篇专题主要讨论一下有关文件权限与安全
文件权限可分为三类:
1.
文件属主,创建该文件的用户
2.
同组用户,拥有该文件的用户组中的任何用户。
3.
其他用户,即不属于拥有该文件的用户组的某一用户。
通过ls –l命令
-rwxr-xr-x 1
root root 19 11月
15 04:
其中的:
Rwx 文件属主权限 前三位
r-x 同组用户权限 中间三位
r-x 其他用户权限 最后三位
出现了- 表示当前位置的权限禁止了!
文件类型:
即出现在文件权限最前面的那个标识字符。像-
d l 等具体如下:
D 目录 像drwxr-xr-x 表示这个是一个目录
L 符号链接(相当于快捷键)
s 套接字文件
b 块设备文件
c 字符设备文件
p 命名管道文件
- 普通文件
1.3 改变权限
Chmod命令的一般格式为:
Chmod [who] operator [permission] filename
Who的含义:
u 文件属主权限
g 同组用户权限
o 其他用户权限
a 所有用户(文件属主、同组用户及其他用户)
operator的含义:
+ 增加权限
-
取消权限
= 设定权限
Permission的含义:
R 读权限
W 写权限
X 执行权限
S 文件属主和组set-ID
T 粘性位*
L 级文件加锁
示例:
写了一个shell脚本赋上执行权限方法:chmod
u+x filename
我们一般是用上面的方法进行赋上权限或去掉权限的。当然我们也可以用下面这种方式绝对模式的办法进行操作权限
格式:chmod [mode] file
其中的mode 是一个八进制数
0400 文件属主可读 chmod u+r filename (切记会将这个文件原来的权限去掉的!)
0200 文件属主可写 chmod u+w filename
0100 文件属主可执行 chmod u+x filename
0040 同组用户可读 chmod g+r filename
0020 同组用户可写 chmod g+w filename
0010 同组用户可执行 chmod g+x filename
0004 其他用户可读 chmod o+r filename
0002 其他用户可写 chmod o+w filename
0001 其他用户可执行 chmod o+x filename
如果能够记得住就直接可以
chmod 0001 表示的话
如果你要赋多个权限 就要进行八进制相加操作了!
Chmod 0600 filename
表示的是 0400 + 0200 即添加上了两个权限进来了!
有一个更好的办法:
上面的这几个是有特点的 前三个是针对文件属主的权限、中间三个是针对同组用户的权限、后面是针对其他用户的权限!
我们可以累积运算如下:
Chmod 666 相当于 rw-rw-rw-
Chomd 777
rwxrwxrwx
其实背后是通过了这个八进制运算出来的结果!
(4 2 1 读代表4 写代表2 写代表 1) 这样进行计算出来的!
注意一点:文件目录的权限要高于文件权限!
示例:
有一个文件其权限是:-rwx
rwx rwx 应该来讲同组用户是能够有写权限的。但是由于这个文件所在的目录的权限位是:drwx
r—r-- 同组用户没有写权限。所以不能编辑!
1.6 suid/guid
Suid 意味着如果某个用户对属于自己的shell脚本设置了这种权限,那其他用户在执行这一脚本时也会具有其属主的相应权限。
示例:写一个脚本,然后设置一下它们的guid。这样我指定的一些用户只要执行这些脚本就能够完成相应的工作,而不用以DBA的身份登录,以免破坏数据库服务器。
查看UNIX中哪些命令也设置了guid与suid的方法
Cd /bin
ls -l | grep '^...s' 查找suid文件的
ls -l | grep '^...s..s' 查找suid和guid的!
设置suid/guid的例子
如果希望设置suid那就将相应的权限位之前的那一位设置为4;如果希望设置guid那就将相应的权限位之前权限位设置为2;如果希望两者都置位,那就可以将相应的权限位之前的那一位设置为4+2
第二种办法:
示例二、文件的本来权限是
rwx r-x r-x
通过这样的赋权限之后就为 chmod u+s b rws
r-x r-x
如果发现这个s为大写的S 则表示可以忽略它的存在了!
1.7 chown 与 chgrp
你可以将你所创建的文件改变它的所有权,把它的所有权交给另一个合法用户。可 以用用户名或用户ID号来完成这一操作!
Chown –R –h owner file
将一个文件的所有权丢给另一个用户的!
如果你希望查看自己属于哪些用户组,可以用如下的命令:
$Id
$uid=0(root) gid=0(root)
groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10
(wheel) context=root:system_r:unconfined_t
1.9 符号链接
存在两种类型的链接,软链接与硬链接。软链接其实就是一个指向文件的指针!
示例:
如果有一个文件位置在/usr/local/admin/sales
目录下有一个文件。现在想要让每个用户都想看到这份文件。那就可 以在每个用户的
$HOME目录下创建一个指向这个文件的链接。
命令的基本形式:
ln [-s] source_path target_path
其中的路径可以是目录也可以是文件!
小结:
Chmod –R 将改变整个文件系统的权限。一定要小心!
suid 不要以根用户设置suid