Linux入门进阶第五天——用户管理(帐号管理 )下
一、身份切换
为了避免 rm -rf /* 的悲剧发生,平时使用时,尽量使用一般帐号!需要环境设置等必要时才使用root
1.su命令
一般地,推荐使用su - / su - username的形式来切换用户(防止环境变量的混乱)
为了方便下文的操作,创建测试账户:cc,密码为 c20171218#
su [-lm] [-c 指令] [username]
选项与参数:
- :单纯使用 - 如“ su - ”代表使用 login-shell 的变量文件读取方式来登陆系统;
若使用者名称没有加上去,则代表切换为 root 的身份。
-l :与 - 类似,但后面需要加欲切换的使用者帐号!也是 login-shell 的方式。
-m :-m 与 -p 是一样的,表示“使用目前的环境设置,而不读取新使用者的配置文件”
-c :仅进行一次指令,所以 -c 后面可以加上指令喔!
完整的su切换用户命令,参考:http://linux.51yip.com/search/su
相关实例:
范例一:假设你原本是 dmtsai 的身份,想要使用 non-login shell 的方式变成 root
[dmtsai@study ~]$ su <==注意提示字符,是 dmtsai 的身份喔!
Password: <==这里输入 root 的密码喔!
[root@study dmtsai]# id <==提示字符的目录是 dmtsai 喔!
uid=(root) gid=(root) groups=(root) context=unconf.... <==确实是 root 的身份!
[root@study dmtsai]# env &#; grep 'dmtsai'
USER=dmtsai <==竟然还是 dmtsai 这家伙!
PATH=...:/home/dmtsai/.local/bin:/home/dmtsai/bin <==这个影响最大!
MAIL=/var/spool/mail/dmtsai <==收到的 mailbox 是 vbird1
PWD=/home/dmtsai <==并非 root 的主文件夹
LOGNAME=dmtsai
# 虽然你的 UID 已经是具有 root 的身份,但是看到上面的输出讯息吗?
# 还是有一堆变量为原本 dmtsai 的身份,所以很多数据还是无法直接利用。
#
尤其是我们之前谈过很多次的 PATH 这个变量,由于没有改
变成为 root 的环境, 因此很多 root 惯用的指令就只能使用绝对路径来执行咯。
[root@study dmtsai]# exit <==这样可以离开 su 的环境!
关于此例子中的login shell non login shell,可以参考:http://blog.sina.com.cn/s/blog_59c0a56201016im6.html
http://blog.csdn.net/wang_xijue/article/details/46820043
识别非login的shell方法还是执行#echo $0命令,得到的结果如果没有'-'前缀,即为非login的。
范例二:使用 login shell 的方式切换为 root 的身份并观察变量
[dmtsai@study ~]$ su -
Password: <==这里输入 root 的密码喔!
[root@study ~]# env &#; grep root
USER=root
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
HOME=/root
LOGNAME=root
# 了解差异了吧?下次变换成为 root 时,记得最好使用 su - 喔!
[root@study ~]# exit <==这样可以离开 su 的环境!
范例三:执行一次root操作后回到本帐号
[dmtsai@study ~]$ su - -c "head -n 3 /etc/shadow"
2.sudo命令
su的缺点很明显了:需要知道root的密码,这是非常不好的,于是,sudo便应运而生了!
而且仅有规范到 /etc/sudoers 内的用户才能够执行 sudo 这个指令
sudo [-b] [-u 新使用者帐号]
选项与参数:
-b :将后续的指令放到背景中让系统自行执行,而不与目前的 shell 产生影响
-u :后面可以接欲切换的使用者,若无此项则代表切换身份为 root 。
相关实例:
范例一:你想要以 sshd 的身份在 /tmp 下面创建一个名为 mysshd 的文件
[root@study ~]# sudo -u sshd touch /tmp/mysshd
[root@study ~]# ll /tmp/mysshd
-rw-r--r--. sshd sshd Jul : /tmp/mysshd
# 特别留意,这个文件的权限是由 sshd 所创建的情况喔!
范例二:你想要以 vbird1 的身份创建 ~vbird1/www 并于其中创建 index.html 文件
[root@study ~]# sudo -u vbird1 sh -c <u>"mkdir ~vbird1/www; cd ~vbird1/www; \</u>
> <u>echo 'This is index.html file' > index.html"</u>
[root@study ~]# ll -a ~vbird1/www
drwxr-xr-x. vbird1 vbird1 Jul : .
drwx------. vbird1 vbird1 Jul : ..
-rw-r--r--. vbird1 vbird1 Jul : index.html
# 要注意,创建者的身份是 vbird1 ,且我们使用 sh -c "一串指令" 来执行的!
sudo 执行的重点是:“能否使用 sudo 必须要看 /etc/sudoers 的设置值, 而可使用sudo 者是通过输入使用者自己的密码来执行后续的指令串”喔!由于能否使用与 /etc/sudoers有关, 所以我们当然要去编辑 sudoers 文件啦!不过,因为该文件的内容是有一定的规范的,因此直接使用 vi 去编辑是不好的。 此时,我们得要通过 visudo 去修改这个文件喔!
1.单一使用者可进行 root 所有指令
直接修改/etc/sudoers
注意文件的格式如下:
用户名 主机名=(可切换到的用户身份) 权限和命令
① ② ③ ④
[root@study ~]# visudo
....(前面省略)....
root ALL=(ALL) ALL #找到这一行,大约在 行左右
vbird1 ALL=(ALL) ALL #这一行是你要新增的!
利用 wheel 群组以及免密码的功能处理 visudo
[root@study ~]# visudo <==同样的,请使用 root 先设置
....(前面省略)....
%wheel ALL=(ALL) ALL <==大约在 行左右,请将这行的 # 拿掉!
# 在最左边加上 % ,代表后面接的是一个“群组”之意!改完请储存后离开
[root@study ~]# usermod -a -G wheel pro1 <==将 pro1 加入 wheel 的支持
当然,wheel群组名称是可以自定义的!使用id username即可看到是否成功加入啦!
免密码处理
[root@study ~]# visudo <==同样的,请使用 root 先设置
....(前面省略)....
%wheel ALL=(ALL) NOPASSWD: ALL <==大约在 行左右,请将 # 拿掉!
# 在最左边加上 % ,代表后面接的是一个“群组”之意!改完请储存后离开
2.限制使用——只能使用部分指令!
[root@study ~]# visudo <==注意是 root 身份
myuser1 ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
在设置值中加上惊叹号“ ! ”代表“不可执行”的意思。因此上面这一行会变成:可以执行“passwd 任意字符”,但是“ passwd ”与“ passwd root ”这两个指令例外! 如此一来 myuser1 就无法改变 root 的密码了!这样这位使用者可以具有 root 的能力帮助你修改其他用户的密码,而且也不能随意改变 root 的密码!很有用处的!
并且,可以通过别名批量处理:
[root@study ~]# visudo <==注意是 root 身份
User_Alias ADMPW = pro1, pro2, pro3, myuser1, myuser2
Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
ADMPW ALL=(root) ADMPWCOM #注意需要大写!
二、使用者讯息传递
1.查询使用者——w,who,last,lastlog
w命令用于显示已经登陆系统的用户列表
来自: http://man.linuxde.net/w
who命令是显示目前登录系统的用户信息。
来自: http://man.linuxde.net/who
last命令用于显示用户最近登录信息。
来自: http://man.linuxde.net/last
lastlog命令用于显示系统中所有用户最近一次登录信息。
来自: http://man.linuxde.net/lastlog
更多命令使用详细,参考相关手册
2.使用者对谈——write,mesg,wall
[root@study ~]# write 使用者帐号 [使用者所在终端接口]
[root@study ~]# who
vbird1 tty3 -- : <==有看到 vbird1 在线上
root tty4 -- :
[root@study ~]# write vbird1 pts/
Hello, there:
Please don't do anything wrong... <==这两行是 root 写的信息!
# 结束时,请按下 [crtl]-d 来结束输入。此时在 vbird1 的画面中,会出现:
Message from root@study.centos.vbird on tty4 at : ...
Hello, there:
Please don't do anything wrong...
EOF
3.邮件使用——mail
待补充
Linux入门进阶第五天——用户管理(帐号管理 )下的更多相关文章
- Linux入门进阶第五天——用户管理(帐号管理 )上
一.帐号与群组 关于使用者帐号: 用户的ID与帐号信息所在位置是 /etc/passwd,而管理密码的数据则是在 /etc/shadow 每个登陆的使用者至少都会取得两个 ID , 一个是使用者 ID ...
- Linux入门进阶第六天——登录文件、开机与模块管理
一.登录文件概述 1.什么是登录文件 简单的说,就是记录系统活动信息的几个文件, 例如:何时.何地(来源 IP).何人 (什么服务名称).做了什么动作 (讯息登录啰). 换句话说就是:记录系统在什么时 ...
- Linux学习笔记---用户管理---帐号管理
root管理 (1)新增用户:useradd -u 指定UID -g 指定GID -G 作为组员添加到某个组 -M 不创建主用户目录 -m 创建主用户目录 -c 用户信息说明列 -d 指定某个目录为主 ...
- 鸟哥的linux私房菜——第十三章学习(Linux 帐号管理与 ACLL 权限设置)
第十三章.Linux 帐号管理与 ACLL 权限设置 1.0).使用者识别码: UID 与 GID UID :User ID GID :group ID [root@study ~]# ll -d / ...
- Linux内核设计第五周——扒开系统调用三层皮(下)
Linux内核设计第五周 ——扒开系统调用三层皮(下) 一.知识点总结 1.给MenuOS增加新的命令的步骤 更新menu代码到最新版 test.c中main函数里,增加MenuConfig() 增加 ...
- GitHub学习心得之 安装配置与多帐号管理
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 GitHub学习心得之 安装配置与多帐号管理 1.前言2.GitHub Linux安装(ub ...
- 【Git笔记】怎样在同主机同账户下实现多个gitlab帐号管理各自的remote repo
我们可能会遇到以下的场景: 1)多人共用同一台Linux开发机,该开发机仅仅有一个共用的work帐号,非常多人都用这个帐号登录主机进行日常开发. 2)该work帐号下统一安装了gitclient供多人 ...
- Linux入门进阶第四天(下)——程序管理(补充内容)
1.PID 触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的使用者与相关属性关系,给予这个 PID 一组有效的权限设置. 同一个程序 ...
- linux用户帐号管理/etcpasswd 和/etc/shadow文件
#学习鸟哥的linux私房菜 /etc/passwd的文件构造: dahu@dahu-OptiPlex-:~/myfile/VideoFile$ head /etc/passwd root:x:::r ...
随机推荐
- Tomcat的HTTPS配置及HTTP自动跳转配置
1.生成证书 (1)在jdk的安装目录\bin\keytool.exe下打开keytool.exe 在命令行中输入以下命令: keytool -genkeypair -alias 以上命令将生产一对非 ...
- strerror的坑
最近写的一段代码,总是出core,精简了一下,稳定复现. #include <stdio.h> #include <errno.h> int main() { printf(& ...
- python操作mysql二
游标 游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制,游标充当指针的作用,尽管游标能遍历结果中的所有行,但它一次只指向一行,游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行 ...
- 【[ZJOI2012]灾难】
好像很久之前就看过这道题,大概是刚学\(LCA\)的时候 之后当时肯定是不会的呀 现在发现这道题并不是非常难 首先我们发现这个灭绝的关系非常像一棵树,我们建出这个灭绝树求一个前缀和就可以啦 那么应该怎 ...
- [HNOI2003]多边形
嘟嘟嘟 也是一道半平面相交板子题. 比较好的处理方法是先把原图形全部加入答案,然后在一条边一条边切. 然而第一个点全网(当然包括我)都没过,我最后也只能固输了-- #include<cstdio ...
- 新闻cms管理系统(三) ------菜单管理
1.前期准备工作 (1)模板介绍 添加菜单的模板页面 菜单管理首页: 添加菜单页面: (2)公共类引入介绍 公共函数文件的引入(位置: Application/Admin/Controller/Com ...
- [LuoguP1064][Noip2006]金明的预算方案
金明的预算方案(Link) 题目描述 现在有\(M\)个物品,每一个物品有一个钱数和重要度,并且有一个\(Q\),如果\(Q = 0\),那么该物件可以单独购买,当\(Q != 0\)时,表示若要购买 ...
- 图形剖析,当给 ul 设置padding=0, margin=0后 li前面的小黑点消失的现象原理!
- java SSM 框架 多数据源 代码生成器 websocket即时通讯 shiro redis 后台框架源码
A 调用摄像头拍照,自定义裁剪编辑头像 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单; 技 ...
- SpringBoot 动态打包
配置pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...