解决CentOS添加用户与用户不在sudo列表

Centos中用户添加与用户管理

  
  作为linux多用户多任务操作系统,有时候需要添加一个用户来作为特殊的需求。下面就讲述一下如何在centos中添加一个用户。在添加用户之前需要讲述的是,在linux中分为用户账户与组账户(一组用户的集合)。一个用户可以属于多个组账户。这是组账户是为了方便一组相同性质的用户的权限管理。
  1:linux中与用户相关的配置文件有/etc/passwd, /etc/shadow,/etc/group,和/etc/gshadow等四个文件。对于用户添加修改和群组的添加修改与归属群组的添加修改就有如下几种命令:
useradd 选项 用户名//添加新用户
usermod 选项 用户名//修改已经存在的用户
userdel -r 用户名//删除用户表示自家目录一起删除。
groupadd 选项 组名// 添加新组
groupmod 选项 组名//修改已经存在的组
groupdel 组名 //删除已经存在的特定组。
  2:添加用户
useradd user1 //添加一个用户user1 
groupadd group1 //新建一个group1 组
useradd -g group1 user1//表示创建一个新用户user1,同时加入group1组中。
usermod -G group1 user1//表示将用户user1加入group1组中。
userdel user1//表示删除user1用户
groupdel group1//表示删除group1组。
对于密码管理等可以查看底层附录的鸟哥的讲解

Centos修改用户不在sudu列表


解决CentOS用户不在sudo列表是因为设置问题,因为系统会把有权执行sudu到用户存放在一个叫/etc/sudoers地方。默认你不在该列表中,所以无权执行sudu指令。你可以通过编辑那个文件把你的用户名添加进去,就可以解决问题。编辑该文件可以使用vi/vim命令,但是一般建议使用visudo指令,这个指令会自动检测你编辑之后的文件是否有语法错误,防止你编辑之后sudo无法使用。

下面是转载自鸟哥上面到操作教程:

visudo  /etc/sudoers
除了 root 之外的其他帳號,若想要使用 sudo執行屬於 root 的權限指令,則 root 需要先使用 visudo 去修改 /etc/sudoers ,讓該帳號能夠使用全部或部分的root 指令功能。為什麼要使用 visudo 呢?這是因為 /etc/sudoers 是有設定語法的,如果設定錯誤那會造成無法使用 sudo 指令的不良後果。因此才會使用 visudo 去修改,並在結束離開修改畫面時,系統會去檢驗 /etc/sudoers 的語法就是了。
一般來說,visudo 的設定方式有幾種簡單的方法喔,底下我們以幾個簡單的例子來分別說明:

1:單一使用者可進行 root 所有指令,與 sudoers 檔案語法:

  1. 假如我們要讓 vbird1 這個帳號可以使用 root 的任何指令,那麼可以簡單的這樣進行修改即可:

    [root@www ~]# visudo

    ....(前面省略)....
    root ALL=(ALL) ALL <==找到這一行,大約在 76 行左右
    vbird1 ALL=(ALL) ALL <==這一行是你要新增的!
    ....(前面省略)....
    有趣吧!其實 visudo 只是利用 vi 將 /etc/sudoers 檔案呼叫出來進行修改而已,所以這個檔案就是 /etc/sudoers 啦!這個檔案的設定其實很簡單,如上面所示,如果你找到 76 行 (有 root 設定的那行) 左右,看到的資料就是:
    使用者帳號 登入者的來源主機名稱=(可切換的身份) 可下達的指令
    root ALL=(ALL) ALL <==這是預設值
    上面這一行的四個元件意義是:

    系統的哪個帳號可以使用 sudo 這個指令的意思,預設為 root 這個帳號;
    當這個帳號由哪部主機連線到本 Linux 主機,意思是這個帳號可能是由哪一部網路主機連線過來的,這個設定值可以指定用戶端電腦(信任用戶的意思)。預設值 root 可來自任何一部網路主機
    這個帳號可以切換成什麼身份來下達後續的指令,預設 root 可以切換成任何人;
    可用該身份下達什麼指令?這個指令請務必使用絕對路徑撰寫。預設 root 可以切換任何身份且進行任何指令之意。

    那個 ALL 是特殊的關鍵字,代表任何身份、主機或指令的意思。所以,我想讓 vbird1 可以進行任何身份的任何指令,就如同上表特殊字體寫的那樣,其實就是複製上述預設值那一行,再將 root 改成 vbird1 即可啊!此時『vbird1 不論來自哪部主機登入,他可以變換身份成為任何人,且可以進行系統上面的任何指令』之意。修改完請儲存後離開 vi,並以 vbird1 登入系統後,進行如下的測試看看:
    [vbird1@www ~]$ tail -n 1 /etc/shadow <==注意!身份是 vbird1
    tail: cannot open `/etc/shadow' for reading: Permission denied
    # 因為不是 root 嘛!所以當然不能查詢 /etc/shadow

    [vbird1@www ~]$ sudo tail -n 1 /etc/shadow <==透過 sudo

    We trust you have received the usual lecture from the local System
    Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others. <==這裡僅是一些說明與警示項目
    #2) Think before you type.
    #3) With great power comes great responsibility.

    Password: <==注意啊!這裡輸入的是『 vbird1 自己的密碼 』
    pro3:$1$GfinyJgZ$9J8IdrBXXMwZIauANg7tW0:14302:0:99999:7:::
    # 看!vbird1 竟然可以查詢 shadow !

  1. 注意到了吧!vbird1 輸入自己的密碼就能夠執行 root 的指令!所以,系統管理員當然要瞭解 vbird1 這個用戶的『操守』才行!否則隨便設定一個使用者,他惡搞系統怎辦?另外,一個一個設定太麻煩了,能不能使用群組的方式來設定呢?參考底下的方式吧。 
2:利用群組以及免密碼的功能處理 visudo
  1. 我們在本章前面曾經建立過 pro1, pro2, pro3 ,這三個用戶能否透過群組的功能讓這三個人可以管理系統?可以的,而且很簡單!同樣我們使用實際案例來說明:

  1. [root@www ~]# visudo <==同樣的,請使用 root 先設定
    ....(前面省略)....
    %wheel ALL=(ALL) ALL <==大約在 84 行左右,請將這行的 # 拿掉!
    # 在最左邊加上 % ,代表後面接的是一個『群組』之意!改完請儲存後離開

    [root@www ~]# usermod -a -G wheel pro1 <==將 pro1 加入 wheel 的支援
    上面的設定值會造成『任何加入 wheel 這個群組的使用者,就能夠使用 sudo 切換任何身份來操作任何指令』的意思。你當然可以將 wheel 換成你自己想要的群組名。接下來,請分別切換身份成為 pro1 及 pro2 試看看 sudo 的運作。
    [pro1@www ~]$ sudo tail -n 1 /etc/shadow <==注意身份是 pro1
    ....(前面省略)....
    Password: <==輸入 pro1 的密碼喔!
    pro3:$1$GfinyJgZ$9J8IdrBXXMwZIauANg7tW0:14302:0:99999:7:::

    [pro2@www ~]$ sudo tail -n 1 /etc/shadow <==注意身份是 pro2
    Password:
    pro2 is not in the sudoers file. This incident will be reported.
    # 仔細看錯誤訊息他是說這個 pro2 不在 /etc/sudoers 的設定中!
    這樣理解群組了吧?如果你想要讓 pro3 也支援這個 sudo 的話,不需要重新使用 visudo ,只要利用 usermod 去修改 pro3 的群組支援,讓 wheel 也支援 pro3 的話,那他就能夠進行 sudo 囉!簡單吧!不過,既然我們都信任這些 sudo 的用戶了,能否提供『不需要密碼即可使用 sudo 』呢?就透過如下的方式:
    [root@www ~]# visudo <==同樣的,請使用 root 先設定
    ....(前面省略)....
    %wheel ALL=(ALL) NOPASSWD: ALL <==大約在 87 行左右,請將 # 拿掉!
    # 在最左邊加上 % ,代表後面接的是一個『群組』之意!改完請儲存後離開
  1. 重點是那個 NOPASSWD 啦!該關鍵字是免除密碼輸入的意思喔!
3:有限制的指令操作:
  1. 上面兩點都會讓使用者能夠利用 root 的身份進行任何事情!這樣總是不太好~如果我想要讓使用者僅能夠進行部分系統任務,比方說,系統上面的 myuser1 僅能夠幫 root 修改其他使用者的密碼時,亦即『當使用者僅能使用 passwd 這個指令幫忙 root 修改其他用戶的密碼』時,你該如何撰寫呢?可以這樣做:
    [root@www ~]# visudo <==注意是 root 身份
    myuser1 ALL=(root) /usr/bin/passwd <==最後指令務必用絕對路徑
    上面的設定值指的是『myuser1 可以切換成為 root 使用 passwd 這個指令』的意思。其中要注意的是:指令欄位必須要填寫絕對路徑才行!否則 visudo 會出現語法錯誤的狀況發生!此外,上面的設定是有問題的!我們使用底下的指令操作來讓您瞭解:
    [myuser1@www ~]$ sudo passwd myuser3 <==注意,身份是 myuser1
    Password: <==輸入 myuser1 的密碼
    Changing password for user myuser3. <==底下改的是 myuser3 的密碼喔!這樣是正確的
    New UNIX password:
    Retype new UNIX password:
    passwd: all authentication tokens updated successfully.

    [myuser1@www ~]$ sudo passwd
    Changing password for user root. <==見鬼!怎麼會去改 root 的密碼?
    恐怖啊!我們竟然讓 root 的密碼被 myuser3 給改變了!下次 root 回來竟無法登入系統...欲哭無淚~怎辦?所以我們必須要限制使用者的指令參數!修改的方法為將上述的那行改一改先:
    [root@www ~]# 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 的密碼!很有用處的!
4:透過別名建置 visudo:
  1. 如上述第三點,如果我有 15 個用戶需要加入剛剛的管理員行列,那麼我是否要將上述那長長的設定寫入 15 行啊?而且如果想要修改命令或者是新增命令時,那我每行都需要重新設定,很麻煩ㄟ!有沒有更簡單的方式?是有的!透過別名即可!我們 visudo 的別名可以是『指令別名、帳號別名、主機別名』等。不過這裡我們僅介紹帳號別名,其他的設定值有興趣的話,可以自行玩玩!

    假設我的 pro1, pro2, pro3 與 myuser1, myuser2 要加入上述的密碼管理員的 sudo 列表中,那我可以創立一個帳號別名稱為 ADMPW 的名稱,然後將這個名稱處理一下即可。處理的方式如下:
    [root@www ~]# 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
    我透過 User_Alias 建立出一個新帳號,這個帳號名稱一定要使用大寫字元來處理,包括 Cmnd_Alias(命令別名)、Host_Alias(來源主機名稱別名) 都需要使用大寫字元的!這個 ADMPW 代表後面接的那些實際帳號。而該帳號能夠進行的指令就如同 ADMPWCOM 後面所指定的那樣!上表最後一行則寫入這兩個別名 (帳號與指令別名),未來要修改時,我只要修改 User_Alias 以及 Cmnd_Alias 這兩行即可!設定方面會比較簡單有彈性喔!
5:sudo 的時間間隔問題:
  1. 或許您已經發現了,那就是,如果我使用同一個帳號在短時間內重複操作 sudo 來運作指令的話,在第二次執行 sudo 時,並不需要輸入自己的密碼!sudo 還是會正確的運作喔!為什麼呢?第一次執行 sudo 需要輸入密碼,是擔心由於使用者暫時離開座位,但有人跑來你的座位使用你的帳號操作系統之故。所以需要你輸入一次密碼重新確認一次身份。

    兩次執行 sudo 的間隔在五分鐘內,那麼再次執行 sudo 時就不需要再次輸入密碼了,這是因為系統相信你在五分鐘內不會離開你的作業,所以執行 sudo 的是同一個人!呼呼!真是很人性化的設計啊~ ^_^。不過如果兩次 sudo 操作的間隔超過 5 分鐘,那就得要重新輸入一次你的密碼了(註4)

    另外要注意的是,因為使用一般帳號時,理論上不會使用到 /sbin, /usr/sbin 等目錄內的指令,所以 $PATH 變數不會含有這些目錄,因此很多管理指令需要使用絕對路徑來下達比較妥當喔!
6:sudo 搭配 su 的使用方式:
  1. 很多時候我們需要大量執行很多 root 的工作,所以一直使用 sudo 覺得很煩!那有沒有辦法使用 sudo 搭配 su ,一口氣將身份轉為 root ,而且還用使用者自己的密碼來變成 root 呢?是有的!而且方法簡單的會讓你想笑!我們建立一個 ADMINS 帳號別名,然後這樣做:
    [root@www ~]# visudo
    User_Alias ADMINS = pro1, pro2, pro3, myuser1
    ADMINS ALL=(root) /bin/su -

  1. 接下來,上述的 pro1, pro2, pro3, myuser1 這四個人,只要輸入『 sudo su - 』並且輸入『自己的密碼』後,立刻變成 root 的身份!不但 root 密碼不會外流,使用者的管理也變的非常方便!這也是實務上面多人共管一部主機時常常使用的技巧呢!這樣管理確實方便,不過還是要強調一下大前提,那就是『這些你加入的使用者,全部都是你能夠信任的用戶』!

附录:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值