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),组里人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

sudo是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务这样一来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。sudo设计者的宗旨是:给用户尽可能少的权限但仍允许完成他们的工作。该命令为管理员提供了一种细颗粒度的访问控制方法,通过它人们既可以作为超级用户又可以作为其它类型的用户来访问系统。这样做的好处是,管理员能够在不告诉用户root密码的前提下,授予他们某些特定类型的超级用户权限,这正是许多系统管理员所梦寐以求的。

我们可以简单的理解成:su获得稳定的超级用户(或其他用户权限),sudo获得暂时性的限制了的超级用户权限,一段时间之后会失效。 sudo 使用命令时不需要用户输入 root 的密码,只需要输入自己帐号的密码即可拥有 root
权限,当然,前提是该用户被允许使用 sudo 命令。

默认时,Ubuntu为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的身份执行所有命 令。

接下来,我们用一个实例来详细解释/etc/sudoers文件的配置语法,请看下面的例子: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这两个命令。需要指出的是,这里列出的命令一定要使用绝对路径。

要想以非root用户身份来运行命令,必须使用-u选项来指定想要作为的用户;否则的话,sudo会默认为root用户,比如要想以fred身份来执行ls命令,就应该这样:$ sudo -u fred ls
/home/fred,这是和su命令不太一样的地方。

Ubuntu下的用户和权限

时间: 2024-10-18 23:43:41

Ubuntu下的用户和权限的相关文章

Ubuntu下的用户和权限(三)

七.增删群组相关的命令 同样的我们要先介绍两个重要的设定档:/etc/group和/etc/gshadow,前面那个其实和/etc/passwd一样,而后者就是群组的密码表了.先看看长啥样: root:x:0: adm:x:4:m,syslog m:x:1000: 这是截取的/etc/group的一部分,每行被冒号分成四段,第一段是群组名:第二段是密码: 第三段是gid:第四段就是该组下面的成员了. 我们看到root和m群组第四段是空的,而adm群组的第四段有两个成员,为什么会有这种区别呢?原来

Ubuntu下的用户和权限(二)

五.chown.chgrp命令 从名字就可以推测他们是干嘛的,但是这两个命令需要root权限. chown命令的格式为:chown user:group file  中间的user : group三项可以根据需要省略某部分.比如现在有个文件file属于用户bob,bob的权限是rwx,而bob属于组group1,group1的权限是r.有另外一个用户jack属于group2. chown jack file 这就把file的woner从bob改成了jack,但是file所属的群组仍然是group

ubuntu 下修改文件访问权限chmod 777 -R *

本文转自: 个人建议 Ubuntu下修改目录权限命令如下:chmod 600 name (只有所有者有读和写的权限)chmod 644 name (所有者有读和写的权限,组用户只有读的权限)chmod 700 name (只有所有者有读和写以及执行的权限)chmod 666 name (每个人都有读和写的权限)chmod 777 name (每个人都有读和写以及执行的权限) 其中 name 指文件名,也可以是目录名. 整个命令的形式是chmod ×××(所有者)×××(组用户)×××(其他用户)

阿里云Ubuntu下安装、配置权限和导入本地mongodb

---恢复内容开始--- 第一部分:首先先在Ubuntu下安装好mongodb,步骤如下: 首先我们需要借助远程管理工具链接到阿里云上的ubuntu系统,接着进行如下操作 一.导出软件源的公钥 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 二.为mongodb创建软件源list文件 ubuntu12.04版本 echo "deb http://repo.mongodb.org/apt/ubun

ubuntu下普通用户使用wireshark的权限问题

解决方法如下: 1.添加wireshark用户组 sudo groupadd wireshark 2.将dumpcap更改为wireshark用户组 sudo chgrp wireshark /usr/bin/dumpcap 3.让wireshark用户组有root权限使用dumpcap sudo chmod 4755 /usr/bin/dumpcap 4.将需要使用的用户名加入wireshark用户组 sudo gpasswd -a soldier wireshark 注:我的用户名是sold

ubuntu 下root用户无法访问声音设备的解决方案

原因:root用户没有对pulsaudio的访问权限,而且pulsaudio默认是不能在root下自动启动解决办法: 一.修改自动启动:编辑 gedit /etc/default/pulseaudio,将下面两项改为和下面的一样PULSEAUDIO_SYSTEM_START=1DISALLOW_MODULE_LOADING=0                          二.添加权限:将root分别添加到pulse组和pulse-access组,不添加的话是没有权限访问声音设备的gpass

ubuntu下修改文件夹权限

常用方法如下: sudo chmod 600 ××× (只有所有者有读和写的权限)sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)sudo chmod 700 ××× (只有所有者有读和写以及执行的权限)sudo chmod 666 ××× (每个人都有读和写的权限)sudo chmod 777 ××× (每个人都有读和写以及执行的权限) 其中×××指文件名(也可以是文件夹名,不过要在chmod后加-ld). 解释一下,其实整个命令的形式是sudo chmod

【转】ubuntu下修改文件夹权限

常用方法如下: sudo chmod 600 ××× (只有所有者有读和写的权限)sudo chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)sudo chmod 700 ××× (只有所有者有读和写以及执行的权限)sudo chmod 666 ××× (每个人都有读和写的权限)sudo chmod 777 ××× (每个人都有读和写以及执行的权限) 其中×××指文件名(也可以是文件夹名,不过要在chmod后加-ld). 解释一下,其实整个命令的形式是sudo chmod

MVC开发模式下的用户角色权限控制

前提: MVC开发模式 大概思想: 1.在MVC开发模式下,每个功能都对应着不同的控制器或操作方法名(如修改密码功能可能对应着User/changepd),把每个功能对应的控制器名和操作方法名存到数据库中,分别分配一个Id,这样,每个功能就都对应着一个Id. 2.在用户表中,每个用户都有一个用户角色(类似用户组)id 3.在角色表中,每个角色id都存放着他们自身角色所拥有的功能id的集合 然后在判断权限时,通过用户的角色Id获取相关功能id集合,然后判断当前访问的功能id是否在集合中,大致如此.