linux可以實現(xiàn)多用戶登陸的操作系統(tǒng),共享一些主機的資源、分別有自己的用戶空間,用于存放各自的文件。但實際上他們的文件都是放在同一個物理磁盤上的甚至同一個邏輯分區(qū)或者目錄里。但由于 Linux 的用戶管理和權(quán)限機制,不同用戶不可以輕易地查看、修改彼此的文件 。
1. 查看當前登陸帳戶
界面操作
使用命令行
whoami
深度系統(tǒng)使用who am i和 who mom likes沒反應,下面是在實驗樓輸出的結(jié)果:
pts/0 中 pts表示偽終端。所謂偽是相對于 /dev/tty 設備而言的。真終端是使用[Ctrl]+[Alt]+[F1]~[F7]進行切換的設備。偽終端就是在圖形用戶界面使用 /dev/tty7 是每打開一個終端就會產(chǎn)生一個偽終端。who am i和whoami的區(qū)別: 如果使用A登陸,再使用su切換到B
- who am i : 顯示B
- whoami : 仍是A
who命令其它參數(shù)
參數(shù)說明-a打印能打印的全部-d打印死掉的進程-m同am i,mom likes-q打印當前登錄用戶數(shù)及用戶名-u打印當前登錄用戶登錄信息-r打印運行等級
2. 創(chuàng)建用戶
界面操作
命令行操作
su <user> 切換用戶到user
sudo <cmd> 以特權(quán)級別運行cmd命令
sudo adduser lilei 新增用戶
ls /home
su -l lilei 切換用戶到 lilei
創(chuàng)建用戶后,在圖形界面也可以看到結(jié)果:
但這個界面看不到root賬戶。
adduser 和 useradd 的區(qū)別是什么?
答:
- useradd 只創(chuàng)建用戶,創(chuàng)建完了用 passwd lilei 去設置新用戶的密碼。
- adduser 會創(chuàng)建用戶,創(chuàng)建目錄,創(chuàng)建密碼(提示你設置),做這一系列的操作。
其實 useradd、userdel 這類操作更像是一種命令,執(zhí)行完了就返回。而 adduser 更像是一種程序,需要你輸入、確定等一系列操作。
3. 修改密碼
可視化操作
命令行操作
修改自己密碼
passwd
修改某用戶密碼
passwd test
4. 查看系統(tǒng)的用戶
可視化操作
深度系統(tǒng)在系統(tǒng)設置、帳戶的地方就可以看到所擁有的用戶。但這里顯示的看起來只有允許正常登陸的用戶,對于nologin或root很多特殊用戶,都沒有顯示:
可以使用命令行查看更多的用戶
cat /etc/passwd
二、用戶組
1. 查看自己是哪個組
在深度系統(tǒng)的界面上沒有找到設置用戶權(quán)限的地方。使用命令行可以看到用戶所屬組:
groups lilei
也可以通過查看 /etc/group文件
cat /etc/group | sort
cat /etc/group | grep -E "xundh"
結(jié)果格式
group_name:password:GID:user_list
2. 給lilei用戶分配組
上面新建的帳戶是不能使用sudo的:
將lilei用戶加入sudo用戶組
su xundh
groups lilei
sudo usermod -G sudo lilei
groups lilei
su lilei
sudo ls
2. 刪除用戶
可視化操作
在深度系統(tǒng)界面可以直接刪除帳戶:
命令行操作:
sudo deluser lilei --remove-home
三、Linux 文件權(quán)限
1. Linux文件權(quán)限說明
Linux里任一個文件都有用戶(User)、所屬群組(Group)和其他人(Others)三種身份的個別權(quán)限。
ls -l
關于權(quán)限的位說明,后面還有除了讀寫執(zhí)行等更詳細的說明。
可視化創(chuàng)建文件并查看屬性
通過命令可以查看其屬性,與可視化界面顯示的一致:
ls -l
2. 變更文件所有者
可視化界面沒有找到相應的操作,下面是命令行操作:
sudo chown lilei 新建文本.txt
ls -l
四、記錄每個用戶的操作
在 /etc/profile 增加腳本:
#set user history
history
USER=`whoami`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
# chown -R ${LOGNAME}:${LOGNAME} /var/log/history/${LOGNAME} # 這里組寫上真實的組名
chmod 770 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
chmod 660 /var/log/history/${LOGNAME}/*history* 2>/dev/null
日志保存位置:/var/log/history/
五、問題處理
1. 新建的普通用戶經(jīng)上面的操作使用不了sudo
先修改 /etc/sudoers
你的用戶名 ALL=(ALL) ALL
1
說明:
sudoers添加下面四行中任意一條
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL
# 第一行:允許用戶youuser執(zhí)行sudo命令(需要輸入密碼).
# 第二行:允許用戶組youuser里面的用戶執(zhí)行sudo命令(需要輸入密碼).
# 第三行:允許用戶youuser執(zhí)行sudo命令,并且在執(zhí)行的時候不輸入密碼.
# 第四行:允許用戶組youuser里面的用戶執(zhí)行sudo命令,并且在執(zhí)行的時候不輸入密碼.
2. 遇到setuid問題的處理
/usr/bin/sudo must be owned by uid 0 and have the setuid bit set [duplicate]處理方式:設置 sudoers權(quán)限sudo的用戶屬組要屬于uid 0,即root用戶;同時sudo要設置setuid位。
ll /usr/bin/sudo
-rwxr-xr-x 1 root root 155008 Aug 28 2015 /usr/bin/sudo
執(zhí)行:
chmod 4755 /usr/bin/sudo
或
chmod u+s /usr/bin/sudo
再執(zhí)行:
ls /usr/bin/sudo
-rwsr-xr-x 1 root root 155008 Aug 28 2015 /usr/bin/sudo
看到有一位x改為s , 再重新登陸用戶。
六、關于權(quán)限的進一步說明
特殊權(quán)限雖然常見的八進制權(quán)限掩碼都是用三位數(shù)表示的,但確切地說,它是用四位數(shù)表示的,因為除了讀、寫和執(zhí)行權(quán)限以外,還有一些其他較少用到的權(quán)限設置,其中就涉及到上面的setgid設置。
setuid其中之一就是setuid位,八進制表示為4000,當把它應用到一個可執(zhí)行文件時,有效用戶ID將從實際用戶ID(實際運行該程序的用戶)設置成該程序所有者的ID,大多數(shù)情況下,該權(quán)限設置通常應用于一些由超級用戶所擁有的程序,例如本問題中的sudo。當普通用戶運行一個具有“setuid root”(已設置setuid位,由root用戶所有)屬性的程序時,該程序?qū)⒁猿売脩舻臋?quán)限執(zhí)行。
setgid第二個是setgid位,八進制表示為2000,類似于setuid,它會把有效用戶組ID從該用戶的實際組ID更改為該文件所有者的組ID。如果對一個目錄設置setgid位,那么在該目錄下創(chuàng)建的文件將由該目錄所在組所有,而不屬于文件創(chuàng)建者所在組。當一個公共組下的成員需要訪問共享目錄下的所有文件時,設置setgid位將會很有用,并不需要關注文件所有者所在的用戶組。
sticky第三個是sticky位,八進制表示位1000,它是從UNIX中繼承下來的,在LINUX中將會忽略文件的sticky位。但是對一個目錄設置sticky位,那么將能阻止用戶刪除或者重命名文件,除非用戶是這個目錄的所有者、文件所有者或者超級用戶。它通常用來控制對共享目錄(例如/tmp)的訪問。
設置方法
授予setuid權(quán)限
chmod u+s prog1
or
chmod 4xxx prog1
具有setuid屬性的程序為-rwsr-xr-x。
授予setgid權(quán)限
chmod g+s dir1
or
chmod 2xxx dir1
具有setgid屬性的目錄為drwxrwsr-x。
授予sticky權(quán)限
chmod t dir1
or
chmod 1xxx dir1
具有sticky屬性的目錄為drwxrwxrwt。