Linux的文件管理,权限管理,用户管理,密码管理
liebian365 2024-10-19 08:00 23 浏览 0 评论
一、用户管理
useradd用于Linux中创建的新的系统用户;userdel删除帐号,建立的帐号,实际上是保存在 /etc/passwd 文本文件中。
useradd(选项)(参数)
-b, --base-dir BASE_DIR # 如果未指定-d HOME_DIR,则系统的默认基本目录。如果未指定此选项,
useradd 将使用 /etc/default/useradd中的HOME变量指定的基本目录,或默认使用/home。
-c, --comment COMMENT # 加上备注文字。任何文本字符串。它通常是对登录名的简短描述,目前用作用户全名的字段。
-d, --home HOME_DIR # 将使用 HOME_DIR 作为用户登录目录的值来创建新用户。
-D, --defaults # 变更预设值。
-e, --expiredate EXPIRE_DATE # 用户帐户将被禁用的日期。 日期以YYYY-MM-DD格式指定。
-f, --inactive INACTIVE # 密码过期后到帐户被永久禁用的天数。
-g, --gid GROUP # 用户初始登录组的组名或编号。组名必须存在。组号必须引用已经存在的组。
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]] # 用户也是其成员的补充组列表。每个组用逗号隔开,中间没有空格。
-h, --help # 显示帮助信息并退出。
-k, --skel SKEL_DIR # 骨架目录,其中包含要在用户的主目录中复制的文件和目录,当主目录由 useradd创建时。
-K, --key KEY=VALUE # 覆盖 /etc/login.defs 默认值(UID_MIN、UID_MAX、UMASK、
PASS_MAX_DAYS 等)。
-l, --no-log-init # 不要将用户添加到lastlog和faillog数据库。
-m, --create-home # 如果用户的主目录不存在,则创建它。
-M # 不要创建用户的主目录,即使/etc/login.defs(CREATE_HOME)中的系统范围
设置设置为yes。
-N, --no-user-group #不要创建与用户同名的组,而是将用户添加到由-g选项或
/etc/default/useradd 中的GROUP变量指定的组中。
-o, --non-unique # 允许创建具有重复(非唯一)UID的用户帐户。 此选项仅在与-o 选项结合使用时有效。
-p, --password PASSWORD # crypt(3) 返回的加密密码。 默认是禁用密码。
-r, --system # 创建一个系统帐户。
-s, --shell SHELL # 用户登录 shell 的名称。
-u, --uid UID # 用户 ID 的数值。
-U, --user-group # 创建一个与用户同名的组,并将用户添加到该组。
-Z, --selinux-user SEUSER # 用户登录的 SELinux 用户。 默认情况下将此字段留空,这会导致系统选择默认的 SELinux 用户。
userdel(选项)(参数)
#参数
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
示例
userdel linuxde # 删除用户linuxde,但不删除其家目录及文件;
userdel -r linuxde # 删除用户linuxde,其家目录及文件一并删除;
usermod(选项)(参数)
-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录,只是修改/etc/passwd中用户的家目录配置信息,不会自动创建新的家
目录,通常和-m一起使用;
-m<移动用户家目录>:移动用户家目录到新的位置,不能单独使用,一般与-d一起使用。
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s<shell>:修改用户登入后所使用的shell;
-u<uid>:修改用户ID;
-U:解除密码锁定。
示例:
#将 newuser2 添加到组 staff 中:
usermod -G staff newuser2
#修改newuser的用户名为newuser
usermod -l newuser1 newuser
#锁定账号newuser1:
usermod -L newuser1
#解除对newuser1的锁定:
usermod -U newuser1
#增加用户到用户组中:
usermod -aG group user # 添加用户到用户组中
-a 参数表示附加,只和 -G 参数一同使用,表示将用户增加到组中。
用户密码有效期
chage [选项] 用户名
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
可以编辑/etc/login.defs来设定几个参数,以后设置口令默认就按照参数设定为准:
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
当然在/etc/default/useradd可以找到如下2个参数进行设置:
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
用户信息的相关文件位置
/etc/passwd # 用户帐户信息。
/etc/shadow # 存储 Linux系统用户的加密密码和其他安全相关的信息。
/etc/group # 组帐户信息。
/etc/gshadow # 组帐户密码相关信息。
/etc/default/useradd # 帐户创建的默认值。
/etc/skel/ # 默认创建用户家目录的模版文件目录。
/etc/login.defs # 用于查看系统登录的默认设置。它会显示出登录限制、密码策略、账户锁定等相关信息。
/etc/shadow文件保存着用户的加密密码及相关信息,每条记录由若干个字段组成,这些字段的含义如下:
用户名:表示该行记录对应的用户账号名。
密码:表示经过加密后的密码,使用了SHA-512、MD5等算法进行加密。
最后一次修改密码的日期:表示密码最后一次被修改的日期,以天为单位,从1970年1月1日开始算起。
密码最短使用期限:表示密码在被修改后,需要过多少天才能再次修改。
密码最长使用期限:表示密码被修改后,最多可以使用多长时间,超过这个时间需要重新修改密码。
密码过期前的警告天数:表示密码快要过期时,系统会提前多少天发出警告。
密码过期后的宽限天数:表示密码过期后,系统允许多少天内使用旧密码。
账号失效日期:表示该账号被禁用的日期,以天为单位,从1970年1月1日开始算起,如果值为0,则表示账号永久有效。(这个是时间戳)
保留字段:该字段目前没有被使用。
文件(目录)权限
1.基本权限 rwx
Linux 系统一般将文件权限分为3 类:
r read(读);w write(写);x execute(执行)
**==谁==**对文件有读,写,执行的权限呢?
user group other
在Linux系统中,三大类用户也可以拥有简写形式user(u)、group(g)、other(o)1
Linux一共有7种文件类型,分别如下:
-:普通文件
d:目录文件
l: 软链接(类似Windows的快捷方式)
b:block,块设备文件(例如硬盘、光驱等)
p:管道文件 建立在内存之上可以同时被两进程访问的文件。(Linux C语言)
c:字符设备文件(例如猫(上网猫)等串口设备)
s:套接口文件/数据接口文件(例如启动一个MySql服务器时会产生一个mysql.sock文件)
2.特殊权限 suid sgid sticky
suid 冒险位,执行二进制文件与文件所有人有关,与谁来执行无关.注意是二进制文件的权限,shell脚本UID无效,使用场景:passwd
chmod 4777 filename
sgid 强制位,对目录生效,在此目录中创建文件自动归入目录所在组,使用场景 用户组继承
chmod 2777 dirname
sticky 粘制位,目录中的文件只能被文件拥有者删除,使用场景tmp目录
chmod 1777 dirname
3.文件ACL getfacl setfacl
[root@localhost ~]# ls -l
-rw-r--r-- 1 root root 4 2月 17 20:56 test.txt #-rw-r--r--+ 如果权限后面带有‘+’号表示有
ACL权限
[root@localhost ~]# getfacl test.txt # file: test.txt 文件名
# owner: root 文件所属者
# group: root 文件所属组
user::rw- 属主权限
group::r-- 属组权限
other::r-- 其他人权限
#设定ACL权限
useradd tom
setfacl -m u:tom:rw test.txt
#setfacl -m <u|g|m>:<username|groupname>:权限 filename
#setfacl -x <u|g>:<username|groupname> filename ##去除某个用户或者组的acl
#setfacl -b filename ##删除文件上的所有权限列表
4.文件属性 chattr lsattr +a -a +i -i -d
chattr(选项)
a:让文件或目录仅供附加用途;
b:不更新文件或目录的最后存取时间;
c:将文件或目录压缩后存放;
d:将文件或目录排除在倾倒操作之外;
i:不得任意更动文件或目录;
s:保密性删除文件或目录;
S:即时更新文件或目录;
u:预防意外删除。
-R:递归处理,将指令目录下的所有文件及子目录一并处理;
-v<版本编号>:设置文件或目录版本;
-V:显示指令执行过程;
+<属性>:开启文件或目录的该项属性;
-<属性>:关闭文件或目录的该项属性;
=<属性>:指定文件或目录的该项属性。
[root@localhost ~]# chattr +a test.txt #只能给文件添加内容,但是删除不了,属于追加
[root@localhost ~]# chattr -d test.txt
[root@localhost ~]# chattr +i test.txt #文件不能删除,不能更改,不能移动
案例1:防删除,防修改
find /bin /sbin /usr/sbin /usr/bin /etc/shadow /etc/passwd /etc/pam.d -type f -exec chattr +i {} \;
案例2:日志文件防删除
[root@localhost ~]# chattr +a /var/log/messages /var/log/secure #日志切割要先去掉a属性,
之后增加a属性
[root@localhost ~]# vim /etc/logrotate.d/syslog prerotate
chattr -a /var/log/messages endscript
...
postrotate
chattr +a /var/log/messages
endscript
}
sudo提权
sudo使用可根据/etc/sudoers文件设置普通用户使用sudo命令时可以以root身份或其他用户身份运行命令
1.使用vim直接编辑/etc/sudoers文件或使用vim 去添加/etc/sudoers.d/文件
2.使用visudo编辑/etc/sudoers
示例:
需要密码的提权 51cto ALL=(ALL) ALL
免密提权 51cto ALL=(ALL) NOPASSWD: ALL
允许提权后只能使用某些命令
51cto ALL=(ALL) NOPASSWD: /sbin/ip
[root@localhost ~]#which ip
/usr/sbin/ip
[root@localhost ~]#ls -hl /usr/sbin/ip
[root@localhost ~]#chmod o-x /usr/sbin/ip
[root@localhost ~]#su - 51cto
[51cto@localhost ~]$ip
-bash: /usr/sbin/ip: Permission denied
51cto ALL=(ALL) NOPASSWD: /sbin/useradd, /sbin/userdel, /bin/passwd
51cto ALL=(ALL) NOPASSWD: !/bin/passwd root, !/bin/passwd root --
stdin,!/bin/passwd --stdin root
相关推荐
- “版本末期”了?下周平衡补丁!国服最强5套牌!上分首选
-
明天,酒馆战棋就将迎来大更新,也聊了很多天战棋相关的内容了,趁此机会,给兄弟们穿插一篇构筑模式的卡组推荐!老规矩,我们先来看10职业胜率。目前10职业胜率排名与一周前基本类似,没有太多的变化。平衡补丁...
- VS2017 C++ 程序报错“error C2065:“M_PI”: 未声明的标识符"
-
首先,程序中头文件的选择,要选择头文件,在文件中是没有对M_PI的定义的。选择:项目——>”XXX属性"——>配置属性——>C/C++——>预处理器——>预处理器定义,...
- 东营交警实名曝光一批酒驾人员名单 88人受处罚
-
齐鲁网·闪电新闻5月24日讯酒后驾驶是对自己和他人生命安全极不负责的行为,为守护大家的平安出行路,东营交警一直将酒驾作为重点打击对象。5月23日,东营交警公布最新一批饮酒、醉酒名单。对以下驾驶人醉酒...
- Qt界面——搭配QCustomPlot(qt platform)
-
这是我第一个使用QCustomPlot控件的上位机,通过串口精确的5ms发送一次数据,再将读取的数据绘制到图表中。界面方面,尝试卡片式设计,外加QSS简单的配了个色。QCustomPlot官网:Qt...
- 大话西游2分享赢取种族坐骑手办!PK趣闻录由你书写
-
老友相聚,仗剑江湖!《大话西游2》2021全民PK季4月激燃打响,各PK玩法鏖战齐开,零门槛参与热情高涨。PK季期间,不仅各种玩法奖励丰厚,参与PK趣闻录活动,投稿自己在PK季遇到的趣事,还有机会带走...
- 测试谷歌VS Code AI 编程插件 Gemini Code Assist
-
用ClaudeSonnet3.7的天气测试编码,让谷歌VSCodeAI编程插件GeminiCodeAssist自动编程。生成的文件在浏览器中的效果如下:(附源代码)VSCode...
- 顾爷想知道第4.5期 国服便利性到底需优化啥?
-
前段时间DNF国服推出了名为“阿拉德B计划”的系列改版计划,截至目前我们已经看到了两项实装。不过关于便利性上,国服似乎还有很多路要走。自从顾爷回归DNF以来,几乎每天都在跟我抱怨关于DNF里面各种各样...
- 掌握Visual Studio项目配置【基础篇】
-
1.前言VisualStudio是Windows上最常用的C++集成开发环境之一,简称VS。VS功能十分强大,对应的,其配置系统较为复杂。不管是对于初学者还是有一定开发经验的开发者来说,捋清楚VS...
- 还嫌LED驱动设计套路深?那就来看看这篇文章吧
-
随着LED在各个领域的不同应用需求,LED驱动电路也在不断进步和发展。本文从LED的特性入手,推导出适合LED的电源驱动类型,再进一步介绍各类LED驱动设计。设计必读:LED四个关键特性特性一:非线...
- Visual Studio Community 2022(VS2022)安装图文方法
-
直接上步骤:1,首先可以下载安装一个VisualStudio安装器,叫做VisualStudioinstaller。这个安装文件很小,很快就安装完成了。2,打开VisualStudioins...
- Qt添加MSVC构建套件的方法(qt添加c++11)
-
前言有些时候,在Windows下因为某些需求需要使用MSVC编译器对程序进行编译,假设我们安装Qt的时候又只是安装了MingW构建套件,那么此时我们该如何给现有的Qt添加一个MSVC构建套件呢?本文以...
- Qt为什么站稳c++GUI的top1(qt c)
-
为什么现在QT越来越成为c++界面编程的第一选择,从事QT编程多年,在这之前做C++界面都是基于MFC。当时为什么会从MFC转到QT?主要原因是MFC开发界面想做得好看一些十分困难,引用第三方基于MF...
- qt开发IDE应该选择VS还是qt creator
-
如果一个公司选择了qt来开发自己的产品,在面临IDE的选择时会出现vs或者qtcreator,选择qt的IDE需要结合产品需求、部署平台、项目定位、程序猿本身和公司战略,因为大的软件产品需要明确IDE...
- Qt 5.14.2超详细安装教程,不会来打我
-
Qt简介Qt(官方发音[kju:t],音同cute)是一个跨平台的C++开库,主要用来开发图形用户界面(GraphicalUserInterface,GUI)程序。Qt是纯C++开...
- Cygwin配置与使用(四)——VI字体和颜色的配置
-
简介:VI的操作模式,基本上VI可以分为三种状态,分别是命令模式(commandmode)、插入模式(Insertmode)和底行模式(lastlinemode),各模式的功能区分如下:1)...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- “版本末期”了?下周平衡补丁!国服最强5套牌!上分首选
- VS2017 C++ 程序报错“error C2065:“M_PI”: 未声明的标识符"
- 东营交警实名曝光一批酒驾人员名单 88人受处罚
- Qt界面——搭配QCustomPlot(qt platform)
- 大话西游2分享赢取种族坐骑手办!PK趣闻录由你书写
- 测试谷歌VS Code AI 编程插件 Gemini Code Assist
- 顾爷想知道第4.5期 国服便利性到底需优化啥?
- 掌握Visual Studio项目配置【基础篇】
- 还嫌LED驱动设计套路深?那就来看看这篇文章吧
- Visual Studio Community 2022(VS2022)安装图文方法
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)