Ubuntu下的用户和权限(一)

一、基础

在某个目录下使用命令“ls -l”可以得到该目录下文件的详细信息,如:

-rw-------  1 m    m     30509  7月  8 00:26 .xsession-errors.old
drwxr-xr-x  2 m    m      4096  4月 15 19:59 公共的/
drwxr-xr-x  2 m    m      4096  4月 15 19:59 模板/
drwxr-xr-x  2 m    m      4096  5月  9 09:23 视频/
drwxr-xr-x  3 m    m      4096  7月  2 16:56 图片/
drwxr-xr-x  7 m    m      4096  6月 30 17:09 文档/
drwxr-xr-x  2 m    m      4096  7月  6 12:36 下载/
drwxr-xr-x  2 m    m      4096  7月  6 12:37 音乐/
drwxr-xr-x  2 m    m      4096  7月  8 10:13 桌面/

在linux中,用户是这样被管理的:首先把所有用户分成一个个的组(group),每个组下面有若干用户(user)。于是对于一个文件或目录,它的的权限就有三部分,分别是user本身(u),组里除了user的其他人group(g),然后就是组外的人,称为others(o),这三部分合在一起为all(a)。

对应ls -l命令的输出,每行的前十个字符为该文件或目录的属性,第一个表示其文件类型,这个不多说;后面9个分为三组,每组三个字符,分别表示u、g、o三组的权限。linux下文件的权限一般分为三种:读(r)、写(w)、执行(x)。由上面可以看出,某组权限的三个字符位中,从前往后依次为读、写、执行,若有相应的权限就会显示该权限的表示字符,若没有则用“-”表示。

二、chmod命令

首先要po上一张表,我们已经知道每组有三个权限,每个权限位有两种状态,于是三个位组合起来就有8种状态,如下:

Octal     Binary        FileMode

0            000             ---

1            001             --x
2            010             -w-

3            011            -wx
4            100            r--
5            101            r-x
6            110            rw-
7            111            rwx

           这张表的目的是为了简化权限的表示,不必每次都写全部字母,用一个数字就可以代替。那么如何理解这张表有两种方式:

1、每个权限位都有两种状态,有或者没有,分别表示为0或1,那么权限的八种状态很自然的就是三个位的0、1组合,每个组合可以用一个八进制数字表示,就如表的最左边那一列所示;

2、我们赋予每种权限以不同的数值,r为4,w为2,x为1,-为0,那么每组所拥有的权限就是每种权限数值的和。

          总之,无论哪种方式,我们的目的就是得到表格最左边那一列的八进制数字。下面我们就用chmod命令来修改一个文件的权限。


最基本的: chmod  ???  filename   每个?代表一个组的权限。比如 chmod 777 filename 表示给filename的每一组都赋予全部的权限。

升级:  chmod  u/g/o/a  +/-/=  r/w/x  这种格式, 首先给出要赋予的组名称,如u,ug,go,uo,a等,如果不写则默认为a;然后给出运算符,+表示添加,-表示移除,=表示设置;最后就是权限的组合了,如r,rw,wx等。

例: chmod o + wx filename; chmod u - x filename; chmod + w filename; chmod go = r filename; 

如果要分别设置多个组的不同权限,需要用逗号隔开,如: chmod u - x, go = r filename 


三、umask命令(待续)

四、超级用户权限命令:su和sudo

         在linux下,只有一个超级用户root,拥有超级权限,其家目录就是/root。其他的都是普通用户,家目录是/home下用username命名的文件夹。Ubuntu有一个与众不同的特点,那就是初次 使用时,你无法作为root来登录系统,为什么会这样?这就要从系统的安装说起。对于其他Linux系统来说,一般在安装过程就设定root密码,这样用 户就能用它登录root帐户或使用su命令转换到超级用户身份。与之相反,Ubuntu默认安装时,并没有给root用户设置口令,也没有启用root帐 户。   root 用户和安装系统时的用户是两回事,除非安装时用户名取名 root。

1、su

       su用来切换当前用户到指定的用户,其格式为:su 参数 username。省略username时,默认为root。

       一般使用的参数有:-l (login),表示改变用户的同时也加载该用户的环境设置,可以简写为-,即省略l;-p(),表示不改变环境变量的设置;  -c (command),这个参数后面需要跟一个用单引号括起来的命令,表示切换到某个用户后只执行这一条命令,完毕后再回到原来的用户。

2、sudo

        su可以直接切换到root用户从而获取最高权限,但这也增加了风险。一般情况下,作为普通用户只需要在某几个时刻才会用到root权限,普通用户的权限足以运行大部分的命令。这样一来,就没必要先切换到root身份打完命令再切换回来。

        sudo就是为了解决这一需求而产生的。它只要求普通用户输入自己的密码而不是root的密码就可以暂时性的获得root权限,“暂时性”是指只运行一条命令,完事就失去root权限。有点像上面的su -c ,但后者要求root密码。
       我们可以简单的理解成:su获得稳定的超级用户(或其他用户权限),sudo获得暂时性的限制了的root权限,一段时间之后会失效。

       当然sudo的作用远不止此,实际上,sudo有点像可以精细控制的su,不仅可以暂时性获得root权限,也可以获得其他用户的权限;不仅在获取某个用户权限后可以执行全部命令,还可以限制他只执行某些命令——因为只需要执行某几个命令的情况下而给予全部命令的执行权限是危险的且不必要的。能够实现这种精细控制的办法就是修改sudo的配置文件。

sudo的配置文件是/etc/sudoers,在修改该配置文件时,务必使用visudo工具 来进行编辑,因为该工具会自动对配置语法进行严格检查,如果发现错误,在保存退出时给出警告,并提示你哪段配置出错,从而确保该配置文件的正确性。相反, 如果使用其它的文本编辑程序的话,一旦出错,就会给系统带来严重的后果。下面给出的是Ubuntu默认的/etc/sudoers文件内容:

# User privilege specification

root ALL=(ALL) ALL

# Members of the admin group may gain root privileges

%admin ALL=(ALL) ALL

第 一项配置的作用,是允许root用户使用sudo命令变成系统中任何其它类型的用户。第二个配置规定,管理组中的所有成员都能以root的身份执行所有命 令。

例:jorge ALL=(root) /usr/bin/find, /bin/rm

第一栏规定它的适用对象:用户或组,就本例来说,它是用户jorge。此外,因为系统中的组和用户可以重名,要想指定该规则的适用对象是组而非用户的话,组对象的名称一定要用百分号%开头。第二栏指定该规则的适用主机。当我们在多个系统之间部署sudo环境时,这一栏格外有用,这里的ALL代表所有主机。但是,对于桌面系统或不想将sudo部署到多个系统的情况,这一栏就换成相应的主机名。第三栏的值放在括号内,指出第一栏规定的用户能够以何种身份来执行命令。本例中该值设为root,这意味着用户jorge能够以root用户的身份来运行后面列出的命令。该值也可以设成通配符ALL,jorge便能作为系统中的任何用户来执行列出的命令了。最 后一栏(即/usr/bin/find, /bin/rm)是使用逗号分开的命令表,这些命令能被第一栏规定的用户以第三栏指出的身份来运行它们。本例中,该配置允许jorge作为超级用户运行 /usr/bin/find和 /bin/rm这两个命令。需要指出的是,这里列出的命令一定要使用绝对路径。


sudo命令默认的切换用户是root,要想以非root用户身份来运行命令,必须使用-u选项来指定想要作为的用户,当然前提是在sudoers中配置好了。比如要想以fred身份来执行ls命令,就应该这样:$ sudo -u fred ls /home/fred,没有“-u fred”时就默认为切换到root。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值