RH033读书笔记(14)-Lab 15 Switching Users and Setting a Umask
Lab 15 Switching Users and Setting a Umask
Goal: Become familiar with the use of several essential commands in user
identification and account switching.
System Setup: A working, installed Red Hat Enterprise Linux system with an unprivileged
user account named student with the password student and an
unprivileged user account named visitor with a password password.
Sequence 1: Switching user accounts
Instructions:
1. Switch to virtual terminal 1 (tty1) by pressing: Ctrl-Alt-F1 and log in as visitor with
the password password.
2. Record the output of the following commands:
id
uid=503(visitor) gid=508(visitor) groups=508(visitor)
pwd
/home/visitor
3. Switch to the user student by running su - student and run the commands again:
id
uid=502(student) gid=507(student) groups=507(student)
pwd
/home/student
4. Run exit to terminate student's login and return to your original visitor login.
5. Switch to the student account again, but this time run su student (without the hyphen).
Run id and pwd again:
id
uid=502(student) gid=507(student) groups=507(student)
pwd
/home/visitor
Why do these results differ from those you recorded in the previous step?
The hyphen option to su initiates a new login shell, which includes changing the CWD to
the new user's home directory and running the user's startup scripts (~/.bash_profile,
etc). When su is run without the hyphen, your UID is changed, but all other details of the
login session, including CWD and environment variables, remain the same.
6. Log out of all the shells that you used during this sequence.
Sequence 2: Using umask to set default permissions on newlycreated files
Instructions:
1. Log in to your workstation as student.
2. View your current umask.
[student@stationX ~]$ umask
0002
3. Create a couple of files and a directory (do not examine the permissions yet).
[student@stationX ~]$ touch world_readable_file1
[student@stationX ~]$ touch world_readable_file2
[student@stationX ~]$ mkdir world_readable_dir1
4. Change your umask to a more paranoid (okay, maybe you prefer the word "secure") setting.Create new files and a directory.
[student@stationX ~]$ umask 027
[student@stationX ~]$ touch restricted_file1
[student@stationX ~]$ touch restricted_file2
[student@stationX ~]$ mkdir restricted_dir1
List the files to see if you are correct:
[student@stationX ~]$ ls -ld world_readable* restricted*
drwxr-x--- 2 student student 4096 Dec 10 15:23 restricted_dir1
-rw-r----- 1 student student 0 Dec 10 15:23 restricted_file1
-rw-r----- 1 student student 0 Dec 10 15:23 restricted_file2
drwxrwxr-x 2 student student 4096 Dec 10 15:22 world_readable_dir1
-rw-rw-r-- 1 student student 0 Dec 10 15:22 world_readable_file1
-rw-rw-r-- 1 student student 0 Dec 10 15:22 world_readable_file2
5. What is the advantage of setting umask over creating files then using the chmod command?
Using umask, you leave no window of vulnerability. In fact, if you restrict enough your
umask, you can avoid any world-readable file by default.
Sequence 3: Setting a Umask
Instructions:
1. Switch to virtual terminal 1 (tty1) by pressing: Ctrl-Alt-F1
2. Log in as the user visitor with a password of password.
3. Display your current umask:
[visitor@stationX ~]$ umask
4. Below is a table of umasks. Fill in the table with the permissions of files and directories given the umask.
Umask Directory Permissions File Permissions
5. Decide on a reasonable umask for the visitor account and add the appropriate umask command to visitor's .bashrc file. Log out of the visitor account, log in again, and create a file and a directory. View the permissions. Did the directory and file permissions match your expectation? If not, revisit the table in step 4, above, and retry with a new umask.
Sequence 4: Using the Graphical User-Management Tools
Scenario: A new contractor at your office needs an account on one of the Linux systems. The username and initial password should be contractor. The account should also be a member of the web group (without changing the user's primary group!). Finally, the account should automatically expire 7 days from today.
Instructions:
1. Run System->Administration->Users and Groups and enter the root password if prompted
2. Click Add Group and enter web in the Group Name field.
3. Click Ok and return to the main Users and Groups interface
4. Click Add User, enter contractor as the username and password in the appropriate fields. Leave all other fields at their default values
5. Click Ok to return to the main Users and Groups interface
6. Select the contractor user and click Properties
7. Go to the Account Info tab and check Enable Account Expiration. Calculate the date one week from now and enter it into the Account Expires fields.
8. Go to the Groups tab, scroll to the web group and check the checkbox next to it.
9. Click Ok to return to the main Users and Groups interface.
10. Close the Users and Groups window.
Challenge Sequence 5: Automating User Creation
Scenario: You have been asked to create a large number of user accounts. Since performing repetitive tasks by hand is for chumps, you have decided to write a shell script that uses a for loop on a list of users to create the accounts, generate a random password (different for each user) and send an email notifying users of their account information.
Instructions:
1. First of all, create a file called ~/userlist, which contains the usernames you are about to create. For example, your file might look like this:
sara
harry
marion
tyrone
tappy
2. Devise a command that could be used to create a user whose name is provided by a shell variable called $NAME
/usr/sbin/useradd $NAME
3. Devise a command that generates a 10 byte long, base64-encoded, random value and a command line that stores its output in a variable called PASSWORD
HINT: This will require a command you have not seen before. Start by looking at openssl rand --help
PASSWORD=$(openssl rand -base64 10)
4. Devise a command that non-interactively changes the password of $NAME to $PASSWORD.
HINT: passwd --stdin causes passwd to accept a password on STDIN, meaning you can pass values to it over a pipe.
echo $PASSWORD | passwd --stdin $NAME
5. Devise a command line that uses the mail command to email the values of $NAME and $PASSWORD to root@example.com. The email should have the subject "Account Info".
echo "username: $NAME, password: $PASSWORD" | mail -s "Account Info"
root@example.com
6. Finally, gather all your commands within a for loop that sets the NAME variable to each line of the userlist in turn.
Your finished script should look something like this:
#!/bin/bash
# Script for creating all users defined in
# a file called ~/userlist.
for NAME in $(cat ~/userlist)
do
/usr/sbin/useradd $NAME
PASSWORD=$(openssl rand -base64 10)
echo PASSWORD | passwd --stdin $NAME
echo "username: $NAME, password: $PASSWORD" | mail -s "Account Info" root@example.com
done
Note that there are still several things that could be improved about this script. For example, passwords are being sent in unencrypted emails. Although anything more complex than what we have here would be outside the scope of this course, you are encouraged to experiment with ways to add your own improvements!
7. Test your script (be sure to use sudo or log in as root first!). Try adding -x to your shbang
if you have problems.
RH033读书笔记(14)-Lab 15 Switching Users and Setting a Umask的更多相关文章
- RH033读书笔记(13)-Lab 14 Network Clients
Goal: Practice using a variety of tools to transfer files between your system and a remote system. S ...
- RH033读书笔记(16)-Lab 17 Installation and Administration Tools
Lab 17 Installation and Administration Tools Goal: Become familiar with system configuration tools a ...
- RH033读书笔记(8)-Lab 9 Using vim
Lab 9 Using vim Sequence 1: Navigating with vim 1. Log in as user student 2. [student@stationX ~]$ c ...
- RH033读书笔记(5)-Lab 6 Exploring the Bash Shell
Lab 6 Exploring the Bash Shell Sequence 1: Directory and file organization 1. Log in as user student ...
- RH033读书笔记(2)-Lab 3 Getting Help with Commands
Lab 3 Getting Help with Commands Sequence 1: Using the Help Tools 1. man -f keyword whatis keyword l ...
- RH033读书笔记(4)-Lab 5 File Permissions
Lab 5 File Permissions Sequence 1: Determining File Permissions 1. What is the symbolic representati ...
- RH033读书笔记(3)-Lab 4 Browsing the Filesystem
Lab 4 Browsing the Filesystem Sequence 1: Directory and File Organization 1. Log in as user student ...
- RH033读书笔记(7)-Lab 8 Introduction to String Processing
Lab 8 Introduction to String Processing Sequence 1: Exercises in string processing 1. Other than the ...
- RH033读书笔记(6)-Lab 7 Standard I/O and Pipes
Lab 7 Standard I/O and Pipes 1. [student@stationX ~]$ cat /proc/cpuinfo /proc/meminfo 2. [student@st ...
随机推荐
- 深入理解Tomcat系列之二:源码调试环境搭建(转)
前言 最近对Tomcat的源码比较感兴趣,于是折腾了一番.要调试源码首先需要搭建环境,由于参考了几篇帖子发现都不怎么靠谱,最后还是折腾出来了,然而却花了足足一天的时间去搭建这个环境.发现都不是帖子的问 ...
- 用Java写个ftp传输类实现文件的上传和下载,用ikvmc转成dll
1.Java类: package com.wjy.ftp.transmission; import java.io.File; import java.io.FileOutputStream; imp ...
- Nutch+HBase
Nutch+HBase 当我们为nutch的架构发愁的时候,nutch的开发人员送来了nutchbase.我一些简单的测试表明,在hadoop0.20.1和hbase0.20.2上,稍加修改可以运行起 ...
- TCP closing a connection
client closes socket: clientSocket.close(); step1 :client sends TCP FIN control segment to server st ...
- Linux内核——定时器和时间管理
定时器和时间管理 系统定时器是一种可编程硬件芯片.它能以固定频率产生中断.该中断就是所谓的定时器中断.它所相应的中断处理程序负责更新系统时间,还负责执行须要周期性执行的任务. 系统定时器和时钟中断处理 ...
- 主席树(可持久化线段树) 静态第k大
可持久化数据结构介绍 可持久化数据结构是保存数据结构修改的每一个历史版本,新版本与旧版本相比,修改了某个区域,但是大多数的区域是没有改变的, 所以可以将新版本相对于旧版本未修改的区域指向旧版本的该区域 ...
- 用户手册User Guide的写法
下面的内容仅代表个人观点,是在工作中总结出来的,如果有错误之处,还请指教. 转载请注明来自博客园---”邦邦酱好“: http://www.cnblogs.com/bangbangjiang/p/36 ...
- 让UIView窄斜
让UIView窄斜 by 吴雪莹 [UIView animateWithDuration:0.5 animations:^{ CGAffineTransform t = CGAffineTransfo ...
- VC6 鼠标钩子 最简单样例
Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的.而钩子是Windows系统中非常重要的系统接口,用它能够截获并处理送给其它应用程序的消息,来完毕普通应用程序 ...
- 编译Nginx支持Tcp_warppers
Tcp wrappers : Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性.TCP Wrappers 是一种 ...