{"action":"created","comment":{"url":"https://api.github.com/repos/habitat-sh/habitat/pulls/comments/171620032","pull_request_review_id":100505345,"id":171620032,"diff_hunk":"@@ -12,19 +12,20 @@\n // See the License for the specific language governing permissions and\n // limitations under the License.\n \n-use hcore::package::PackageInstall;\n+use hcore::os::users;\n \n-use error::Result;\n-use util::users::default_user_and_group;\n+use error::{Result, Error};\n \n-/// Always return Ok (for now) on windows since we just run as the current user\n-pub fn assert_pkg_user_and_group(_user: &str, _group: &str) -> Result<()> {\n-    Ok(())\n-}\n+static LOGKEY: &'static str = \"UR\";\n \n-/// For now we are ignoring any configured user and group\n-/// because we do not start the Supervisor on windows under\n-/// alternate credentials\n-pub fn get_user_and_group(_pkg_install: &PackageInstall) -> Result<(String, String)> {\n-    default_user_and_group()\n+/// Windows does not have a concept of \"group\" in a Linux sense\n+/// So we just validate the user\n+pub fn assert_pkg_user_and_group(user: &str, _group: &str) -> Result<()> {\n+    match users::get_uid_by_name(user) {\n+        Some(_) => Ok(()),\n+        None => Err(sup_error!(Error::Permissions(format!(\n+            \"Package requires user {} to exist, but it doesn't\",\n+            user\n+        )))),\n+    }","path":"components/sup/src/sys/windows/users.rs","position":31,"original_position":31,"commit_id":"7468b3a0768ca98f9d852217e6fda214e6a511ef","original_commit_id":"7468b3a0768ca98f9d852217e6fda214e6a511ef","user":{"login":"raskchanky","id":947,"avatar_url":"https://avatars1.githubusercontent.com/u/947?v=4","gravatar_id":"","url":"https://api.github.com/users/raskchanky","html_url":"https://github.com/raskchanky","followers_url":"https://api.github.com/users/raskchanky/followers","following_url":"https://api.github.com/users/raskchanky/following{/other_user}","gists_url":"https://api.github.com/users/raskchanky/gists{/gist_id}","starred_url":"https://api.github.com/users/raskchanky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raskchanky/subscriptions","organizations_url":"https://api.github.com/users/raskchanky/orgs","repos_url":"https://api.github.com/users/raskchanky/repos","events_url":"https://api.github.com/users/raskchanky/events{/privacy}","received_events_url":"https://api.github.com/users/raskchanky/received_events","type":"User","site_admin":false},"body":"Just a personal preference, but I think Matt's code in this case is easier to understand.","created_at":"2018-03-01T16:45:01Z","updated_at":"2018-03-01T16:45:02Z","html_url":"https://github.com/habitat-sh/habitat/pull/4692#discussion_r171620032","pull_request_url":"https://api.github.com/repos/habitat-sh/habitat/pulls/4692","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/comments/171620032"},"html":{"href":"https://github.com/habitat-sh/habitat/pull/4692#discussion_r171620032"},"pull_request":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/4692"}},"in_reply_to_id":171605604},"pull_request":{"url":"https://api.github.com/repos/habitat-sh/habitat/pulls/4692","id":172048595,"html_url":"https://github.com/habitat-sh/habitat/pull/4692","diff_url":"https://github.com/habitat-sh/habitat/pull/4692.diff","patch_url":"https://github.com/habitat-sh/habitat/pull/4692.patch","issue_url":"https://api.github.com/repos/habitat-sh/habitat/issues/4692","number":4692,"state":"closed","locked":false,"title":"allow supervisor to start services as pkg_svc_user","user":{"login":"mwrock","id":655165,"avatar_url":"https://avatars2.githubusercontent.com/u/655165?v=4","gravatar_id":"","url":"https://api.github.com/users/mwrock","html_url":"https://github.com/mwrock","followers_url":"https://api.github.com/users/mwrock/followers","following_url":"https://api.github.com/users/mwrock/following{/other_user}","gists_url":"https://api.github.com/users/mwrock/gists{/gist_id}","starred_url":"https://api.github.com/users/mwrock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mwrock/subscriptions","organizations_url":"https://api.github.com/users/mwrock/orgs","repos_url":"https://api.github.com/users/mwrock/repos","events_url":"https://api.github.com/users/mwrock/events{/privacy}","received_events_url":"https://api.github.com/users/mwrock/received_events","type":"User","site_admin":false},"body":"fixes #4685 \r\n\r\nNote that this mainly moves existing code around. It pulls tyhe unix specific `get_user_and_group` function into `package` which is the only place that calls that function and removes the no-op windows implementation so that windows follows through with the same behavior which is to read the package metadata for the svc_user.\r\n\r\nThis also changes the windows `assert_pkg_user_and_group` implementation which was once a no-op to actually validate the user so that is the user does not exist on the system, a propper error is returned by the supervisor.\r\n\r\nNote that this PR is \"enhanced\" by https://github.com/habitat-sh/core/pull/10 which will not require users to also specify a `pkg_svc_group` in their plans if also specifying a `pkg_svc_user`.\r\n\r\nI have tested this with alternate users, bogus users and non admin users and things are working well.\r\n\r\nSigned-off-by: mwrock <matt@mattwrock.com>","created_at":"2018-02-28T19:26:09Z","updated_at":"2018-03-01T16:45:02Z","closed_at":"2018-02-28T22:54:24Z","merged_at":"2018-02-28T22:54:24Z","merge_commit_sha":"a28c442a252459561bb04390eb3482fe6fe16fb0","assignee":null,"assignees":[],"requested_reviewers":[{"login":"reset","id":54036,"avatar_url":"https://avatars1.githubusercontent.com/u/54036?v=4","gravatar_id":"","url":"https://api.github.com/users/reset","html_url":"https://github.com/reset","followers_url":"https://api.github.com/users/reset/followers","following_url":"https://api.github.com/users/reset/following{/other_user}","gists_url":"https://api.github.com/users/reset/gists{/gist_id}","starred_url":"https://api.github.com/users/reset/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reset/subscriptions","organizations_url":"https://api.github.com/users/reset/orgs","repos_url":"https://api.github.com/users/reset/repos","events_url":"https://api.github.com/users/reset/events{/privacy}","received_events_url":"https://api.github.com/users/reset/received_events","type":"User","site_admin":false},{"login":"christophermaier","id":207178,"avatar_url":"https://avatars2.githubusercontent.com/u/207178?v=4","gravatar_id":"","url":"https://api.github.com/users/christophermaier","html_url":"https://github.com/christophermaier","followers_url":"https://api.github.com/users/christophermaier/followers","following_url":"https://api.github.com/users/christophermaier/following{/other_user}","gists_url":"https://api.github.com/users/christophermaier/gists{/gist_id}","starred_url":"https://api.github.com/users/christophermaier/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/christophermaier/subscriptions","organizations_url":"https://api.github.com/users/christophermaier/orgs","repos_url":"https://api.github.com/users/christophermaier/repos","events_url":"https://api.github.com/users/christophermaier/events{/privacy}","received_events_url":"https://api.github.com/users/christophermaier/received_events","type":"User","site_admin":false},{"login":"fnichol","id":261548,"avatar_url":"https://avatars2.githubusercontent.com/u/261548?v=4","gravatar_id":"","url":"https://api.github.com/users/fnichol","html_url":"https://github.com/fnichol","followers_url":"https://api.github.com/users/fnichol/followers","following_url":"https://api.github.com/users/fnichol/following{/other_user}","gists_url":"https://api.github.com/users/fnichol/gists{/gist_id}","starred_url":"https://api.github.com/users/fnichol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fnichol/subscriptions","organizations_url":"https://api.github.com/users/fnichol/orgs","repos_url":"https://api.github.com/users/fnichol/repos","events_url":"https://api.github.com/users/fnichol/events{/privacy}","received_events_url":"https://api.github.com/users/fnichol/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/habitat-sh/habitat/pulls/4692/commits","review_comments_url":"https://api.github.com/repos/habitat-sh/habitat/pulls/4692/comments","review_comment_url":"https://api.github.com/repos/habitat-sh/habitat/pulls/comments{/number}","comments_url":"https://api.github.com/repos/habitat-sh/habitat/issues/4692/comments","statuses_url":"https://api.github.com/repos/habitat-sh/habitat/statuses/7468b3a0768ca98f9d852217e6fda214e6a511ef","head":{"label":"habitat-sh:win_svc_user","ref":"win_svc_user","sha":"7468b3a0768ca98f9d852217e6fda214e6a511ef","user":{"login":"habitat-sh","id":18171698,"avatar_url":"https://avatars0.githubusercontent.com/u/18171698?v=4","gravatar_id":"","url":"https://api.github.com/users/habitat-sh","html_url":"https://github.com/habitat-sh","followers_url":"https://api.github.com/users/habitat-sh/followers","following_url":"https://api.github.com/users/habitat-sh/following{/other_user}","gists_url":"https://api.github.com/users/habitat-sh/gists{/gist_id}","starred_url":"https://api.github.com/users/habitat-sh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/habitat-sh/subscriptions","organizations_url":"https://api.github.com/users/habitat-sh/orgs","repos_url":"https://api.github.com/users/habitat-sh/repos","events_url":"https://api.github.com/users/habitat-sh/events{/privacy}","received_events_url":"https://api.github.com/users/habitat-sh/received_events","type":"Organization","site_admin":false},"repo":{"id":36098429,"name":"habitat","full_name":"habitat-sh/habitat","owner":{"login":"habitat-sh","id":18171698,"avatar_url":"https://avatars0.githubusercontent.com/u/18171698?v=4","gravatar_id":"","url":"https://api.github.com/users/habitat-sh","html_url":"https://github.com/habitat-sh","followers_url":"https://api.github.com/users/habitat-sh/followers","following_url":"https://api.github.com/users/habitat-sh/following{/other_user}","gists_url":"https://api.github.com/users/habitat-sh/gists{/gist_id}","starred_url":"https://api.github.com/users/habitat-sh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/habitat-sh/subscriptions","organizations_url":"https://api.github.com/users/habitat-sh/orgs","repos_url":"https://api.github.com/users/habitat-sh/repos","events_url":"https://api.github.com/users/habitat-sh/events{/privacy}","received_events_url":"https://api.github.com/users/habitat-sh/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/habitat-sh/habitat","description":"Modern applications with built-in automation","fork":false,"url":"https://api.github.com/repos/habitat-sh/habitat","forks_url":"https://api.github.com/repos/habitat-sh/habitat/forks","keys_url":"https://api.github.com/repos/habitat-sh/habitat/keys{/key_id}","collaborators_url":"https://api.github.com/repos/habitat-sh/habitat/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/habitat-sh/habitat/teams","hooks_url":"https://api.github.com/repos/habitat-sh/habitat/hooks","issue_events_url":"https://api.github.com/repos/habitat-sh/habitat/issues/events{/number}","events_url":"https://api.github.com/repos/habitat-sh/habitat/events","assignees_url":"https://api.github.com/repos/habitat-sh/habitat/assignees{/user}","branches_url":"https://api.github.com/repos/habitat-sh/habitat/branches{/branch}","tags_url":"https://api.github.com/repos/habitat-sh/habitat/tags","blobs_url":"https://api.github.com/repos/habitat-sh/habitat/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/habitat-sh/habitat/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/habitat-sh/habitat/git/refs{/sha}","trees_url":"https://api.github.com/repos/habitat-sh/habitat/git/trees{/sha}","statuses_url":"https://api.github.com/repos/habitat-sh/habitat/statuses/{sha}","languages_url":"https://api.github.com/repos/habitat-sh/habitat/languages","stargazers_url":"https://api.github.com/repos/habitat-sh/habitat/stargazers","contributors_url":"https://api.github.com/repos/habitat-sh/habitat/contributors","subscribers_url":"https://api.github.com/repos/habitat-sh/habitat/subscribers","subscription_url":"https://api.github.com/repos/habitat-sh/habitat/subscription","commits_url":"https://api.github.com/repos/habitat-sh/habitat/commits{/sha}","git_commits_url":"https://api.github.com/repos/habitat-sh/habitat/git/commits{/sha}","comments_url":"https://api.github.com/repos/habitat-sh/habitat/comments{/number}","issue_comment_url":"https://api.github.com/repos/habitat-sh/habitat/issues/comments{/number}","contents_url":"https://api.github.com/repos/habitat-sh/habitat/contents/{+path}","compare_url":"https://api.github.com/repos/habitat-sh/habitat/compare/{base}...{head}","merges_url":"https://api.github.com/repos/habitat-sh/habitat/merges","archive_url":"https://api.github.com/repos/habitat-sh/habitat/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/habitat-sh/habitat/downloads","issues_url":"https://api.github.com/repos/habitat-sh/habitat/issues{/number}","pulls_url":"https://api.github.com/repos/habitat-sh/habitat/pulls{/number}","milestones_url":"https://api.github.com/repos/habitat-sh/habitat/milestones{/number}","notifications_url":"https://api.github.com/repos/habitat-sh/habitat/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/habitat-sh/habitat/labels{/name}","releases_url":"https://api.github.com/repos/habitat-sh/habitat/releases{/id}","deployments_url":"https://api.github.com/repos/habitat-sh/habitat/deployments","created_at":"2015-05-22T22:47:14Z","updated_at":"2018-03-01T04:43:10Z","pushed_at":"2018-03-01T15:42:18Z","git_url":"git://github.com/habitat-sh/habitat.git","ssh_url":"git@github.com:habitat-sh/habitat.git","clone_url":"https://github.com/habitat-sh/habitat.git","svn_url":"https://github.com/habitat-sh/habitat","homepage":"https://www.habitat.sh","size":77100,"stargazers_count":1398,"watchers_count":1398,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":224,"mirror_url":null,"archived":false,"open_issues_count":306,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":224,"open_issues":306,"watchers":1398,"default_branch":"master"}},"base":{"label":"habitat-sh:master","ref":"master","sha":"fd58c9bace706ebd5e93d65950fa9b663434d13e","user":{"login":"habitat-sh","id":18171698,"avatar_url":"https://avatars0.githubusercontent.com/u/18171698?v=4","gravatar_id":"","url":"https://api.github.com/users/habitat-sh","html_url":"https://github.com/habitat-sh","followers_url":"https://api.github.com/users/habitat-sh/followers","following_url":"https://api.github.com/users/habitat-sh/following{/other_user}","gists_url":"https://api.github.com/users/habitat-sh/gists{/gist_id}","starred_url":"https://api.github.com/users/habitat-sh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/habitat-sh/subscriptions","organizations_url":"https://api.github.com/users/habitat-sh/orgs","repos_url":"https://api.github.com/users/habitat-sh/repos","events_url":"https://api.github.com/users/habitat-sh/events{/privacy}","received_events_url":"https://api.github.com/users/habitat-sh/received_events","type":"Organization","site_admin":false},"repo":{"id":36098429,"name":"habitat","full_name":"habitat-sh/habitat","owner":{"login":"habitat-sh","id":18171698,"avatar_url":"https://avatars0.githubusercontent.com/u/18171698?v=4","gravatar_id":"","url":"https://api.github.com/users/habitat-sh","html_url":"https://github.com/habitat-sh","followers_url":"https://api.github.com/users/habitat-sh/followers","following_url":"https://api.github.com/users/habitat-sh/following{/other_user}","gists_url":"https://api.github.com/users/habitat-sh/gists{/gist_id}","starred_url":"https://api.github.com/users/habitat-sh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/habitat-sh/subscriptions","organizations_url":"https://api.github.com/users/habitat-sh/orgs","repos_url":"https://api.github.com/users/habitat-sh/repos","events_url":"https://api.github.com/users/habitat-sh/events{/privacy}","received_events_url":"https://api.github.com/users/habitat-sh/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/habitat-sh/habitat","description":"Modern applications with built-in automation","fork":false,"url":"https://api.github.com/repos/habitat-sh/habitat","forks_url":"https://api.github.com/repos/habitat-sh/habitat/forks","keys_url":"https://api.github.com/repos/habitat-sh/habitat/keys{/key_id}","collaborators_url":"https://api.github.com/repos/habitat-sh/habitat/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/habitat-sh/habitat/teams","hooks_url":"https://api.github.com/repos/habitat-sh/habitat/hooks","issue_events_url":"https://api.github.com/repos/habitat-sh/habitat/issues/events{/number}","events_url":"https://api.github.com/repos/habitat-sh/habitat/events","assignees_url":"https://api.github.com/repos/habitat-sh/habitat/assignees{/user}","branches_url":"https://api.github.com/repos/habitat-sh/habitat/branches{/branch}","tags_url":"https://api.github.com/repos/habitat-sh/habitat/tags","blobs_url":"https://api.github.com/repos/habitat-sh/habitat/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/habitat-sh/habitat/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/habitat-sh/habitat/git/refs{/sha}","trees_url":"https://api.github.com/repos/habitat-sh/habitat/git/trees{/sha}","statuses_url":"https://api.github.com/repos/habitat-sh/habitat/statuses/{sha}","languages_url":"https://api.github.com/repos/habitat-sh/habitat/languages","stargazers_url":"https://api.github.com/repos/habitat-sh/habitat/stargazers","contributors_url":"https://api.github.com/repos/habitat-sh/habitat/contributors","subscribers_url":"https://api.github.com/repos/habitat-sh/habitat/subscribers","subscription_url":"https://api.github.com/repos/habitat-sh/habitat/subscription","commits_url":"https://api.github.com/repos/habitat-sh/habitat/commits{/sha}","git_commits_url":"https://api.github.com/repos/habitat-sh/habitat/git/commits{/sha}","comments_url":"https://api.github.com/repos/habitat-sh/habitat/comments{/number}","issue_comment_url":"https://api.github.com/repos/habitat-sh/habitat/issues/comments{/number}","contents_url":"https://api.github.com/repos/habitat-sh/habitat/contents/{+path}","compare_url":"https://api.github.com/repos/habitat-sh/habitat/compare/{base}...{head}","merges_url":"https://api.github.com/repos/habitat-sh/habitat/merges","archive_url":"https://api.github.com/repos/habitat-sh/habitat/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/habitat-sh/habitat/downloads","issues_url":"https://api.github.com/repos/habitat-sh/habitat/issues{/number}","pulls_url":"https://api.github.com/repos/habitat-sh/habitat/pulls{/number}","milestones_url":"https://api.github.com/repos/habitat-sh/habitat/milestones{/number}","notifications_url":"https://api.github.com/repos/habitat-sh/habitat/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/habitat-sh/habitat/labels{/name}","releases_url":"https://api.github.com/repos/habitat-sh/habitat/releases{/id}","deployments_url":"https://api.github.com/repos/habitat-sh/habitat/deployments","created_at":"2015-05-22T22:47:14Z","updated_at":"2018-03-01T04:43:10Z","pushed_at":"2018-03-01T15:42:18Z","git_url":"git://github.com/habitat-sh/habitat.git","ssh_url":"git@github.com:habitat-sh/habitat.git","clone_url":"https://github.com/habitat-sh/habitat.git","svn_url":"https://github.com/habitat-sh/habitat","homepage":"https://www.habitat.sh","size":77100,"stargazers_count":1398,"watchers_count":1398,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":224,"mirror_url":null,"archived":false,"open_issues_count":306,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":224,"open_issues":306,"watchers":1398,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/4692"},"html":{"href":"https://github.com/habitat-sh/habitat/pull/4692"},"issue":{"href":"https://api.github.com/repos/habitat-sh/habitat/issues/4692"},"comments":{"href":"https://api.github.com/repos/habitat-sh/habitat/issues/4692/comments"},"review_comments":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/4692/comments"},"review_comment":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/habitat-sh/habitat/pulls/4692/commits"},"statuses":{"href":"https://api.github.com/repos/habitat-sh/habitat/statuses/7468b3a0768ca98f9d852217e6fda214e6a511ef"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"raskchanky"}}