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 ...
随机推荐
- ASP.NET Core 添加静态目录访问、使其它目录可被访问
使用app.UseFileServer 在 public void Configure(){}中,修改或添加 app.UseFileServer(new FileServerOptions() { F ...
- MySQL忘记密码处理方法
在windows下: 打开命令行窗口,停止mysql服务: Net stop mysql 在cmd下启动mysql,一般到mysql的安装路径,找到 mysqld-nt.exe 执行:m ...
- 021.9 IO流 流总结
###################################################################################IO流的规律总结:解决的问题,开发 ...
- SVG中的元素属性
SVG attributes by category Animation event attributes onbegin, onend, onload, onrepeat Animation att ...
- 使用zepto实现QQ消息左滑删除效果
有这样一个需求: 1. 有一个列表,将每一个列表项左滑动出现删除按钮: 2. 右滑动隐藏删除按钮: 3. 点击这个删除按钮删除该列表项. 完成以后的效果: 这是微信网页端的页面,使用的是 zepto ...
- BZOJ2208:[JSOI2010]连通数(DFS)
Description Input 输入数据第一行是图顶点的数量,一个正整数N. 接下来N行,每行N个字符.第i行第j列的1表示顶点i到j有边,0则表示无边. Output 输出一行一个整数,表示该图 ...
- 2、Android-UI(关于Nine-Patch图片)
实例: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...
- 深入学习c++--重新审视auto
1. auto推断变量类型 2. auto遍历 3. 自定义类可使用auto
- Maven Jetty插件使用
本机环境 JDK8 Maven 3.5 Jetty 9.3 Eclipse Mars pom.xml配置 在你的 pom.xml 文件中添加 jetty 插件的描述信息 <build> & ...
- ASP.NET如何批量保存动态生成的文本框?
对于OA系统,表单签核功能必不可少.而根据公司的情况,表单自然又五花八门,所以就要求能够让用户自己建立表单并设定表单的流程.填写内容等等.我之前写过一篇文章[地址:pivot的用法(SQL SERVE ...