linux用户身份和文件权限
1.用户身份与能力
root管理员是linux 的超级用户,他拥有系统的所有权,能够管理系统的各项功能,如添加/删除用户,启动/关闭服务进程,开启/禁用硬件设备……
"Linux系统中的管理员就是root",这句话是错误的,Linux系统管理员之所以是root,并不是因为他叫root,而是因为用户的身份号码(UID)的数值为0,。UID相当于是身份证号,其用户身份大致分为:
- UID=0:系统的管理员用户。
- 1<=UID<=999:系统用户,服务程序会有独立的系统用户负责运行。
- UID>=1000:普通用户,有管理员创建用于日常工作的用户。
用户组:我们可以把多个用户加入到同一个用户组,从而便于为组中的用户统一规划权限或指定任务。另外,在管理员创建用户时,将为该用户自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人,如果该用户以后被归纳到其他的用户组,则这些其他用户组对该用户来说是扩展用户组。
1.1 useradd命令
创建新用户,格式:useradd [option] 用户名
创建新用户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。其中option:
| 参数 | 作用 |
| -d | 指定用户的家目录(默认为/home/username) |
| -u | 指定该用户的默认UID |
| -g | 指定一个初始的用户基本组(已存在的) |
| -G | 指定一个或多个扩展用户组 |
| -N | 不创建与用户同名的基本用户组 |
| -s | 指定默认的默认Shell解释器 |
$ useradd -u hah
$ id hah
uid=(hah) gid=(hah) groups=(hah)
1.2 groupadd 命令
用于创建用户组,格式为 groupadd [option] groupname
$ groupadd haha
1.3 usermod 命令
usermod用于修改用户的属性,格式为usermod [option] username
其中option:
| 参数 | 作用 |
| -c | 填写用户账户的备注信息 |
| -d -m | 二者连用,可重新指定用户的家目录并自动把旧的数据转移过去 |
| -g | 变更所属用户组 |
| -G | 变更扩展用户组 |
| -L | 锁定用户禁止登陆系统 |
| -U | 解锁用户 |
| -s | 变更默认终端 |
| -u | 修改用户的UID |
$ id hah
uid=(hah) gid=(hah) groups=(hah)
$ usermod -G root hah
$ id hah
uid=(hah) gid=(hah) groups=(hah),(root)
$ usermod -u hah
uid=(hah) gid=(hah) groups=(hah),(root)
1.4 passwd 命令
修改用户密码,格式为passwd [option] username
其中option:
| 参数 | 作用 |
| -d | 使该用户可用空密码登录系统 |
| -e | 强制用户在下次登录时修改密码 |
另外,普通用户只能用来修改自身密码,而root管理员则有权限修改其他所有用户的密码,而且不需要输入旧密码验证。
$ passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
$ passwd hah
Changing password for user limingxing.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
1.5 userdel 命令
删除用户,格式userdel [option] username
其中option:
| 参数 | 作用 |
| -f | 强制删除用户 |
| -r | 同时删除用户和用户家目录 |
2.文件权限与归属
linux中文件类型不尽相同:
- -:普通文件
- d:目录文件
- l:链接文件
- b:块设备文件
- c:字符设备文件
- p:管道文件
每个文件都有所属的所有者和所有组,以及所有者,所有组和其他人对文件的可读(r)、可写(w)、可执行(x)的权限。
文件的读、写、执行权限可以简写为rwx,也可分别用数字4、2、1表示。
文件权限的数字法表示基于字符表示权限计算而来,例如某文件的权限为7(4+2+1)代表可读可写可执行,6(4+2)代表可读可写。
在linux系统中,查看文件的权限时,其表示方法为rwxrwxrwx。例如某文件的所有者权限为rwx,所有组权限为rw,其他人为r,那么则表示为rwxrw-r--,数组表示为764。

补充:在创建一个普通文件时,其默认权限是rw-r--r--。
2.1chmod命令和chown命令:
chmod用来设置文件或目录的权限,格式为chmod [option] 权限 文件或目录名称
如果把一个文件权限设置为任何人可读可写可执行,则执行:
$ chmod -Rf text.txt
-R表示递归其子目录,-f表示 若无权限操作该文件时不显示报错信息。
chown用来设置文件的所有者和所有组,格式为: chown [option] 所有者:所有组 文件或目录名称
3.su命令与sudo服务
su命令用于切换用户身份,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户:
$ su - username
su 和用户名之间的 ‘-’ 表示完全切换到新的用户,即把环境变量信息也变为新用户的相应信息,而不是保留原始的信息。另外,当从root用户切换到其他用户时不需要进行密码验证,而从普通用户到root用户需要验证密码。
上述普通用户需要进行特殊权限时需要登录到root用户,这样就容易泄露root用户密码,而sodu命令可以把特定命令的执行权赋予给指定的用户。
sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务,格式为sudo [option] 命令名称。
该命令可以使得我们的当前用户以另外一个用户的身份去执行某个命令,但是并不需要切换到目标用户的身份,只不过在执行对应命令的那一刻,当前用户暂时拥有了目标用户的权限,这种机制有一点类似于SUID,二者同样表示的都是在执行命令的时候使用的不是当前用户的身份而是目标用户的身份,而且不用切换至目标用户的身份,却可以以目标用户的身份去执行某条命令,但是当前用户使用sudo所能执行的命令仅仅限于目标用户定义给当前用户的那些命令,其它未定义的命令就算使用了sudo也不能使用,事实上sudo就是用来定义某个用户能够以目标用户(未必是管理员,但是该用户我们可以自己指定)的身份通过某主机执行某条命令的机制,说的通俗一点就是谁可以以另外哪一个人的身份在哪个主机上执行哪个命令,但是这种机制有一种安全措施,只要某用户想要使用目标用户定义给他的可以使用的管理系统类命令的时候,必须向服务器提供他自己的密码,这种安全机制可以防范别人恶意冒充某用户使用sudo利用目标用户的身份去执行一些系统管理类的命令,以上就是sudo提供给我们的所有管理功能,总的来说,sudo的功能就是管理员所有可以执行的命令或者其他用户所有可以执行的命令都可以授权给另外一个用户来执行,一般来讲我们使用sudo的时候,都是将管理员用户的身份授权给其他用户来执行一些系统管理类命令。
(摘自:https://blog.51cto.com/zhubo/1883195)
其中option:
| 参数 | 作用 |
| -h | 列出帮助信息 |
| -l | 列出当前用户可执行的命令 |
| -u用户名或UID | 以指定的用户身份执行命令 |
| -k | 清空密码的有效时间,下次执行sudo时需要再次进行密码验证 |
| -b | 在后台执行指定的命令 |
| -p | 更改询问密码的提示语 |
sudo的配置文件:
sudo的配置文件是/etc/sudoers,这个文件的安全性很重要,所以为了避免其他用户查看该文件,这个文件的权限是440:
$ ls -l /etc/sudoers
-r--r----- root root Apr : /etc/sudoers
文件时只读的,linux提供visudo命令来修改此文件中的内容,此命令与vim编辑器一样,
/etc/sudoers这个配置文件的语法格式其实很简单,如果不是语法自身的某些关键字定义的某些功能的话,那么它的每一行通常表示定义了一个sudo条目,而一个sudo条目其实就是定义了哪个用户能够以另外哪个用户的身份在哪些主机上执行哪些命令的意思。而且此文件中有大量的注释信息供我们参考和理解。
sudo条目的语法格式
who(谁) which_hosts(能够在哪些主机上)=(runas(以谁的身份)) COMMAND(运行哪些命令)
例如在
root ALL=(ALL) ALL #100行左右
后面加上
hah ALL=(ALL) ALL
则hah用户可以使用sudo执行任何的命令。
但是考虑到生产环境中不允许某个用户拥有系统中所有命令的最高执行权,因此ALL参数就不合适了。因此只能赋予普通用户具体的命令以满足工作需求即可。如果需要让某个用户只能使用root管理员的身份执行指定的命令,切记一定要给出该命令的绝对路径,否则系统识别不出。我们可以试用whereis命令找出命令所对应的保存路径,例如:
$ whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat..gz
$ visudo
...
root ALL=(ALL) ALL
hah ALL=(ALL) /usr/bin/cat
...
$ su - hah
hah$ sudo cat text.txt
[sudo] password for hah:
.....
如果有其他需求的话,可以按照注释内容进行配置。
linux用户身份和文件权限的更多相关文章
- Linux用户身份与文件权限学习笔记
用户身份 管理员UID为0:系统的管理员用户 系统用户UID为1~999:服务程序会有独立的系统用户负责运行:防止被黑客入侵进行提权,并有效控制被破坏的范围 普通用户UID从1000开始:是由管理员创 ...
- linux用户身份与文件权限
用户 useradd [ 参数 ] 用户名 添加用户 sudo useradd -d /home/test -u 1001 -s /bin/bash name usermod [选项] 用户名 更改用 ...
- Linux学习之用户身份与文件权限
Linux学习之用户身份与文件权限 1 用户身份及能力 Linux系统的管理员之所以是root,并不是因为其名叫root,而是该用户身份号码数值(UID)为0. 管理员UID为0:系统的管理员用户 系 ...
- 《Linux就该这么学》培训笔记_ch05_用户身份与文件权限
<Linux就该这么学>培训笔记_ch05_用户身份与文件权限 文章最后会post上书本的笔记照片. 文章主要内容: 用户身份与能力 文件权限与归属 文件的特殊权限 文件的隐藏属性 文件访 ...
- Linux - 用户管理与文件权限
目录 Linux - 用户管理与文件权限 创建普通用户 切换用户 userdel删除用户 sudo 命令 文件与目录权限 Linux权限的解读 目录权限 查看用户权限的命令 文件权限 修改权限的命令 ...
- linux用户管理和文件权限
linux用户管理和文件权限 新建用户:useradd ftpuser useradd -g gxx userxx修改密码:passwd ftpuser新增用户组:# groupadd gr ...
- Linux 用户管理 与 文件权限
Linux 用户管理 与 文件权限 用户组操作 1.groupadd命令 groupadd [-g -o] gid group 各个选项具体含义如下: -g:指定新建用户组的GID号,该GID号必须唯 ...
- 6Linux用户身份与文件权限
3类用户身份: (1)管理员UID为0,root (2)系统用户UID为1-999:nologin不能登录系统,老版本5.6中是1-499 (3)普通用户UID为1000开始,老版本5.6中是1000 ...
- Linux 用户身份与进程权限
在学习 Linux 系统权限相关的主题时,我们首先关注的基本都是文件的 ugo 权限.ugo 权限信息是文件的属性,它指明了用户与文件之间的关系.但是真正操作文件的却是进程,也就是说用户所拥有的文件访 ...
随机推荐
- Spring Cloud-微服务架构集大成者
本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义. 1 背景 2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过 ...
- ELK-Logstash采集日志和输送日志流程测试
讲解Logstash采集日志和输送日志流程测试,包括input,filter和output元素的测试 配置一:从elasticsearch日志文件读取日志信息,输送到控制台 $ cd /home/es ...
- Docker系列09—Docker的系统资源限制及验证
本文收录在容器技术学习系列文章总目录 1.限制容器的资源 默认情况下,容器没有资源限制,可以使用主机内核调度程序允许的尽可能多的给定资源.Docker提供了控制容器可以使用多少内存或CPU的方法,设置 ...
- js中获取URL参数的共通方法getRequest()方法
getRequest : function() { var url = location.search; //获取url中"?"符后的字串 var theRequest = new ...
- php 爬虫框架
发现两款不错的爬虫框架,极力推荐下: phpspider 一款优秀的PHP开发蜘蛛爬虫 官方下载地址:https://github.com/owner888/phpspider 官方开发手册:http ...
- 【学习笔记】tensorflow实现一个简单的线性回归
目录 准备知识 Tensorflow运算API 梯度下降API 简单的线性回归的实现 建立事件文件 变量作用域 增加变量显示 模型的保存与加载 自定义命令行参数 准备知识 Tensorflow运算AP ...
- 十分钟(小时)学习pandas
十分钟学习pandas 一.导语 这篇文章从pandas官网翻译:链接,而且也有很多网友翻译过,而我为什么没去看他们的,而是去官网自己艰难翻译呢? 毕竟这是一个学习的过程,别人写的不如自己写的记忆深刻 ...
- 借助表达式树感受不一样的CRUD
借助表达式树感受不一样的CRUD Intro 最近有个想法,想不写 sql 语句,做一个类似于 ORM 的东西,自己解析表达式树,生成要执行的 sql 语句,最后再执行 sql 语句,返回相应结果. ...
- Git:六、分支管理(指针操作)
1.基本操作 1)创建分支 git branch <name> 2)切换分支 git checkout <name> 1)&2)创建并切换分支 git checkout ...
- Linux命令学习总结:ls
命令简介: ls命令用来列出目标目录(缺省的话为当前目录)中所有的子目录和文件.指令英文原义:list 指令所在路径:/bin/ls 执行权限:All User 命令语法: ls [OPTION].. ...