Unix/Linux系统下的nobody用户与nologin详细介绍
Unix/Linux系统下的nobody用户是什么?
1、Windows系统在安装后会自动建立一些用户帐户,在Linux系统中同样有一些用户帐户是在 系统安装后就有的,就像Windows系统中的内置帐户一样。
2、它们是用来完成特定任务的,比如nobody和ftp等,我们访问LinuxSir.Org的网页程序时,官网的服务器就是让客户以’nobody’身份登录的(相当于Windows系统中的匿名帐户);
我们匿名访问ftp时,会用到用户ftp或nobody。
3、首先,nobody是一个普通用户,非特权用户。 使用nobody用户名的’目的’是,使任何人都可以登录系统,但是其 UID 和 GID 不提供任何特权,即该uid和gid只能访问人人皆可读写的文件。
4、其次,许多系统中都按惯例地默认创建一个nobody,尽量’限制它的权限至最小’,当服务器向外服务时,可能会让client以nobody的身份登录。
5、nobody就是一个普通账户,因为默认登录shell是’/sbin/nologin’,所以这个用户是无法直接登录系统的,也就是黑客很难通过漏洞连接到你的服务器来做破坏。此外这个用户的权限也给配置的很低。因此有比较高的安全性。一切都只给最低权限。这就是nobody存在的意义。
Unix/Linux系统下用户shell为/sbin/nologin是什么意思?
如果一个用户的默认shell设置为/sbin/nologin 则这个用户是禁止登陆系统的;
这个nologin的作用就是限制某些用户通过ssh登陆到shell上。
比如日常可以将 nginx mysql php-fpm这些应用的用户默认shell设定为/sbin/nologin
主要是提升系统安全性
系统账号的shell使用 /sbin/nologin ,此时无法登陆系统,即使给了密码也不行。
所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已,并不是说这个账号就无法使用系统资源。举例来说,各个系统账号中,打印作业有lp这个账号管理,www服务器有apache这个账号管理,他们都可以进行系统程序的工作,但就是无法登陆主机而已。
有时候有些服务,比如邮件服务,大部分都是用来接收主机的邮件而已,并不需要登陆。假如有账号试图连接我的主机取得shell,我们就可以拒绝。
有时可以用使用 /etc/nologin 文件临时禁止其他用户登录,具体做法是在/etc/目录下创建一个名称为 nologin 的文件。
例如:
#touch /etc/nologin
这样将禁止随后的用户登录到系统中。 禁止用户登录时,/etc/nologin 文件中的内容将会显示给用户,会一闪而过。
例如,在 /etc/nologin文件中加入以下内容:
#vi /etc/nologin
disable login by admin temperarily!
当用户试图登陆时,将会给用户显示”disable login by admin temperarily!”,当系统维护结束以后,再删除/etc/nologin文件,其他用户就又可以恢复登陆了,这只是限于能登陆shell的用户来说的
对于那些登陆shell为/sbin/nologin的用户来说没有影响,因为他们本身就无法登陆shell。
另外,如果我想要让某个具有 /sbin/nologin 的用户知道,他们不能登陆主机时,可以新建 /etc/nologin.txt 这个文件,在文件内面写上不能登陆的原因,当用户登录时,屏幕上就会出现这个文件里面的内容。
例如:
#vi /etc/nologin.txt
This account is system account or mail account.
#su - mail
会提示”This account is system account or mail account.”
补充:
/etc/nologin 和/etc/nologin.txt这两个文件的作用并不相同。
当/etc/nologin文件存在时,则任何一个一般身份帐号在尝试登入时,都仅会获得/etc/nologin的内容,而无法直接登入主机。
即当建立/etc/nologin ,并且内容设定为『This Linux server is maintaining….』,则任何尝试登录者,会看到这些提示内容,而不能登录进系统。
直到删除/etc/nologin文件后,一般用户才可以正常登录。
总结:
nobody是linux/unix系统下的匿名用户,只能访问服务器上的公共内容
/sbin/nologin是linux/unix系统下的一种shell设置项对于登陆shell为/sbin/nologin的用户是不允许登录系统的
/etc/nologin.txt只针对shell为/sbin/nologin的用户
/etc/nologin可以理解为针对所有普通用户
- React Native之Permissions权限适配
- React Native项目实战之fetch请求并填充界面
- CocoaPods使用详解
- 2018年伊始,系统编程语言Rust为何令程序员感到兴奋?
- React Native项目实战之搭建美团个人中心界面
- React Native动画Animated详解
- iOS动画总结
- React Native之react-native-scrollable-tab-view详解
- iOS 本地轻量级数据存储之NSUserDefaults
- Android Studio配置Kotlin环境
- Android 应用安装过程分析
- React Native之TextInput组件实现联想输入
- React Native之轻量级存储AsyncStorage
- [先行者课程]--0312视差效果--课堂笔记
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 四连问:API 接口应该如何设计?如何保证安全?如何签名?如何防重?
- TensorFlow基础:创建计算图
- TensorFlow基础:常量
- 如何在Python中优雅地使用进度条?
- 绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!
- 「数据仓库架构」数据仓库的三种模式建模技术
- 设计模式实战-空对象模式,你肯定不知道,但是项目中会常用到到
- Go 开发十种常犯错误
- SpringBoot缓存应用实践
- 为什么应该使用 Go module proxy
- 谁能想到,我给技术总监“上了一课”
- 设计模式速览
- 序列模型——吴恩达深度学习课程笔记(五)
- 30分钟学会pyecharts数据可视化
- 用Keras从零开始6步骤训练神经网络