重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
linux权限设置命令用ls命令所得到的表示法的格式是类似这样的:-rwxr-xr-x 。下面解析一下格式所表示的意思。这种表示方法一共有十位: 9 8 7 6 5 4 3 2 1 0 - r w x r - x r - x 第9位表示文件类型,可以为p、d、l、s、c、b和-: p表示命名管道文件 d表示目录文件 l表示符号连接文件 -表示普通文件 s表示socket文件 c表示字符设备文件 b表示块设备文件 第8-6位、5-3位、2-0位分别表示文件所有者的权限,同组用户的权限,其他用户的权限,其形式为rwx。linux下用chmod(change file modebit)改变一个文件的权限一般有两种方式:1、chmod [ugoa][+-=][rwx] filename这种方法很直观,u代表拥有者(user),g代表组(group),o代表其它用户(other),a代表所有用户(all)。+-=代表增加、去除、设置为相应的权限。rwx分别代表读(read)、写(write)、执行(exe)。比如chmod a+x filname 表示对所有用户增加对filename的执行权限。2.setUid,setGid如果一个命令被设置了SUID,那么这个命令在执行期间,执行这个命令的用户就具有了这个命令的属主的权限;如果一个命令被设置了SGID,那么这个命令在执行期间,执行这个命令的用户就具有了这个命令的属组的权限.设置SetUid权限: chmod 4xxx filename取消SetUid权限: chmod xxx filename设置SetGid权限: chmod 2xxx filename取消SetGid权限: chmod xxx filename如果执行chmod 6xxx filename命令即可同时为指定文件设置SetUid和SetGid,执行命令chmod 0xxx filename,即可同时取消指定文件的SetUid和SetGid权限。
创新互联拥有网站维护技术和项目管理团队,建立的售前、实施和售后服务体系,为客户提供定制化的网站设计制作、网站建设、网站维护、德阳服务器托管解决方案。为客户网站安全和日常运维提供整体管家式外包优质服务。我们的网站维护服务覆盖集团企业、上市公司、外企网站、商城建设、政府网站等各类型客户群体,为全球上1000+企业提供全方位网站维护、服务器维护解决方案。
例子:
对于上面的语法 chmod 【{ugoa}{+-=}{rwx}】【文件或目录】,我们要知道ugoa分别是:u:表示所有者,g:表示所属组,o:表示其他人,a:表示所有人。而rwx表示的意思如下:
对于【mode=421】【文件或目录】,这是我们将权限用数字表示,其中 r 表示4,w表示2,x表示1,分别是2的0次方,1次方,2次方。那么我们可以这样理解:具有 rwx 权限的数字就是 7,具有 rw- 权限的数字是 6,具有 r-- 权限的数字是 4。
示例1:我们赋予 tmp 目录下的 tmp.log 所有者 x 的权限;赋予 所属组 w 权限,其他人 w 权限。
将上面例子改为用 数字来操作,也就是说我们要给 tmp.log赋予的文件权限是 rwxrw-rw-,用数字表示是766。
我们还可以递归赋予权限,也就是加上 -R 参数给指定目录下的所有文件或目录赋予指定权限。
示例2:给 tmp 目录下所有文件和目录赋予 776 的权限
这里我们通过useradd【用户名】命令创建用户,然后通过passwd【用户名】输入密码,这两个命令后面会将。我们通过这两个命令创建 vae 用户
然后我们将tmp.log的所有者更改为 vae 用户:chown vae tmp.log
其中umask 执行显示结果是 0022,第一个0表示特殊权限,后面我们会单独进行讲解有哪几种特殊权限。022表示权限的掩码值,我们用7 7 7 减去 0 2 2得到755(是每一位相减),表示的就是下面通过加上-S输出的rwxr-xr-x,这个值用数字表示就是755.
这个意思说明创建一个文件的默认权限所有者为rwx,所属组为rx,其他人为rx。也就是说创建一个新文件默认权限为 rwxr-xr-x,我们创建一个文件来验证一下:
我们发现使用touch命令创建了一个文件a.txt,然后发现权限并不是rwxr-xr-x,而是rw-r--r--。对比发现少了三个x,也就是少了可执行权限。这是为什么呢?
这是因为在Linux系统中,所有新创建的文件都是没有可执行权限的。这是出于Linux系统的一种自我保护,因为类似的病毒木马程序都是具有可执行权限的。所以在Linux系统中,新创建的文件是没有可执行权限的。
那么我们如何设置默认权限呢?比如我们想将新创建的文件权限设置为rwxr-xr--,也就是754。我们用777减去754得到023。也就是通过执行 umask 023 来完成默认权限设置。
Linux系统中的用户是分角色的,用户的角色是由UID和GID来识别的(也就是说系统是识别的是用户的UID、GID,而非用户用户名),一个UID是唯一(系统中唯一如同身份证一样)用来标识系统的用户账号(用户名)。
文件的用户与用户组分为超级管理员,普通用户和系统用户。
1)超级管理员的UID=0,GID=0,也可以这么说系统只要是识别出某个用户的UID\GID都为0时,那么这个用户系统就认为是超级管理员。
2)普通用户(管理员添加的),默认它的UID\GID是从500-65535,权限很小,只能操作自己的家目录中文件及子目录(注:nobody它的UID\GID是65534)。
3)系统用户,也称虚拟用户,也就是安装系统时就默认存在的且不可登陆系统,它们的UID\GID是1-499。
我们可以通过cat /etc/passwd命令来查看所有的用户信息,例如下图,第三列是UID,第四列是GID:
创建用户
useradd user1 创建用户user1
useradd -e 12/30/2021 user2 创建用户user2,有效期到2021-12-30
设置用户密码
passwd user1 设置密码,有设置密码的用户不能用
这里设置密码时可能会碰到密码保护机制问题,这里需要注释掉保护机制的问题
这个时候需要在编辑/etc/pam.d/system-auth文件,将其中的password requisite
和password sufficient两行注释掉,如下图:
创建用户组
groupadd –g 888 users 创建一个组users,其GID为888
groupadd users 不用g参数,使用默认的组ID
命令 gpasswd为组添加用户
只有root和组管理员能够改变组的成员:
gpasswd –a user1 users 把 user1加入users组
gpasswd –d user1 users 把 user1退出users组
命令groupmod修改组
groupmod –n user2 user1 修改组名user1为user2
groupdel删除组
groupdel users 删除组users
真正从安全性角度上来考虑的话,是要控制用户一定执行命令的权限,也就是哪些用户可以执行哪些命令,不可以执行哪些命令,因此也就有了sudo这个应用,对于sudo提权,也就是修改/etc/sudoers的配置文件。
命令名称:chmod
命令英文原意:change the permissions mode of a file
有两种角色可以执行该命令,一种是 root 用户,另一种就是文件的所有者。
语法:
大括号里的内容表示只能选一个,其中 u 表示该文件的所有者,g 表示所属组,o 表示其他人,a 表示所有角色。
比如,给 abc.txt 文件的所属组加一个写的权限:
也可以同时做多个授权,比如给文件所有者加上执行权限,给其他人去掉写权限:
还可以用数字表示权限。权限的数字表示:
如果一个文件的权限是 rw-r--r--,那么翻译成数字就是 644,反过来,如果要更改文件的权限,可以这样写:
这样文件的权限就改成 rw-r----- 了。
还有一个选项 -R 是递归修改权限,该选项的功能是更改某个目录的权限的同时更改该目录下所有的子目录和文件的权限。
命令名称: chown
英文原意:change owner
语法:chown 用户名 文件
只有管理员账户可以更改文件的所属用户。
例如:
命令名称:chgrp
英文原意:change group
语法:chgrp 组名 文件
例如:
命令名称:umask
使用命令 umask -S 可以查看新建文件或目录的默认权限。
现在显示的是新建目录的默认权限,该目录的所有者的默认权限是 rwx,所属组的默认权限是 rx,其他人的默认权限是 rx。为什么说这是新建目录的默认权限而不是新建文件的默认权限,如果你查看新建文件的权限,会发现是 rw-r--r-- ,与新建目录的权限 rwxr-xr-x 相比,每种角色的权限都少了 x。所以说,只要知道了新建目录的默认权限,再去掉 x 权限,就是新建文件的默认权限。
如果直接执行 umask 命令,会显示一个数字。
这个数字叫做权限掩码,用 777 减去其后三位 022 就得到了每种角色的权限,即 755。翻译成字母就是 rwxr-xr-x 。
若想更改新建目录或文件的默认权限,只需执行 umask 权限掩码 即可。
例如,我想把新建目录的默认权限改成 rwxr-r-- ,翻译成数字就是 744,再用 777 减去 744 就得到了权限掩码 033。
虽然 Linux 系统的目录或文件的默认权限可以修改,但是 Linux 这样分配权限是有一定道理的,最好不要轻易修改。
在 Linux 系统中,赋与一个(或者是多个)文件的命令是 chmod。如下所示:
$chmod 754 *.c
其中:7代表文件所有者本人的权限为:可读(4)、可写(2)、可执行(1); 5 代表同组用户的权限为:可读(4)、可执行(1);4 代表其它用户的权限为可读。
在linux中给文件夹赋权限的步骤如下:
1.首先,咱们用客户端工具(工具很多,我用的是xshell),用需要建立的文件夹的账户登录系统,例如我现在是用的Root用户。红色框框内,写着root证明,登录的用户没有问题。
2.此时进入到需要新建文件夹的目录下,例如我们现在要去/u1下面去建立文件夹,则使用命令cd u1即可。如果其他的文件夹:cd u1/out。
3.进入需要建立新文件的目录后完成,直接录入新建文件命令:mkdir fanfan建立后,可以“ls”下,可以看到建立的目录存在了。
4.此时可以查看文件夹的权限,可以使用ls -la此命令可以看到下属相关文件夹的权限。这样就解决了在linux中给文件夹赋权限的问题了。