Linux用户和权限管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux用户和权限管理相关的知识,希望对你有一定的参考价值。
1、用户
Linux用户分为两类:管理员和普通用户。
管理员:用户名为root,它几乎有行使一切命令的权限,一般情况下不建议使用root权限,因为Linux是不支持回收机制的。
比如:rm -rf /或rm -rf /*等.
普通用户:分为系统用户和登录用户
系统用户:仅用于服务运行程序,是系统为了满足服务运行所创建的内建用户,而且系统用户是不能登录的。
登录用户:指的是系统资源的正常使用者,大多数的用户都是此类。
那该怎么识别用户呢?Linux系统并不会直接认识“用户名”,而是通过用户的ID(UID),每一个用户都有自己的ID号,系统就是通过认识ID号来判断用户。
UID通常用16bits的二进制表示的,从0到65535,管理员的uid就是0,普通用户分为系统用户和登录用户,它们的UID表示为:
系统用户:对于centos5,6是从1-499,centos7是1-999.
登录用户:对于centos5,6是500开始,一般到65535,centos7是1000开始,一般到65535.
我们登录系统是通过username,而系统识别用户是通过UID, 系统是怎么知道0就是表示root,1-499就是表示系统用户,因为系统是通过解析库/etc/passwd来进行识别的。例如登录的是root,以root为查找键去解析库里查找已知对应的值,找到UID为0,反之亦然。
组也分管理员组和普通用户组,普通用户组也分系统用户组和登录用户组,组的ID称为组ID,和用户的UID分类的值一样。组的解析库是/etc/group
一个用户可以有多个附加组,也可以只有一个主组,查看用户的ID和所属组的命令:id username
[[email protected] ~]# id gentoo
uid=5003(gentoo) gid=5006(gentoo) 组=5006(gentoo),5002(peguin),5003(distro)
其中gid表示的就是组ID,组表示主组,5002和5003表示用户的附加组。
2、用户和组的管理
用户:useradd,usermod,userdel
组 :groupadd,groupmod,groupdel
useradd:表示添加用户
选项:-c:注释信息 -d:指明家目录 -u:指定UID -g:指明组或者组ID -G:添加附加组,多个可用,隔开 -s:更改登录的shell,默认为/bin/bash
[[email protected] ~]# useradd -c testin -u 2000 -G gentoo,distro -s /bin/tcsh test
[[email protected] ~]# id test
uid=2000(test) gid=2000(test) 组=2000(test),5003(distro),5006(gentoo)
注意:更改登录的shell时,其自定义的shell必须为可登录的shell,且要位于/etc/shells文件中。
usermod:修改用户信息
选项:-c:修改注释信息
-d:修改家目录为新的位置,和 -m 一起使用会移动到新目录中
-g:改基本组ID
-G:修改时会覆盖原有的附加组;一同使用-a选项,表示为用户添加新的附加组
-l:修改用户的用户名
-u:uid
[[email protected] ~]# usermod -c testout -u 2001 -G hive test
[[email protected] ~]# id test
uid=2001(test) gid=2000(test) 组=2000(test),10102(hive)
userdel:删除用户
-r:家目录和邮箱一并删除
[[email protected] ~]# userdel -r test
[[email protected] ~]# id test
id: test: no such user
注意:如果不加-r只是删除了用户,但用户的家目录和邮箱还是存在。
groupadd:添加组信息 groupadd [选项] group
选项:-g:GID -r:添加系统组
[[email protected] ~]# groupadd -g 3000 test
test:x:3000:
groupmod:修改组信息
选项: -g:GID -n:修改组名称
groupdel:删除组信息
[[email protected] ~]# groupdel test
id:查看用户相关的ID信息
-G:查看所属的所有组的
[[email protected] tmp]# id -G gentoo
5006 5002 5003
3、权限管理
[[email protected] tmp]# ll /tmp/
-rw-r--r-- 1 root root 4069 3月 5 15:45 centos-release
drwxr-xr-x 2 root root 97 3月 5 16:21 conf.d
drwxr-xr-x 2 root root 78 3月 5 16:17 etc
ls -l命令看/tmp目录下的文件,可以看到有-rw-r--r--,root(属主),root(属组),4069(文件大小),3月 5 15:45(文件最后一次被修改的时间),centos-release(文件名)。
-rw-r--r--拆分来看,-,rw-,r--,r--,可以分成四份,第一个“-”表示文件的类型,普通文件,第二个“rw-”表示owner(属主)权限,第三个“r--”表示group(属组)权限,第四个表示“r--”other(其他)权限。
文件的类型有: -d:普通文件 -d:目录文件 -l:链接文件 -s:套接口文件 -p:管道文件 -b:块设备文件 -c:字符文件
1、基本权限:
r:readable 可读 对文件来说,具有读取文件内容的的权限,对目录来说,只能用ls命令查看目录下的文件列表。
w:wirtable 可写 对文件来说,具有修改文件内容的的权限,对目录来说,可以修改目录下的文件列表,也可以删除和创建文件。
x:execute 可执行 对文件来说,具有执行文件内容的的权限,对目录来说,可以用ls -l命令获取目录下文件列表的详细信息,也可以cd此目录。
权限组合机制:以owern为例
--- ;--x;-w-;-wx;r--;r-x;rw-;rwx;
000 001 010 011 100 101 110 111
八进制: 0 1 2 3 4 5 6 7
rwxr-xr-x表示755
2、权限管理
命令:chmod chown chgrp
chmod命令:change file mode bits
用法: (1):通过用户的标识符来修改权限
1.1 chmod u=rw,g=rw,o=wx file /path/to/somefile 可以单个,也可以两个或者三个一起赋予权限,中间用,隔开。
如果两类用户权限相同,可以写成ug= ,og=
1.2 chmod u+r/w/x或u-,g+r/w/x或g-,o+/r/w/x或o- /path/to/somefile 多个一起用,隔开
如果两类用户权限相同:ug+,ug-
1.3 chmod 755 /path/to/somefile 八进制附权法
1.4 chmod --reference=file file1 参考其他文件的权限位 比如:chmod --reference=/var/log/messages a.txt 参照/var/log目录下的message文件的权限给予a.txt文件附权
chown命令:更改属主权限
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
chown root /tmp/hello.txt 把hello.txt文件的属主改成root
chown :root /tmp/hello.txt 把hello.txt文件的属组改成root
chown -R --reference=/var/log/messages /tmp/fstab 递归修改目录或者文件的属主
chgrp命令:改属组权限
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
chgrp root /tmp/hello.txt 把hello.txt文件的属组改成root
chgrp -R --reference=/var/log/messages /tmp/fstab 递归修改目录或者文件的属组
umask:文件的遮罩码 功能是查看和修改文件的遮罩码
显示umask: umask 修改umask: umask mask
对于管理员的umaks:022 登录用户的umak:002
[[email protected] tmp]# umask [[email protected] tmp]$ umask
0022 0002
新建目录的权限:777-umask 新建文件的权限:666-umask
新建一个文件名为test.txt 目录名为test
[[email protected] tmp]# ll -d test.txt test
drwxr-xr-x 2 root root 6 3月 9 20:48 test //777-22=755
-rw-r--r-- 1 root root 0 3月 9 20:46 test.txt //666-22=644
注意:之所以文件用666去减,表示文件默认不能有执行权限;如果减的结果中,u,g,o有执行权限,则加1
例如:把root用户的umask设置023 umask 023 在新建一个文件test1.txt
[[email protected] tmp]# umask 023
[[email protected] tmp]# umask
0023
[[email protected] tmp]# touch test1.txt
[[email protected] tmp]# ll -d test1.txt
-rw-r--r-- 1 root root 0 3月 9 21:01 test1.txt
本来文件权限应该是666-23=643,那就应该是-rw-r---wx,具有可执行的权限,但因为文件默认不能有执行权限,所有在othere(其他)这加1,变成644。
以上是关于Linux用户和权限管理的主要内容,如果未能解决你的问题,请参考以下文章
[Linux 004]——用户和用户组以及 Linux 权限管理