linux-权限管理

linux系统是一个多用户多任务的系统,多任务指的是能同时执行多个任务,比如能一边用音乐播放器听歌一边用编辑器写代码。而多用户指的是,多个人一起登录和使用这个系统,这就会引出一个问题。多个人使用一个系统的时候,A必定不希望B能修改他的文件,比如辛辛苦苦写的代码如果给改了或删除了,那必定会吐血不止。

所有这时候就要引入文件权限的概念,来限制用户访问或修改某些文件。

文件权限

在linux系统中,每个文件都不同的权限,如读、写、执行 。可以用以下命令来查看

ls -l Desktop/

然后会显示以下的输出结果:

drwxr-xr-x 2 pete penguins 4096 Dec 1 11:45

下面来分析显示的信息:

第一部分:

    由10个字符组成 drwxr-xr-x,第一个字符d代表文件类型,代表目录(directory),一般情况下还有“-”,表示为普通文件。

    剩下的9个字符rwxr-xr-x,分别代表用户,组,和其他用户的读写执行权限,

  • r(readable),代表可读,
  • w(writable),代表可写入
  • x(excutable),代表可执行
  • -,权限为空

所以第一部分drwxr-xr-x表示的是,该文件是目录,用户具有读写执行的权限,组拥有读和执行的权限,其他用户也是拥有读和执行的权限

第二部分:

    2,   表示硬链接(hard link)个数,linux下的链接有点类似window下的快捷方式,不同的是,原文件修改的时候,链接也会跟着修改。

第三部分:

    表示文件的拥有者, pete表示该文件属于pete用户的

第四部分:

    表示文件所属的组

    penguins表示该文件属于penguins组的

剩下的部分:

    剩下的4096 Dec 1 11:45代表文件的大小和修改时间

 

修改文件权限

上面提到了,每个文件都拥有不同的权限,比如有的文件只具有可读的权限,却不具备可写入权限。这样的文件是没办法编辑保存的,而有时候又希望更改文件的内容,那怎么办呢?

可以用过chmod命令来修改权限,比如想给myfile添加可写入的权限,完整的命令如下:

chmod u+w myfile

chmod是(change mode)的简称,翻译过来就是改变模式。

如果要给文件添加执行的权限,命令如下:

chmod u+x myfile

u+x代表给用户添加可写入的权限,如果你希望给所属组添加的话,将参数改为g+x。

很自然的“+”号代表添加权限,那“-”自然就代表删除权限了。如果你想删除用户的可执行权限,可以改为u-x.

 

除此之外,还可以用8进制的形式修为文件的权限,比如通过这种方式赋予文件可执行的权限,可以用这个命令:

chmod 744 myfile

这种方式用起来确实简单一些,4表示可读,2表示可写入,1表示可执行,所以4+2+1=7,表示赋予用于可读可写可执行的权限。

剩下的44表示赋予组和其他用户可读的权限

 

修改文件拥有者

    上面提到了,每个文件都有对应的用户、所属组、其他用户,除了能修改文件的权限以为,还可以修改文件的拥有者。通过命令chown来实现,chown全称为(change owner),即改变拥有者的意思。

比如我想修改myfile文件的拥有者为jack,可通过以下命令:

chown jack myfile

 

文件初始权限

每个文件被创建的时候,都拥有初始的权限,如读和写的权限。如果你想修改文件初始权限可以通过 umask命令来实现

比如我想将文件的初始文件改为:拥有者(允许所有权限)、所属组(剥夺写入权限)、其他用户(剥夺执行权限)

umask 022

umask后面对应的数字,是剥夺相应的权限:

  •     0:空
  •     1:执行权限
  •     2:写入权限
  •     4:可读权限

 

三种特殊的权限

  SUID

前面提到了,每个文件都用对应的读写执行的权限,但是当运行以下命令时

ls -l /usr/bin/passwd

如果你注意看的话,会发现用户权限中多出来一个权限位,s

-rwsr-xr-x 1 root root 47032 Dec 1 11:45 /usr/bin/passwd

这个s的权限位的作用是什么呢?它允许所有运行这个程序的用户,都具有文件的所有者的权限。

这个文件的拥有者是root用户,即所有用户运行这个程序时,都具有管理员用户的权限

 

   为文件添加SUID

有两种方法可以为文件添加SUID

第一种通过符号的方式:

sudo chmod u+s myfile

第二种通过8进制数字的方式:

sudo chmod 4744 myfile

 

   SGID

很自然的,有了SUID,SUID允许任何运行程序的用户,都拥有程序所有者的权限。那就应该有一个SGID,允许任何运行程序的用户,拥有所属组的权限

当你运行以下命令时,如果注意看的话,会发现所属组的权限中多了一个s位

$ ls -l /usr/bin/wall

-rwxr-sr-x 1 root tty 19024 Dec 14 11:45 /usr/bin/wall

  为文件添加SGID

也是两种方式:

$ sudo chmod g+s myfile

$ sudo chmod 2555 myfile

 

sticky bit

还有最后一个要介绍的就是sticky bit,它的作用就是允许任何用户修改文件,但只允许文件的拥有者和管理员用户删除它

$ ls -ld /tmp

drwxrwxrwxt 6 root root 4096 Dec 15 11:45 /tmp

如果注意看的话,权限位的最后多出了一个t,即代表sticky bit。

 

为文件添加sticky bit

$ sudo chmod +t mydir


$ sudo chmod 1755 mydir

 

转载于:https://my.oschina.net/u/3785630/blog/1797502

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值