文件权限与安全

本文主要介绍Shell基础中的文件的权限及安全,其中涉及到setuidguidchownchgrpumaskchmodln等命令。

1、 文件

ls 查看文件的属性命令

ls –al

参数:

-a 查看所有属性

-l 以长命令方式列出所有属性

2、文件类型

文件类型主要是指采用ls –l可以看到该文件所属的类型

d 该文件是目录

l 链接符号(指向另一个文件)

s 套接字文件

b 块设备文件

c 字符设备文件

p 命名管道文件

- 普通文件

3、 创建一个新文件

Touch:创建一个新文件命令

Touch myfile 生成一个新的文件myfile

4、 修改文件的权限

Chmod:修改文件的权限

a 、符号模式修改权限

Chmod [who] operator [permission] filename

Who的含义:

u 文件属主权限

g 同组用户权限

o 其他用户权限

a 所有用户权限

Operator的含义

+ 增加权限

- 取消权限

= 设定权限

Permission的含义

r 读权限

w 写权限

x 可执行权限

s 文件属性和组set-ID

t 粘贴位 *(若出现t位,则意味着目录中的文件只有其属主才可以删除)

举例如下:

Chmod a-x myfile rw- rw- rw- 收回所有用户的执行权限

Chmod g +x myfile rw-rwxrw- 对同组用户赋予可执行权限

Chmod u+x myfile rwxrwxrw- 对当前属主用户赋予可执行权限

b 、绝对模式修改权限

chmod mode file

分别利用八进制数据来表示当前用户、同组用户及其它用户当前的权限。若全部拥有权限则表示成为:111—>7110—>6101à5100—>4011à3010à2001à1000à0

Chmod 777 myfile rwxrwxrwx 将该文件的所有权限赋予给所有用户

Chmod 664 myfile rw-rw-r-- 赋予当前用户及同组用户可读写权限,而其它用户可读

在采用chmod命令修改文件权限时,只能修改当前文件的权限,若想修改该目录下所有文件的权限,则需要借助于命令行参数 –R,采用迭代方式修改该目录下所有文件权限。

5、 suid /guid的设置

该权限会带来一定的安全隐患,所以一般不采用。它主要用在要将该文件的权限设置为拥有者一样的权限,即管理员一样的权限。所以可能会由于操作不当引来麻烦。

它在设置的时候主要是在chmod中模式前面加入一个数字,若设置 suid时加入4、若设置guid设置为2,若两个均设置则设置为6。具体如下所示:

Chmod 4755 rwsr-xr-x 文件被设置了suid,属主具有读、写、执行权限;其它用户有读、写权限

Chmod 6711 rws—s—s 文件设置了suidguid,属主具有读、写、执行权限,其它用户具有执行权限

Chmod 4764 rwsrw-r-- 文件设置了suid,属主具有读、写和执行权限,同组用户具读、写权限,其它用户具有读权限

6、 改变文件的所有权

a、 改变文件的拥有者

Chown –R –h owner file

-R 表示迭代方式将该目录下所有文件所有权全部改变

-h 表示改变符号链接文件的属主时不影响该链接指向的目标文件

示例:

Chown zhaozheng myfile myfile文件的所有权改变为zhaozheng所有

b 、改变文件所在的组

chgrp -R –h owner file

Chgrp admin myfile myfile所在的组变为admin

7、 找出你所属于的组

Group :找出你所属于的组

Id 与上述的功能类似

Group[用户名] :找出[用户名]所在的组

8、 创建文件时的默认权限设置

Umask:该命令确定了你创建文件的缺省模式。它实际上和chmod命令正好相反。

该命令一般是在/etc/profile文件中设置,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久性地设置自己的umask值,那么就把它放在自己的$HOME目录下的.profile.bash_profile文件中。

一般形式:umask nnn

其中nnn 表示设置umask的值,在000-777之间。但要注意文件的最大值为6、而目录的最大值可以为7

Umask 002 生成文件时对应的默认权限即为664,而生成目录对应的默认权限为775

Umask 022

Touch myfile :此时生成的文件的权限为644

9、 符号连接

它表示一个指向文件的指针,可以通过方便的访问来实现一个深层次目录下的文件或者将要管理的文件堆放在一个方便管理的地方。

Ln 软链接命令

Ln -s sourcepath destpath

ln –s /usr/local/menu/sales.profile /home/zhaozheng/.profile

/usr/local/menu/sales.profiley文件链接到/home/zhaozheng/.profile,可以通过后者来访问文件

你可能感兴趣的:(文件权限)