专业的编程技术博客社区

网站首页 > 博客文章 正文

Linux系统常用命令总结笔记4---用户管理和权限管理

baijin 2024-10-02 11:12:49 博客文章 6 ℃ 0 评论

---w: 用来显示当前登录到系统中的所有用户及其进程的信息。显示谁已登录,以及他们正在做什么活动。

参数:

-f:开启或关闭显示用户从何处登入系统。

-h: 不显示各栏位的标题信息列。

-l: 使用详细格式列表,此为默认值。

-s: 使用简洁格式列表,不显示用户登入时间、终端机阶段作业和程序所耗费的CPU时间。

-u: 忽略执行程序的名称以及该程序耗费CPU时间的信息。

-V: 显示版本信息。

例子:

w ##显示当前登录到系统上的所有用户

w user1 ##显示登录的user1用户相关信息;

w -f ##打开或关闭登录用户来源信息的显示;

w -h ##去掉各栏位的标题信息列的显示

w -u ##显示用户信息,不包括名称及其耗费的CPU时间的信息,则可以使用-u选项忽略该信息

w -s ##显示用户信息,不包含登录时间、终端机阶段作业和程序所耗费的CPU时间

---who:用于查看服务器系统中的当前使用者信息,包括用户ID、终端、上线时间、IP等;

参数:

-H: 显示各栏位的标题信息列;

-m: 此参数的效果和指定"am i"字符串相同;

-q: 只显示登入系统的帐号名称和总人数;

-s: 此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;

-w: 显示用户的信息状态栏;

例子:

who ##显示当前登录系统的用户

who –H ##显示标题信息列

who am i ##只显示自己的用户信息

说明:w和who的区别是,w显示的信息更加详细,除了显示who命令的信息之外,还能够显示其他详细信息,具体含义如下:

up:从上次关机到重启消耗了多长时间

users:服务器用户数量

load average: 记录了服务器过去1分钟、5分钟、15分钟的负载情况

IDLE:从用户上一次任务结束后到现在的空闲时间

JCPU:此终端会话相关的进程所消耗总时间

PCPU:当前用户执行命令所占用的时间

WHAT:用户当前使用命令


---useradd(或adduser:): 新建用户账号

参数:

-u: 指定该账户的uid

-g: 指定该账户的主群组,修改passwd文件

-G: 指定该账户的次要群组,修改group文件

-M: 强制不要创建用户家目录

-m: 强制建立用户家目录

-d: 指定用户家目录的位置,不使用默认的位置

-s: 指定用户的shell,默认为/bin/bash

-c:指定用户的注释/描述信息。

-p:设置用户的加密密码。可以使用openssl等工具生成加密的密码哈希值。

-e: <有效期限> 指定帐号的有效期限

-f: <缓冲天数> 指定在密码过期后多少天,就关闭该帐号

例子:

##创建test的用户,同时创建默认家目录/home/test,指定bash shell;

useradd -m -s /bin/bash test

##创建test用户,并自动创建家目录temp,用户属于test1组

useradd -d /home/temp test -g test1 -s /bin/bash -m

##创建一个名为"testuser"的用户,同时创建家目录和设置初始密码

useradd -m -p $(openssl passwd -1 MyPassword) testuser


说明:useradd和adduser区别:

---useradd不会在/home下自动创建与用户名同名的用户目录,不会自动选择shell版本,

也没有设置密码,这个用户是不能登录的;

---adduser: 会在/home下自动创建与用户名同名的用户目录,会自动选择系统shell版本,会在创建时会提示输入密码.


---userdel(deluser): 删除用户账号

参数:

-r:删除用户的家目录和相关文件。

-f:强制删除用户,即使用户当前已登录或有运行的进程。

-Z:删除用户的SELinux安全上下文。

-h:仅从系统中删除用户账户,而不删除家目录。

-R:指定用户家目录的根路径。

例子:

userdel test ##删除test用户,但不会自动删除家目录;

userdel -r test ##删除test用户,同时删除用户的家目录;

userdel -f test ##强制删除一个名为"test"的用户,即使用户当前已登录或有运行的进程

userdel -h testuser ##删除用户名为test的用户,不删除其家目录;


---usermod: 用来修改用户的属性和配置

可以对用户的各种属性进行修改,如用户的用户名、用户ID、用户组ID、用户主目录、用户登录shell等。

参数:

-l: 修改用户的用户名

-u:变更用户UID

-c: 填写用户账户备注信息

-g: 变更用户所属组

-G: 变更扩展用户组

-s: 变更默认shell

-L: 锁定用户禁止其登陆

-U: 解锁用户允许登陆

-e: 账户到期时间

-f: 设置用户的密码过期时间

-d: -m -m与-d连用 可重新指定用户家目录并迁移旧数据

-a: –append将用户追加到-G选项提到的补充GROUPS上,而不将用户从其他组中删除

例子:

usermod -l new_username old_username ##修改用户的用户名

usermod -u new_userID username ##修改用户的用户ID

usermod -g new_groupID username ##修改用户的用户组ID

usermod -d new_directory username ##修改用户的用户主目录

usermod -s new_shell username ##修改用户的登录shell

usermod -e YYYY-MM-DD username ##设置用户的账户过期时间。

usermod -f days username ##设置用户的密码过期时间

usermod -L username ##锁定用户, 使用ssh无法登录,但是可以通过 su 命令切换到该用户

usermod -U username ##解锁用户

说明:要注意usermod -g和chgrp的区别;

前者是修改用户的属组,后者为修改文件的属组;


---chgrp: 直接的修改文件或文件夹的所属群组的信息

参数:

-c:效果类似“-v”参数,但仅会显示更改的部分;

-f:不显示错误信息;

-h:只对符号连接的文件作修改,而不是该其他任何相关文件;

-R:递归处理,将指令目录下的所有文件及子目录一并处理;

-v:显示指令执行过程;

例子:

chgrp -v root aaa.txt ##修改aaa.txt文件 的组属性为 root

chgrp -fR root /home/data/ ##修改/home/data下所有文件及目录为root属组;


---id: 显示用户的ID以及所属群组的ID

参数:

-g: 显示用户所属群组的ID。

-G: 显示用户所属附加群组的ID。

-n: 显示用户,所属群组或附加群组的名称。

-r: 显示实际ID。

-u: 显示用户ID。

例子:

id ##显示当前用户id,属群组等详细信息;

id root ##显示root用户的id信息;

id -g ##仅显示属群组信息;

id -u ##仅显示用户id信息;

---groupadd: 新建组账号

cat /etc/group 查看用户组

参数:

-f:如果组名已存在,则强制创建新的组。

-g: GID:指定新组的GID(组ID)。

-K: KEY=VALUE:设置组的键值对属性。

-o:允许创建具有非唯一GID的组。

-p: PASSWORD:为新组设置密码。

-r:创建一个系统组,系统工作组的组ID小于500。

-R: CHROOT_DIR:在指定的根目录下执行命令。

-P:创建一个公共用户组。

例子:

sudo groupadd -g 5555 -p 123456 testgroup ##创建一个名为 testgroup,密码为 123456 的用户组

---groupdel: 删除组账号

参数:

-f, --force:强制删除用户组,即使该组还有用户存在。

例子:

sudo groupdel testgroup

sudo groupdel -f mygroup

---gpasswd用法: 用于将一个用户添加到组或者从组中删除。

是 Linux 下工作组文件 /etc/group 和 /etc/gshadow 管理工具

参数:

-a:添加用户到组

-d:从组删除用户

-A:指定管理员

-M:指定组成员和-A的用途差不多

-r:删除密码

-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组

例子:

gpasswd groupname ##使用者暂时加入成为该组成员

gpasswd -A Mike groupname ##指定Mike 是 groupname 群组的管理员

gpasswd -a Mary groupname ##然后有权限添加其它用户进入groupname组;

gpasswd -a Allen groupname


说明:

gpasswd -a user_name group_name ##添加用户到一个新组,之前组仍存在;

usermod -G group_name user_name ##添加用户到一个组,会清空和覆盖之前的组;

---chmod: 设置文件或目录的权限

采用两种形式的权限表示方法.字符形式和数字形式。r、w、x权限字符可分别表示为八进制数字4、2、1,

表示一个权限组合时需要将数字进行累加。

--共有三级用户权限:文件所有者、文件所属组、其它用户;

--对应的权限有:r(4)、w(2)、执行(1);

参数:

格式如下 : [ugoa…][[±=][rwxX]…][,…]

-u: 表示该档案的拥有者

-g: 表示该档案的同组者

-o: 表示其他以外的人

-a: 表示这三者皆是

-: 表示取消权限

+: 表示增加权限

=: 表示唯一设定权限

-c: 若该档案权限确实已经更改,才显示其更改动作

-f: 若该档案权限无法被更改也不要显示错误讯息

-v: 显示权限变更的详细资料

例子:

chmod a+wr test.txt ##增加文件所有用户的读写权限;

或chmod 666 test.txt ##同上

##将两文件file1.txt 与 file2.txt 设置为可写,其它人不可写;

chmod ug+w,o-w file1.txt file2.txt

chmod u+x test.py ###把test.py文件 用户者增加可执行权限

chmod a+r -R test/* ##把test目录下所有文件设置为可读权限;

chmod 777 -R test/* ##把test目录下所有文件设置为全权限;

---chown:用于修改文件或目录的所有者,常与chmod一起使用

参数:

user : 新的文件拥有者的使用者 ID

group : 新的文件拥有者的使用者组(group)

-c : 显示更改的部分的信息

-f : 忽略错误信息

-h :修复符号链接

-v : 显示详细的处理信息

-R : 处理指定目录以及其子目录下的所有文件

--from: 指定当前所有者的名称

--reference: 使用参考文件或目录的所有者和组

--help : 显示辅助说明

例子:

chown root test.sh ##把test.sh所有者设置为root;

chown testuser:testgrp file.txt ##把file.txt文件所有者设置为testuser, 组为testgrp;

##递归修改当前目录下的所有文件的所有者和组属性;

chown -R testuser:testgrp *

####把/home/test 的关联组设置为 512 (关联组ID),不改变所有者:

chown :512 /home/test

##使用--from参数来指定当前所有者的名称,并将其更改为新的所有者

sudo chown --from=oldowner newowner filename

##将一个文件或目录的所有者设置为另一个文件或目录的所有者

sudo chown --reference=source.txt target.txt

---chattr:修改文件系统的权限属性.

专门用来修改文件或目录的隐藏属性,只有 root 用户可以使用

参数:

chattr [+-=] [属性] 文件或目录名

+: 表示给文件或目录添加属性,

-: 表示移除文件或目录拥有的某些属性,

=: 表示给文件或目录设定一些属性。

i: 如果对文件设置 i 属性,那么不允许对文件进行删除、改名,

也不能添加和修改数据;

如果对目录设置 i 属性,那么只能修改目录下文件中的数据,

但不允许建立和删除文件;

a: 如果对文件设置 a 属性,那么只能在文件中増加数据,但是不能删除和修改数据;

如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除文件;

u: 设置此属性的文件或目录,在删除时,其内容会被保存,以保证后期能够恢复,

常用来防止意外删除文件或目录。

s: 和 u 相反,删除文件或目录时,会被彻底删除(直接从硬盘上删除,然后用 0 填充所占用的区域),不可恢复


例子:

1)给文件赋予 i 属性,禁止一切用户删除:

[root@localhost ~]# touch file.txt; ##创建一个文件;

[root@localhost ~]# chattr +i file.txt ##增加+i属性;

[root@localhost ~]# rm -rf file.txt ##无法删除;

[root@localhost ~]# lsattr file.txt

说明:ls 查看不到其,属性,只能通过lsattr查看;

设置有 i 属性的文件,即便是 root 用户,也无法删除和修改数据。

2)为目录赋予 i 属性,目录下不能创建和删除新建文件,但可以修改文件内容

[root@localhost ~]# mkdir dtest ###建立测试目录

[root@localhost dtest]# touch dtest/abc ##再建立一个测试文件abc

[root@localhost ~]# chattr +i dtest ###给目录赋予i属性

[root@localhost ~]# cd dtest

[root@localhost dtest]# touch bed ##无法创建"bcd",权限不够,dtest目录不能新建文件

touch: cannot touch 'bed':Permission denied

[root@localhost dtest]# echo 11>>abc

[root@localhost dtest]# cat abc ##可以修改文件内容

11

[root@localhost dtest]# rm -rf abc ###无法删除"abc",权限不够

rm: cannot remove 'abc': Permission denied


说明:一旦给目录设置 i 属性,即使是 root 用户,也无法在目录内部新建或删除文件,但可以修改文件内容。

给设置有 i 属性的文件删除此属性也很简单,只需将 chattr 命令中 + 改为 - 即可。

3)增加a 属性的作用,只能增加,不能删除和修改:

root@localhost:~/dtest# touch abc ##新创建一个普通文件;

root@localhost:~/dtest#chattr +a abc ##增加+a属性;

root@localhost:~/dtest# echo "heloo" >> abc ##追加文件内容;

root@localhost:~/dtest# echo "world" >> abc ##追加文件内容

root@localhost:~/dtest# cat abc ##查看文件内容;

heloo

world

root@localhost:~/dtest# rm -rf abc ##删除文件;

rm: cannot remove 'abc': Operation not permitted ##操作不允许

root@localhost:~/dtest# echo "11111" > abc ##修改文件内容;

-bash: abc: Operation not permitted ##操作不允许

说明: 通常情况下,不要使用 chattr 命令修改 /、/dev/、/tmp/、/var/ 等目录的隐藏属性,很容易导致系统无法启动。


---su:切换用户。

一般用法:su username.

三种方式切换到root的命令:su,su -和su - root

--- sudo: 是 Linux 系统中一种很常用的权限管理机制。

允许非 root 用户以特定的身份执行特定的命令。

sudo 命令通过 /etc/sudoers 配置文件实现。

参数:

-l 列出当前用户所拥有的权限

-E 保持当前用户的环境变量

-H 设置 HOME 环境变量为目标用户的主目录

-u 以指定用户运行命令

-k 结束密码有效期限,即下次再执行时需要重新输入密码

-- 停止解析命令行参数,即之后命令不再作为其控制参数

例子:

sudo -i ##获取管理员权限;

sudo -l ##查看管理员列表;

sudo cp aaa.sh /opt/ ##获取root权限copy 文件;

---passwd: 用于在Linux系统上设置用户密码

参数:

-l:锁定用户账户,禁止用户登录。

-u:解锁用户账户,允许用户登录。

-d:删除用户密码,允许用户无密码登录。

-e:强制用户在下次登录时更改密码。

-S:显示用户密码的状态信息,如密码最近更改的日期、密码过期日期等。 -W:设置密码过期警告天数。当密码过期前指定天数时,用户在登录时会收到密码过期的警告。

-x:设置密码的最大使用期限,即密码在多少天后过期。

-n:设置密码的最小使用期限,即密码必须在多少天后才能更改。

-i:设置密码不活动期限,即用户在多少天不登录后,密码将被禁用。

例子:

passwd ##更改当前登录用户的密码

passwd Mike ##更改用户"Mike"的密码

passwd -l john ##锁定用户"john"的账户,禁止登录

passwd -u john ##解锁用户"john"的账户,允许登录

passwd -d john ##删除用户"john"的密码,允许无密码登录

passwd -e john ##强制用户"john"在下次登录时更改密码

说明:执行passwd命令通常需要root或sudo权限,以便执行特权操作

---chpasswd : 是批量更新用户口令的工具,是把一个文件内容重新定向添加到/etc/shadow中。

参数:

-e:输入的密码是加密后的密文;

-h:显示帮助信息并退出;

-c: 检查密码的有效性;

-m:当被支持的密码未被加密时,使用MD5加密代替DES加密。

例子:

#cat user.txt

user1:password1

user2:password2

#chpasswd < user.txt


--- export: 用于设置或显示环境变量

参数:

-f  代表[变量名称]中为函数名称。

-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。

-p  列出所有的shell赋予程序的环境变量。

例子:

export -p | grep PWD ##查找PWD环境变量的定义 ;

export AA=123 ##定义环境变量AA;

export -p | grep AA

unset AA ##取消环境变量AA;

export -p | grep AA

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表