linux权限控制
1、Linux权限说明
linux的文件夹也有三种权限分别是:
r(Read 读取):对文件有读取文件内容的权限(cat指令);对目录有查看目录下内容的权限(ls命令)。
x(eXecute 执行):对文件有执行文件的权限(./指令);对目录该有进入目录的权限(cd命令)。
w(Write 写入):对文件有增加、删除、修改文件内容的权限;对目录有增加、删除、修改目录下内容的权限。w 是可以在目录下创建、修改、删除文件,不仅可以修改自己的文件也可以修改别人的文件,因此增加了一个t 权限对 x 权限进行了限制,表示只可以修改自己的文件。
umask 命令可以设置系统的权限掩码,即可以控制文件夹、文件生成时的默认权限。文件夹的默认权限是755、文件的权限644.root 帐号的umask是022,而普通用户的umask是002,这代表root用户的文件对于其他用户来说默认的权限更少。文件的默认权限是用666减umask,而文件夹的默认权限是用777减umask,这样的话相当于无论何时生成的文件的默认权限都是不可能有运行的权限。umask的设置可以在配置文件 /etc/bashrc 中进行设置、更改。
2、改变权限
改变拥有者chown(change owner):
chown yly tmp //改变文件tmp的拥有者为yly用户
chown -R yly:yly tmp //改变tmp文件及其下的文件和子目录的权限为yly用户:yly组
说明:要改变的文件拥有者,也就是用户名必须存在于/etc/passwd文件中,否则就会显示错误。另外用户密码
是保存在/etc/shadow文件夹中的。
改变群组chgrp(change group):
chgrp yly tmp //改变tmp文件的群组为yly组
说明:要改变的目标群组名称必须在于/etc/group文件中存在,否则就会显示错误。
注意:当使用cp指令复制文件时,被复制的文件拥有者和群组仍没有改变,此时需要使用以上指令进行设置。
改变文件权限chmod
㈡ linux如何给文件设置只读权限
可以用chmod 命令修改文件权限。
chmod命令是非常重要的,用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
用法:
文字设定法:
chmod [who] [+ | - | =] [mode] 文件名¼
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置mode所表示的权限可用下述字母的任意组合:
r 可读。
w 可写。
x 可执行。
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件 的用户ID位,“g+s”设置组ID位。
t 保存程序的文本到交换设备上。
u 与文件属主拥有一样的权限。
g 与和文件属主同组的用户拥有一样的权限。
o 与其他用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符。
在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+r,o+r example使同组和其他用户对文件example 有读权限。
数字设定法:
数字表示的属性的含义:
0表示没有权限
1表示可执行权限
2表示可写权限
4表示可读权限
然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)
如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)
㈢ linux的权限分配特点
Linux中的用户与用户组
1、Linux多用户、多任务的特性
不同用户具有不同的权限,每个用户在权限允许的范围内完成不同的任务,
Linux正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。
2、Linux用户的分类(3种)
在Linux下用户是根据角色定义的,具体分为三种角色
每个用户都有一个UID,并且是唯一的,通常UID号的取值范围是0~65535,
a. 管理员(超级用户):拥有对系统的最高管理权限 ,默认是root用户【0】
b. 系统用户(虚拟用户):
也叫“伪”用户,这类用户最大特点是不能登录系统, 它们的存在主要是为了方便系统管理,满足相应的系统进程对文件属主的要求。
例如,系统默认的bin、adm、nobody用户等,一般运行的web服务,默认使用的就是nobody用户,但是nobody用户是不能登录系统的【1-499】
(运行后台程序,daemon守护进程)
c. 普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限
例如,上面提到的crx用户,A,B用户等【500+】
3、用户和组的概念
我们知道,Linux是一个多用户多任务的分时操作系统,如果要使用系统资源,就必须向系统管理员申请一个帐户,然后通过这个帐户进入系统。这个帐户和用户是一个概念。
通过建立不同属性的用户,一方面,可以合理利用和控制系统资源;
另一方面,也可以帮助用户组织文件,提供对用户文件的安全性保护.
每个用户都用一个唯一的用户名和用户密码,在登录系统时,只有正确输入了用户名和密码,才能进入系统和自己的主目录。
用户组是具有相同特征用户的逻辑集合。
通过定义用户组,在很大程度上简化了管理工作
4、用户和组的关系:
用户和用户组的对应关系有:一对一、一对多、多对一、多对多
一对一:一个用户可以存在一个组中,也可以是组中的唯一成员。
一对多:一个用户可以存在多个用户组中,此用户具有多个组的共同权限
多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限
多对多:多个用户可以存在多个组中,其实就是上面三个对应关系的扩展
为了方便用户管理,提出了“组”的概念,可以给组分配权限,把相同用户的权限放在同一个组中
5、三个重要配置文件
(1)/etc/passwd (冒号“:”为分隔符)
由于/etc/passwd文件是所有用户都可读的,因此就导致了用户的密码容易出现泄露,于是,Linux将用户的密码信息从/etc/passwd中分离出来,单独放到一个文件中, 这个文件就是/etc/shadow。该文件只有root用户拥有读权限,从而保证了用户密码的安全性。
现在许多linux版本都使用了shadow技术,把真正加密后的用户密码存放到/etc/shadow文件中,而在/etc/passwd文件的密码字段只存放一个特殊的字符,例如用“x"或者"*"来表示。
(3)/etc/group
5、每个用户和每个用户组都有一个属于自己惟一的一个ID(分别是UID和GID)
6、什么是shell ?
shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。相当于一个翻译官。Linux下常用的shell用sh、bash、csh等,
㈣ Linux怎样限制普通用户权限
你这个权限要求是有矛盾的,可以reboot,就说明可以使用root权限!
reboot是需要有root权限才能操作的。
不允许su成root,很简单,不告诉他root密码就可以了。但是对于ubuntu,第一个普通用户(一般是系统安装时生成的用户)默认可以使用sudo提升成root的!不推荐去限制它使用sudo(如果你非不让它有sudo权限,将它从admin组中去除就可以了,但是请确保你已经设置了root的密码了!不然你就无法获得root权限了!切记!)。
第二个及以后的用户默认就不能使用sudo提升成root了。
㈤ Linux权限管理基本知识
Linux权限管理基本知识大全
Linux系统有什么基本权限,权限管理命令是什么?下面跟我一起来看看吧!
一、基本权限
linux权限机制采用UGO模式。其中 u(user)表示所属用户、g(group)表示所属组、o(other)表示除了所属用户、所属组之外的情况。
u、g、o 都有读(read)、写(write)、执行(excute) 三个权限,所以UGO模式是三类九种基本权限。
用命令 ls -l 可列出文件的权限,第一列输出明确了后面的输出(后面一列代表 ugo权限)。第一个字母对应的关系:
“-” 普通文件
“d” 目录
”l“ 符号链接
”c“ 字符设备
"b" 块设备
"s" 套接字
"p" 管道
修改文件或目录的所属用户: chown 文件名 | 目录名 用户
-R 该参数以递归的方式修改目录下所有文件的所属用户,参数可以敲 chown --help 查看。
修改文件或目录的所属组: chgrp 文件名 | 目录名 组名
-R 该参数以递归的方式修改目录下的所有文件的'所属组。
命令chmod 用来修改文件或目录的权限: chmod -参数 模式 文件 | 目录
例子: 修改目录 log下所有文件的权限为700
chmod -R 700 log
注:700的来历是 u g o
rwx rwx rwx
111 000 000
关于 chmod 命令的权限模式除了数字表示,还可以是 u、g、o 、a 加 +、- 来表示。格式如下:u、g、o分别代表用户、属组和其他,a 就是
all ,可以代替ugo。 +、- 代表增加或删除对应的权限,r、w、x 代表三种权限,分别是读、写、执行。
例子:对于目录 log下的所有文件(已有权限是700)增加所属组(g)的读(r)、执行(x)权限。
chmod -R g+rx log
类似的命令可能还有很多,这里只是举几个最基本且常用的例子。很多命令用到时,再去查也可以。还可参考《鸟哥的Linux私房菜》。
二、特殊权限
Linux的3个特殊的权限,分别是setuid、setgid和stick bit。
setuid权限(S):只有用户可拥有,出现在执行权限(x)的位置。
setuid权限允许用户以其拥有者的权限来执行可执行文件,即使这个可执行文件是由其他用户运行的。
setgid权限(S):对应于用户组,出现在执行权限(x)的位置。
setgid权限允许以同该目录拥有者所在组相同的有效组权限来允许可执行文件。但是这个组和实际发起命令的用户组不一定相同。
stick bit (t /T):又名粘滞位,只有目录才有的权限,出现在其他用户权限(o)中的执行位置(x)。当一个目录设置了粘滞位,只有创建了该目录的用户才能删除目录中的文件,但是其他用户组和其他用户也有写权限。使用 t 或 T来表示。若没有设置执行权限,但是设置了粘滞位,使用 t;若同时设置了执行权限和粘滞位使用 T。典型的粘滞位使用是 /tmp 目录,粘滞位属于一种写保护。
设置特殊权限:
setuid: chmod u+s filename
setgid: chmod g+s directoryname
stick bit: chmod o+t directoryname
用数字表示特殊权限,是在基本权限之上的。浊嘴笨腮说不清楚,看例子:
例子:将上面例子中的log日志目录(已有权限 700)权限设置为755。特殊权限是类似 /tmp目录的 stick bit有效。
特殊权限 基本权限
setuid setgid stick bit user group other
0 0 1 rwx rwx rwx
111 000 000
所以,设置特殊权限(stick bit)的命令应该是:chmod 1755 log
设置特殊权限后,ls -dl 查看该目录:drwxr-xr-t 2 gg gg 4096 5月 11 19:05 log ( 注意 other 的 x 位是代表特殊权限的字母 t )
取消该特殊权限的命令:chmod 755 log 。如此 stick bit的权限就没有了。
再次 ls -dl 查看该目录: drwxr-xr-x 2 gg gg 4096 5月 11 19:15 log ( 注意最后一位已经变为代表普通权限的字母x )
需要注意的是,最前面一位 ”1“ 就是特殊权限位。其他两个特殊权限的设置也类似。setuid使用不是无限制的。出于安全目的,只能应用在Linux ELF格式二进制文件上,而不能用于脚本文件。
三、高级权限
ACL(Access Control List),访问控制列表是Linux下的的高级权限机制,可实现对文件、目录的灵活权限控制。ACL 允许针对不同用户、
不同组对同一个目标文件、目录进行权限设置,而不受UGO限制。
在一个文件系统上使用ACL需要在挂载文件系统的时候打开ACL功能。而根分区(ROOT)默认挂载的时候支持ACL。
命令:mount -o acl /挂载路径
例子:mount -o acl /dev/sdb1 /mnt
查看一个文件的ACL设置的命令: getfacl file
(针对一个用户)为一个文件设置指定用户的权限的命令: setfacl -m u:username:rwx filename
(针对一个组)为一个文件设置指定组的权限的命令: setfacl -m g:groupname:r-x filename
删除一个ACL设置的命令: setfacl -x u:username filename
;㈥ 如何在Linux下设置访问控制列表(ACL)来控制用户的权限
Linux下的访问控制列表(ACL)主要用来控制用户的权限,可以做到不同用户对同一文件有不同的权限,那么具体要如何操作呢?下面小编就教你如何在Linux下设置访问控制列表(ACL)来控制用户的权限。
使用拥有权限控制的Liunx,工作是一件轻松的任务。它可以定义任何user,group和other的权限。无论是在桌面电脑或者不会有很多用户的虚拟Linux实例,或者当用户不愿意分享他们之间的文件时,这样的工作是很棒的。然而,如果你是在一个大型组织,你运行了NFS或者Samba服务给不同的用户,然后你将会需要灵活的挑选并设置很多复杂的配置和权限去满足你的组织不同的需求。
Linux(和其他Unix等POSIX兼容的操作系统)有一种被称为访问控制列表(ACL)的权限控制方法,它是一种权限分配之外的普遍范式。例如,默认情况下你需要确认3个权限组:owner、group和other。而使用ACL,你可以增加权限给其他用户或组别,而不单只是简单的“other”或者是拥有者不存在的组别。可以允许指定的用户A、B、C拥有写权限而不再是让他们整个组拥有写权限。
ACL支持多种Linux文件系统,包括ext2, ext3, ext4, XFS, Btfrs, 等。如果你不确定你的文件系统是否支持ACL,请参考文档。
在文件系统使ACL生效
首先,我们需要安装工具来管理ACL。
Ubuntu/Debian 中:
$ sudo apt-get install acl
CentOS/Fedora/RHEL 中:
# yum -y install acl
Archlinux 中:
# pacman -S acl
出于演示目的,我将使用ubuntu server版本,其他版本类似。
安装ACL完成后,需要激活我们磁盘分区的ACL功能,这样我们才能使用它。
首先,我们检查ACL功能是否已经开启。
$ mount
你可以注意到,我的root分区中ACL属性已经开启。万一你没有开启,你需要编辑/etc/fstab文件,在你需要开启ACL的分区的选项前增加acl标记。
现在我们需要重新挂载分区(我喜欢完全重启,因为我不想丢失数据),如果你对其它分区开启ACL,你必须也重新挂载它。
$ sudo mount / -o remount
干的不错!现在我们已经在我们的系统中开启ACL,让我们开始和它一起工作。
ACL 范例
基础ACL通过两条命令管理:setfacl用于增加或者修改ACL,getfacl用于显示分配完的ACL。让我们来做一些测试。
我创建一个目录/shared给一个假设的用户,名叫freeuser
$ ls -lh /
我想要分享这个目录给其他两个用户test和test2,一个拥有完整权限,另一个只有读权限。
首先,为用户test设置ACL:
$ sudo setfacl -m u:test:rwx /shared
现在用户test可以随意创建文件夹,文件和访问在/shared目录下的任何地方。
现在我们增加只读权限给用户test2:
$ sudo setfacl -m u:test2:rx /shared
注意test2读取目录需要执行(x)权限
让我来解释下setfacl命令格式:
-m 表示修改ACL。你可以增加新的,或修改存在的ACLu: 表示用户。你可以使用 g 来设置组权限test 用户名:rwx 需要设置的权限。
现在让我向你展示如何读取ACL:
$ ls -lh /shared
你可以注意到,正常权限后多一个+标记。这表示ACL已经设置成功。要具体看一下ACL,我们需要运行:
$ sudo getfacl /shared
最后,如果你需要移除ACL:
$ sudo setfacl -x u:test /shared
如果你想要立即擦除所有ACL条目:
$ sudo setfacl -b /shared
最后,在设置了ACL文件或目录工作时,cp和mv命令会改变这些设置。在cp的情况下,需要添加“p”参数来复制ACL设置。如果这不可行,它将会展示一个警告。mv默认移动ACL设置,如果这也不可行,它也会向您展示一个警告。
总结
使用ACL让在你想要分享的文件上拥有更多的能力和控制,特别是在NFS/Samba服务。此外,如果你的主管共享主机,这个工具是必备的。
上面就是Linux下设置访问控制列表来控制用户权限的方法介绍了,因为ACL的配置和使用较为复杂,初学者在使用的时候容易出现错误,希望本文介绍的方法能够帮助到你。